支付通道
深入理解閃電網路支付通道的運作原理,包括資金鎖定、狀態更新和通道關閉。
什麼是支付通道?
支付通道是兩個節點之間建立的「鏈下」連接,允許雙方進行無限次即時交易, 而無需每次都在比特幣區塊鏈上廣播。只有開啟和關閉通道時才需要鏈上交易。
核心概念: 支付通道本質上是一個 2-of-2 多簽地址,雙方都必須同意才能移動資金。 通過不斷更新「承諾交易」來反映最新餘額,實現即時支付。
通道生命週期
1. 開啟通道
開啟通道需要一筆鏈上交易(funding transaction),將資金鎖定到 2-of-2 多簽地址:
開啟通道流程: 1. Alice 想與 Bob 建立通道 2. 雙方交換公鑰,創建 2-of-2 多簽腳本 3. Alice 創建 funding tx,鎖定 0.1 BTC 到多簽地址 4. 在廣播 funding tx 之前,雙方先簽署初始承諾交易 5. funding tx 上鏈並確認後,通道正式開啟 多簽腳本: OP_2 <Alice_pubkey> <Bob_pubkey> OP_2 OP_CHECKMULTISIG
2. 使用通道
通道開啟後,雙方可以通過更新承諾交易來進行支付:
Initial State: Channel capacity: 0.1 BTC Alice: 0.1 BTC | Bob: 0 BTC Alice pays 0.02 BTC to Bob: Channel capacity: 0.1 BTC Alice: 0.08 BTC | Bob: 0.02 BTC Each payment creates new commitment tx Old commitment tx is "revoked"
3. 關閉通道
關閉通道時,將最終餘額結算回區塊鏈。有三種關閉方式:
協作關閉
雙方同意關閉,創建一筆簡單交易分配餘額。最快、最便宜。
單方關閉
一方廣播最新承諾交易。需要等待時間鎖,對方可以取回資金。
懲罰關閉
如果一方廣播舊狀態,對方可以使用撤銷密鑰取走全部資金。
資金交易結構
Funding transaction 是開啟通道的鏈上交易:
Funding Transaction
├── 輸入
│ └── Alice 的 UTXO (0.1 BTC + 手續費)
│
└── 輸出
└── 2-of-2 多簽輸出 (0.1 BTC)
P2WSH: OP_2 <A> <B> OP_2 OP_CHECKMULTISIG
特點:
- 需要等待足夠確認(通常 3-6 個區塊)
- 確認後通道才能使用
- funding tx 的 txid 成為通道 ID 的一部分 通道容量與餘額
通道容量
funding transaction 鎖定的總金額。開啟後固定不變,除非使用 splice-in/out。
本地/遠端餘額
你能花費的金額(本地)和對方的金額(遠端)。隨著支付不斷變化。
Channel Balance Example: Capacity: 1,000,000 sats (0.01 BTC) Local Balance | Remote Balance 600,000 sats | 400,000 sats -----------------|----------------- Outbound | Inbound Liquidity | Liquidity Outbound liquidity = max you can send Inbound liquidity = max you can receive
雙向支付
支付通道是雙向的,資金可以在雙方之間來回流動:
雙向支付示例:
初始: Alice 100% ←──────────────→ Bob 0%
Alice 付給 Bob 30%:
Alice 70% ←──────────────→ Bob 30%
Bob 付給 Alice 10%:
Alice 80% ←──────────────→ Bob 20%
資金在通道內來回流動
不需要任何鏈上交易! 通道儲備金
閃電網路要求每一方保留一定的「儲備金」,確保有資金可被懲罰:
Channel Reserve Rules: Reserve = 1% of channel capacity (or negotiated value) Channel capacity: 1,000,000 sats Reserve: 10,000 sats (each party) Spendable balance: Alice spendable = Alice balance - reserve Bob spendable = Bob balance - reserve Purpose: • Ensure funds available for penalty • Prevent broadcasting old state
手續費
鏈上手續費
開啟和關閉通道需要支付鏈上手續費:
- • 開啟通道:funding tx 手續費由開啟方支付
- • 關閉通道:承諾交易手續費從通道餘額中預留
- • 錨點輸出:允許關閉時動態調整手續費(CPFP)
路由手續費
當通道用於轉發支付時,可以收取手續費:
路由手續費結構: 手續費 = base_fee + (amount × fee_rate) 範例: base_fee: 1 sat(固定費用) fee_rate: 100 ppm(百萬分之一) 轉發 100,000 sats: 手續費 = 1 + (100,000 × 0.0001) = 11 sats
安全機制
時間鎖保護
單方關閉時,發起方的資金會被時間鎖定(to_self_delay), 給對方時間檢查是否為舊狀態。
撤銷機制
每次更新狀態時,雙方交換舊狀態的撤銷密鑰。 如果廣播舊狀態,對方可以用撤銷密鑰取走全部資金。
瞭望塔
第三方服務監控區塊鏈,在你離線時代你執行懲罰交易,防止對方作弊。
下一步: 了解 HTLC(哈希時間鎖定合約) 如何實現跨通道的原子支付。