PTLCs 點時間鎖定合約
了解 Point Time-Locked Contracts (PTLCs),這是使用 Schnorr 簽名的 HTLC 替代方案,提供更好的隱私和功能。
什麼是 PTLC?
PTLC(Point Time-Locked Contract,點時間鎖定合約)是 HTLC 的進化版本。 它使用 Schnorr 簽名和適配器簽名(Adaptor Signatures)來實現條件支付, 取代 HTLC 使用的哈希原像揭示機制,提供顯著的隱私和功能改進。
前置知識: 理解 PTLC 需要先了解 HTLC、 Schnorr 簽名 和 橢圓曲線密碼學的基礎知識。
HTLC 的隱私問題
HTLC 有一個根本性的隱私缺陷:整條支付路徑使用相同的 payment hash。
HTLC 隱私問題:
Alice ──HTLC(H)──> Bob ──HTLC(H)──> Carol ──HTLC(H)──> Dave
│
│ 相同的 H = SHA256(preimage)
▼
問題 1:路徑關聯
- 如果 Bob 和 Dave 合謀,他們可以發現這是同一筆支付
- 他們可以推斷 Alice 是發送者,Dave 是接收者
問題 2:Wormhole 攻擊
- 惡意節點可以「跳過」中間節點
- 收取路由費卻不提供服務
問題 3:鏈上可追蹤
- 如果 HTLC 超時需要上鏈結算
- 相同的 hash 在區塊鏈上可見
- 可以關聯多個通道的關閉 PTLC 解決方案
PTLC 使用「點」(橢圓曲線點)代替哈希,每一跳使用不同的點:
PTLC 基本概念:
設定:
- s = 秘密標量(只有 Dave 知道)
- S = s·G = 對應的公開點
支付路徑:
Alice ──PTLC(S+a)──> Bob ──PTLC(S+b)──> Carol ──PTLC(S)──> Dave
│ │ │
│ │ └─ Dave 用 s 解鎖
│ └─ Carol 學到 s,用 s+b 解鎖給 Bob
└─ Bob 學到 s+b,但不知道 s,用 s+a+b 解鎖給 Alice
關鍵:
- 每一跳的「點」都不同:S, S+b·G, S+(a+b)·G
- 即使 Bob 和 Dave 合謀,他們看到的是不同的點
- 無法確定這些點是否來自同一筆支付 適配器簽名
PTLC 的核心技術是適配器簽名(Adaptor Signatures),也稱為點鎖簽名:
適配器簽名機制:
標準 Schnorr 簽名:
sig = (R, s) where s = k + e·x
驗證:s·G = R + e·P
適配器簽名:
設 T = t·G 是「適配點」
1. 簽名者創建「不完整簽名」:
s' = k + e·x (但使用 R' = R + T)
發送 (R', s')
2. 驗證者檢查:
s'·G = R' + e·P - T
這證明:如果知道 t,就能得到有效簽名
3. 當秘密 t 被揭露時:
s = s' + t
(R, s) 是有效的 Schnorr 簽名
4. 反向:看到完整簽名可以推導 t:
t = s - s'
關鍵屬性:
- 知道 t → 可以完成簽名
- 看到完成的簽名 → 可以學到 t PTLC 支付流程
PTLC 詳細流程(Alice → Bob → Carol → Dave): 1. 設定階段 Dave 生成秘密 s,公開 S = s·G Alice 選擇路由,生成隨機數 a, b 2. 轉發階段(洋蔥路由中攜帶 adaptor 資訊) Alice → Bob: - PTLC 鎖定點:S + (a+b)·G - 包含 Bob 的 adaptor:b·G Bob → Carol: - PTLC 鎖定點:S + b·G - 包含 Carol 的 adaptor:(無需額外) Carol → Dave: - PTLC 鎖定點:S - Dave 用 s 解鎖 3. 結算階段(逆向揭示秘密) Dave → Carol: - Dave 用 s 創建完整簽名花費 PTLC - Carol 從簽名中提取 s Carol → Bob: - Carol 用 s + b 創建簽名(她知道 s,Alice 告訴她 b) - 實際上:Carol 只需要用 s 解鎖,然後 - Bob 從簽名中提取 s + b(但不知道 s 和 b 分別是什麼) Bob → Alice: - Bob 用 s + a + b 解鎖 - Alice 從簽名中可以驗證支付完成
PTLC vs HTLC 對比
| 特性 | HTLC | PTLC |
|---|---|---|
| 鎖定機制 | Hash(preimage) | Point (s·G) |
| 路徑關聯性 | 相同 hash,可關聯 | 不同點,無法關聯 |
| Wormhole 攻擊 | 可能 | 不可能 |
| 鏈上足跡 | Hash 可見 | 與普通支付相同 |
| 腳本複雜度 | 需要 OP_HASH160 | 純簽名 |
| 所需密碼學 | ECDSA + Hash | Schnorr + Adaptor |
實現考量
優勢
- • 隱私大幅提升
- • 防止路徑關聯攻擊
- • 更小的鏈上足跡
- • 支援更複雜的條件支付
- • 與 Taproot 完美結合
挑戰
- • 需要 Schnorr 簽名(已有 Taproot)
- • 適配器簽名較複雜
- • 需要升級所有節點
- • 與現有 HTLC 不兼容
- • 仍在研究和開發中
MuSig2 與 PTLC
PTLC 可以與 MuSig2 多簽結合,實現更強的隱私:
MuSig2 + PTLC 通道: 傳統 HTLC 通道關閉(鏈上可見): ┌─────────────────────────────────────┐ │ IF │ │ <revocation_pubkey> │ │ ELSE │ │ <local_delayed> CHECKSEQUENCEVERIFY │ │ <local_pubkey> │ │ ENDIF │ │ CHECKSIG │ └─────────────────────────────────────┘ 看起來明顯是 Lightning 通道 MuSig2 + PTLC + Taproot 通道關閉: ┌─────────────────────────────────────┐ │ <aggregated_pubkey> CHECKSIG │ └─────────────────────────────────────┘ 看起來就像普通的單簽支付! 隱私改進: - 合作關閉:無法區分是 2-of-2 還是 1-of-1 - 強制關閉:使用 Tapscript,但主要路徑是 keypath - PTLC 結算:與普通交易無異
應用場景
原子多路徑支付 (AMP)
PTLC 讓接收方可以同時解鎖所有路徑,確保要麼全部成功,要麼全部失敗, 而不需要 HTLC 的 payment_secret 機制。
隱蔽支付
結合 Route Blinding,PTLC 可以實現發送方和接收方都隱蔽的支付。
DLC 整合
離散日誌合約(DLC)可以與 PTLC 結合,實現鏈下的條件合約。
開發狀態
Taproot 已激活
2021 年 11 月,Taproot 在比特幣主網激活,提供了 Schnorr 簽名支援。
Taproot Channels 開發中
各實現正在開發 Taproot 通道,這是 PTLC 的前置條件。LND 已在實驗性支援中。
PTLC 規範草案
社群正在討論 PTLC 的 BOLT 規範,預計在 Taproot Channels 穩定後推進。
相關資源
下一步: 了解 雙向資金通道 如何改善通道開設體驗。