跳至主要內容
高級

Splicing

深入理解通道拼接技術,無需關閉通道即可調整容量。

18 分鐘

什麼是 Splicing?

Splicing(通道拼接)是一種允許用戶在不關閉閃電網路通道的情況下, 動態增加或減少通道容量的技術。這意味著你可以向通道添加資金(splice-in) 或從通道中提取資金到鏈上(splice-out),同時保持通道運作。

核心優勢: 傳統上,調整通道容量需要關閉舊通道再開新通道,產生兩筆鏈上交易。 Splicing 只需要一筆交易,節省手續費並保持通道連續可用。

兩種 Splice 操作

Splice-In

向現有通道添加資金,增加通道容量

  • • 從鏈上 UTXO 添加資金
  • • 增加本地餘額
  • • 通道繼續運作

Splice-Out

從通道提取資金到鏈上地址

  • • 將通道資金發送到鏈上
  • • 減少通道容量
  • • 無需關閉通道

運作原理

Splicing 的核心是創建一個新的 funding transaction,同時維護通道的連續性:

1

協商 Splice

雙方同意進行 splice 操作,協商新的通道容量

2

構建交易

創建新的 funding tx,花費原 funding output + 新資金(splice-in)或產生鏈上輸出(splice-out)

3

並行狀態

在新 funding tx 確認前,同時維護舊和新的承諾交易

4

簽名交換

雙方交換新 funding tx 和對應承諾交易的簽名

5

廣播確認

廣播新 funding tx,等待確認後切換到新狀態

Splice 交易結構

# Splice-In 交易
Inputs:
  - 原 funding output (2-of-2 multisig)
  - 新增 UTXO(Alice 的鏈上資金)

Outputs:
  - 新 funding output (2-of-2 multisig, 容量增加)

# Splice-Out 交易
Inputs:
  - 原 funding output (2-of-2 multisig)

Outputs:
  - 新 funding output (2-of-2 multisig, 容量減少)
  - 鏈上輸出(Alice 的提款地址)

關鍵技術:並行承諾

在 splice 交易確認期間,通道需要同時支持兩種狀態:

並行狀態管理

  • 1. 舊承諾交易:基於原 funding output,在新 tx 確認前仍有效
  • 2. 新承諾交易:基於新 funding output,新 tx 確認後生效
  • 3. 狀態同步:每次通道更新都要同時更新兩套承諾交易

與傳統操作比較

操作 傳統方式 Splicing
鏈上交易數 2 筆(關閉 + 開啟) 1 筆
通道停機時間 等待兩次確認
路由中斷
通道 ID 改變 改變
手續費成本 較高 較低

應用場景

📊

動態容量調整

根據業務需求隨時增減通道容量,無需中斷服務

🔗

整合鏈上支付

直接從閃電通道支付鏈上地址,無需先關閉通道

🔄

通道合併

將多個小通道合併為一個大通道,簡化管理

📦

UTXO 整合

在 splice 時順便整合鏈上 UTXO,節省未來手續費

實現狀態

實現 狀態 備註
CLN (Core Lightning) ✓ 已支持 v23.08 開始
Phoenix ✓ 已支持 移動端錢包
LND ⏳ 開發中 預計 2024
Eclair ✓ 已支持 ACINQ 實現

未來展望:Splicing + Taproot

結合 Taproot 通道後,Splicing 將獲得額外優勢:

  • 更小的交易:Schnorr 簽名更緊湊
  • 更好的隱私:無法區分 splice 和普通交易
  • 批量操作:可以將多個 splice 合併為單筆交易
已複製連結
已複製到剪貼簿