跳至主要內容
Standards Track Final

BIP-65: 絕對時間鎖操作碼

引入絕對時間鎖操作碼,允許資金在特定區塊高度或時間之前被鎖定。

Peter Todd 2014年10月1日
BIP 編號

65

類型

Standards Track

狀態

Final

創建日期

2014-10-01

摘要

OP_CHECKLOCKTIMEVERIFY (CLTV) 是一個新的操作碼,允許在腳本中驗證交易的 nLockTime 欄位。 這使得「絕對時間鎖」成為可能,資金在特定區塊高度或 UNIX 時間戳之前無法被花費。

動機

在 CLTV 之前,nLockTime 只能用於延遲整個交易的廣播時間。但這無法強制執行, 接收者可以簽署一個沒有 nLockTime 的新交易來提前花費資金。CLTV 將時間鎖嵌入到腳本中, 使其成為花費條件的一部分,從而不可繞過。

運作方式

語意

CLTV 重新定義了之前未使用的 OP_NOP2 操作碼。執行時:

  1. 從堆疊頂部讀取一個值(不彈出)
  2. 將該值與交易的 nLockTime 比較
  3. 如果 nLockTime < 堆疊值,腳本失敗
  4. 如果 nSequence = 0xFFFFFFFF,腳本失敗

腳本範例

# 資金在區塊 500000 之後才能被 Alice 花費

<500000> OP_CHECKLOCKTIMEVERIFY OP_DROP

<Alice's pubkey> OP_CHECKSIG

時間格式

CLTV 支援兩種時間格式:

區塊高度

值 < 500,000,000

例:500000 = 區塊 #500000

UNIX 時間戳

值 ≥ 500,000,000

例:1700000000 = 2023-11-14

應用場景

  • 支付通道:閃電網路的退款機制
  • 託管服務:在特定時間後資金自動返還
  • 遺囑合約:如果一段時間內沒有活動,資金轉移給繼承人
  • 原子交換:跨鏈交換的超時退款
  • HTLC:哈希時間鎖定合約

CLTV vs nLockTime

特性 nLockTime CLTV
強制執行 否(可繞過) 是(腳本級別)
位置 交易欄位 腳本內
靈活性 整個交易 單個輸出

相關 BIP

  • BIP-68:相對時間鎖(nSequence)
  • BIP-112:OP_CHECKSEQUENCEVERIFY
  • BIP-113:Median Time Past 用於時間鎖
已複製連結
已複製到剪貼簿