HTLC 詳解
學習 Hash Time-Locked Contract 如何實現跨通道的原子化支付。
什麼是 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 的支付:
步驟詳解
Carol 創建發票
生成隨機 preimage R,計算 hash H = hash(R)
R = "secret123..." → H = "abc123..."
Alice 創建 HTLC 給 Bob
條件:Bob 提供 preimage for H,timeout = T+2
Bob 創建 HTLC 給 Carol
條件:Carol 提供 preimage for H,timeout = T+1
注意:Bob 的 timeout 比 Alice 給的短
Carol 揭示 preimage
Carol 提供 R 給 Bob,領取 HTLC
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 超時前必須解決,否則可能損失資金
- ✓ 使用瞭望塔服務確保離線時的安全
- △ 大額支付可能面臨流動性限制
延伸閱讀: 了解 路由與尋路, 學習閃電網路如何找到最佳支付路徑。