跳至主要內容
進階

支付通道

深入理解閃電網路支付通道的運作原理,包括資金鎖定、狀態更新和通道關閉。

15 分鐘

什麼是支付通道?

支付通道是兩個節點之間建立的「鏈下」連接,允許雙方進行無限次即時交易, 而無需每次都在比特幣區塊鏈上廣播。只有開啟和關閉通道時才需要鏈上交易。

核心概念: 支付通道本質上是一個 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(哈希時間鎖定合約) 如何實現跨通道的原子支付。

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