跳至主要內容
進階

HTLC 詳解

學習 Hash Time-Locked Contract 如何實現跨通道的原子化支付。

18 分鐘

什麼是 HTLC?

HTLC(Hash Time-Locked Contract)是一種智能合約,結合了哈希鎖和時間鎖:

  • 哈希鎖:接收者必須提供正確的 preimage(原像)才能領取資金
  • 時間鎖:如果超時未領取,發送者可以取回資金

HTLC 邏輯

# 偽代碼

如果 提供 preimage 且 hash(preimage) == payment_hash:

Bob 可以領取

否則 如果 當前時間 > timeout:

Alice 可以取回

HTLC 腳本結構

HTLC 在比特幣腳本中的實現:

# HTLC 腳本(簡化版)
OP_IF
    # 成功路徑:提供正確的 preimage
    OP_HASH256 <payment_hash> OP_EQUALVERIFY
    <receiver_pubkey>
OP_ELSE
    # 超時路徑:時間到了發送者可以取回
    <timeout> OP_CHECKLOCKTIMEVERIFY OP_DROP
    <sender_pubkey>
OP_ENDIF
OP_CHECKSIG

多跳支付流程

HTLC 讓支付可以安全地跨越多個通道。讓我們看一個 Alice → Bob → Carol 的支付:

步驟詳解

1

Carol 創建發票

生成隨機 preimage R,計算 hash H = hash(R)

R = "secret123..." → H = "abc123..."

2

Alice 創建 HTLC 給 Bob

條件:Bob 提供 preimage for H,timeout = T+2

3

Bob 創建 HTLC 給 Carol

條件:Carol 提供 preimage for H,timeout = T+1

注意:Bob 的 timeout 比 Alice 給的短

4

Carol 揭示 preimage

Carol 提供 R 給 Bob,領取 HTLC

5

Bob 轉發 preimage

Bob 現在知道 R,向 Alice 領取 HTLC

時間鎖階梯

為確保安全,HTLC 的 timeout 必須沿路由遞減。這確保中間節點有足夠時間取回資金。

Timeout 階梯示例

Alice

T + 3

Bob

T + 2

Carol

T + 1

Dave

接收者

每一跳減少一個區塊間隔,確保上游節點有時間響應

為什麼需要 timeout 階梯?
如果 Carol 在 timeout 前揭示 preimage 給 Bob,Bob 需要足夠時間向 Alice 揭示 preimage。 如果 Bob 和 Alice 的 timeout 相同,Bob 可能來不及取回資金。

原子性保證

HTLC 確保支付要麼完全成功,要麼完全失敗:

情況 結果
Carol 揭示 preimage 所有節點依次領取 HTLC,支付成功
Carol 不揭示(超時) 所有 HTLC 超時,資金返回發送者
中間節點作弊 不可能:沒有 preimage 無法領取

HTLC 在承諾交易中

HTLC 作為承諾交易的額外輸出存在,直到被解決(成功或超時):

承諾交易結構(有 HTLC 時):
├── 輸出 1: to_local (延遲輸出)
├── 輸出 2: to_remote (立即輸出)
├── 輸出 3: HTLC #1 (等待解決)
├── 輸出 4: HTLC #2 (等待解決)
└── 輸出 5: HTLC #3 (等待解決)

路由費用

中間節點可以收取少量費用來轉發支付。費用結構通常包括:

  • 基本費用 (base_fee):每筆支付的固定費用,例如 1 sat
  • 費率 (fee_rate):按支付金額的比例,例如 0.0001 (0.01%)

# 費用計算

fee = base_fee + (amount × fee_rate)

# 例如:轉發 100,000 sats

fee = 1 + (100000 × 0.0001) = 11 sats

PTLCs:HTLC 的改進

Point Time-Locked Contracts (PTLCs) 是 HTLC 的下一代版本, 使用適配器簽章代替哈希鎖,提供更好的隱私性。

特性 HTLC PTLC
鎖定機制 Hash lock Point lock (Schnorr)
路徑隱私 同一 payment_hash 每跳不同的 point
需要 SegWit Taproot + Schnorr

安全注意事項

  • 節點必須監控鏈上交易,及時響應強制關閉
  • HTLC 超時前必須解決,否則可能損失資金
  • 使用瞭望塔服務確保離線時的安全
  • 大額支付可能面臨流動性限制

延伸閱讀: 了解 路由與尋路, 學習閃電網路如何找到最佳支付路徑。

已複製連結
已複製到剪貼簿