跳至主要內容
Standards Track Final

BIP-112: 相對時間鎖操作碼

在腳本中驗證相對時間鎖,是閃電網路撤銷機制的核心組件。

BtcDrak, Mark Friedenbach, Eric Lombrozo 2015年8月10日
BIP 編號

112

類型

Standards Track

狀態

Final

創建日期

2015-08-10

摘要

OP_CHECKSEQUENCEVERIFY (CSV) 是一個操作碼,允許腳本驗證輸入的 nSequence 值符合相對時間鎖要求。 它與 BIP-68 配合使用,使相對時間鎖成為花費條件的強制部分。

與 BIP-68 的關係

BIP-68

定義 nSequence 的語意

共識層面的相對鎖定

BIP-112

腳本層面的驗證

使時間鎖成為花費條件

運作方式

執行邏輯

CSV 重新定義了之前未使用的 OP_NOP3 操作碼:

  1. 從堆疊讀取一個值(不彈出)
  2. 檢查該值的停用位元(位元 31)
  3. 如果未停用,與輸入的 nSequence 比較
  4. 驗證類型(區塊/時間)必須匹配
  5. 驗證 nSequence 值 ≥ 腳本中的值

腳本範例

# 資金必須等待 144 區塊後才能被 Alice 花費

<144> OP_CHECKSEQUENCEVERIFY OP_DROP

<Alice's pubkey> OP_CHECKSIG

閃電網路撤銷機制

閃電網路使用 CSV 來實現懲罰機制:

# 典型的閃電網路承諾交易輸出腳本

OP_IF

# 撤銷路徑 - Bob 可以立即用撤銷密鑰花費

<revocation_pubkey>

OP_ELSE

# 正常路徑 - Alice 等待後可以花費

<144> OP_CHECKSEQUENCEVERIFY OP_DROP

<alice_delayed_pubkey>

OP_ENDIF

OP_CHECKSIG

驗證規則

CSV 驗證失敗的情況:

  • 堆疊為空
  • 堆疊頂部值為負數
  • 類型標誌不匹配(一個是區塊,另一個是時間)
  • nSequence 值小於腳本要求
  • nSequence 的停用位元被設置但腳本值未設置

CLTV vs CSV 對比

特性 CLTV (OP_CLTV) CSV (OP_CSV)
BIP BIP-65 BIP-112
驗證對象 nLockTime nSequence
時間類型 絕對時間 相對時間
應用 到期日、HTLC 懲罰機制、等待期

相關 BIP

  • BIP-65:OP_CHECKLOCKTIMEVERIFY
  • BIP-68:nSequence 相對時間鎖
  • BIP-113:Median Time Past
已複製連結
已複製到剪貼簿