進階
Channel Types 通道類型
了解閃電網路中不同的通道類型,從傳統通道到 Anchor Outputs 和 Taproot 通道的演進。
10 分鐘
通道類型概述
閃電網路的通道類型經歷了多次演進,每個版本都解決了前一代的問題。 通道類型通過功能位協商,決定了承諾交易的格式和特性。
向前相容: 新版本節點通常支援舊版通道類型。在通道開設時通過 init 訊息 協商雙方支援的最佳通道類型。
通道類型演進
通道類型歷史:
時間線:
2017 --> Legacy Channels
原始設計,固定費用
2019 --> Static Remote Key
簡化備份恢復
2020 --> Anchor Outputs
動態費用,CPFP 支援
2021 --> Zero-Fee Anchor
移除 HTLC 錨定
2023 --> Simple Taproot Channels
Schnorr 簽名,MuSig2
Feature Bits:
Channel Type Feature Bit
Legacy None (default)
Static Remote Key option_static_remotekey (12/13)
Anchor Outputs option_anchor_outputs (20/21)
Zero-Fee Anchor option_anchors_zero_fee (22/23)
Simple Taproot option_taproot (80/81) Legacy Channels
傳統通道(已廢棄): 特點: 承諾交易費用: • 開設時協商固定費率 • 費用由資金提供者支付 • 無法動態調整 輸出腳本: • to_local:使用每次更新的金鑰 • to_remote:使用每次更新的金鑰 問題: 1. 費用僵化: 鏈上費用波動時,預設費率可能過高或過低 過低 -> 交易長時間不確認 過高 -> 浪費資金 2. 備份困難: 每次狀態更新都用新金鑰 靜態備份無法恢復最新狀態的資金 3. 無法加速: 承諾交易廣播後無法用 CPFP 加速 [!] 已不建議使用,大多數節點不再支援
Static Remote Key
靜態遠端金鑰: 改進: to_remote 輸出使用固定公鑰: 傳統:to_remote = revocation_pubkey(每次不同) 新版:to_remote = static_remote_key(固定) 優點: • 只需備份種子詞即可恢復 to_remote 資金 • 對方強制關閉時,你的資金直接發送到固定地址 • 大幅簡化災難恢復 功能位: option_static_remotekey: • 位 12(偶數):要求支援 • 位 13(奇數):可選支援 現在是預設要求的功能 腳本對比: # 傳統 to_remote <remote_revocation_pubkey> OP_CHECKSIG # Static Remote Key 的 to_remote <static_remote_pubkey> OP_CHECKSIG
Anchor Outputs
錨定輸出通道: 核心改進: 在承諾交易中添加兩個小額「錨定」輸出: 承諾交易輸出: • to_local(你的餘額) • to_remote(對方餘額) • local_anchor(330 sats) <- 新增 • remote_anchor(330 sats) <- 新增 • HTLC 輸出(如有) 錨定輸出用途: 任一方可以通過 CPFP 加速承諾交易 CPFP(Child-Pays-For-Parent): 場景:需要強制關閉,但承諾交易費率太低 解決方案: 1. 廣播低費率承諾交易 2. 創建子交易花費錨定輸出 3. 子交易設置高費率 4. 礦工為了子交易的費用,會一起打包父交易 +-------------------+ +-------------------+ | Commitment Tx | ---- | CPFP Tx | | (low fee) | | (high fee) | | anchor_output -----------> input | +-------------------+ +-------------------+ 功能位: • option_anchor_outputs (20/21):原始版本 • option_anchors_zero_fee_htlc_tx (22/23):改進版本
Simple Taproot Channels
Taproot 通道: 核心改進: 注資輸出: • 傳統:P2WSH 2-of-2 多簽 • Taproot:P2TR MuSig2 聚合公鑰 優點: • 鏈上佔用更小 • 協商關閉時看起來像普通交易 • 更好的隱私 • Schnorr 簽名效率更高 MuSig2 簽名: 兩個公鑰聚合成一個: P_agg = MuSig2_KeyAgg(P_A, P_B) 簽名需要兩方協作: 1. 交換 nonce 2. 各自生成部分簽名 3. 聚合成最終簽名 結果:看起來像單簽交易 承諾交易腳本: Taproot 結構: 內部金鑰:MuSig2(local, remote) 腳本樹: • 撤銷路徑 • 延遲本地路徑 • 遠端路徑 協商關閉:使用 key path(最小佔用) 強制關閉:使用 script path
類型協商
通道類型協商過程: open_channel2 訊息: channel_type (TLV): 明確指定想要的通道類型 範例: • 0x2020:Anchor Outputs + Static Remote Key • 0x2080:Taproot Channel 協商邏輯: 1. 發起者在 init 中公告支援的功能 2. 回應者在 init 中公告支援的功能 3. 發起者選擇雙方都支援的最佳類型 4. 在 open_channel2 中指定 channel_type 5. 回應者在 accept_channel2 中確認或拒絕 類型不匹配: • 如果回應者不支援請求的類型 -> 發送 error 訊息 • 如果沒有共同支援的類型 -> 無法開通道 • 可以降級到較舊但雙方都支援的類型
推薦類型
目前推薦 Anchor Outputs(zero-fee 版本)。 Taproot 通道正在推廣中。
升級現有通道
通道類型在開設時固定。升級需要關閉舊通道 並開設新類型的通道。Splicing 可能改變這點。
檢查你的通道: 使用 lncli listchannels 或 lightning-cli listpeerchannels 查看現有通道的類型。舊通道可能需要升級以獲得更好的安全性。
相關資源
下一步: 了解 Anchor Outputs 如何解決費用問題。
已複製連結