跳至主要內容
進階

時間鎖機制

時間鎖讓你可以鎖定比特幣直到未來某個時間點,是閃電網路和智能合約的核心技術。

15 分鐘

時間鎖概述

比特幣有多種時間鎖機制,讓交易或輸出在特定條件下才能被花費。 這些機制是構建複雜智能合約的基礎。

機制 類型 層級 BIP
nLockTime 絕對 交易 原始
CLTV 絕對 腳本 BIP-65
nSequence 相對 交易 BIP-68
CSV 相對 腳本 BIP-112

絕對時間鎖

nLockTime

nLockTime 是交易欄位,指定交易在特定區塊高度或時間之前不能被包含在區塊中。

  • • 值 < 500,000,000:解釋為區塊高度
  • • 值 ≥ 500,000,000:解釋為 UNIX 時間戳
  • • 可被繞過:收款人可以簽署新交易忽略鎖定

OP_CHECKLOCKTIMEVERIFY (CLTV)

CLTV 是腳本操作碼,在腳本層面強制執行時間鎖。與 nLockTime 不同,它無法被繞過。

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

<800000> OP_CHECKLOCKTIMEVERIFY OP_DROP

<pubkey> OP_CHECKSIG

相對時間鎖

nSequence (BIP-68)

nSequence 欄位被重新定義,可以指定輸入必須等待其父輸出被確認後的一段時間。

區塊計數模式

位元 22 = 0

值 = 區塊數(最大 65535)

時間計數模式

位元 22 = 1

值 × 512 秒

OP_CHECKSEQUENCEVERIFY (CSV)

CSV 在腳本中驗證 nSequence,使相對時間鎖成為強制性的花費條件。

# 輸出確認後等待 144 區塊才能花費

<144> OP_CHECKSEQUENCEVERIFY OP_DROP

<pubkey> OP_CHECKSIG

實際應用

閃電網路

閃電網路大量使用時間鎖:

  • CSV:撤銷機制中的懲罰窗口
  • CLTV:HTLC 的超時退款

HTLC(哈希時間鎖定合約)

HTLC 結合哈希鎖和時間鎖,是原子交換和閃電網路支付的核心。

OP_IF

# 接收者用原像領取

OP_HASH160 <hash> OP_EQUALVERIFY

<receiver_pubkey> OP_CHECKSIG

OP_ELSE

# 超時後發送者可退款

<timeout> OP_CHECKLOCKTIMEVERIFY OP_DROP

<sender_pubkey> OP_CHECKSIG

OP_ENDIF

繼承規劃

使用時間鎖可以創建「死人開關」:

  • • 正常情況:你可以隨時花費
  • • 1 年不活動後:繼承人可以花費
  • • 定期「心跳」交易重置計時器

儲蓄鎖定

鎖定比特幣直到未來日期,防止衝動消費:

# 鎖定到 2030 年

<1893456000> OP_CHECKLOCKTIMEVERIFY OP_DROP

CLTV vs CSV

特性 CLTV CSV
時間類型 絕對(固定點) 相對(等待期)
參考點 區塊高度/時間戳 輸入確認時間
用途 到期日、HTLC 超時 懲罰窗口、冷卻期
閃電網路 退款路徑 撤銷機制

注意事項

  • 區塊時間不精確:比特幣區塊平均 10 分鐘,但可能有較大波動
  • 時間戳使用 MTP:Median Time Past,過去 11 個區塊的中位數時間
  • 鎖定後無法提前:時間鎖是不可逆的
已複製連結
已複製到剪貼簿