高級
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 合併為單筆交易
已複製連結