用語集 / ライトニングとレイヤー2
スプライシング
- スプライシングとは?
- スプライシングは、開設済みのライトニングチャネルのファンディング出力を、より大きいまたはより小さい新しい出力に使用することでチャネルのサイズを変更する仕組みであり、チャネルは履歴を保ったまま常に利用可能な状態を維持します。
スプライシング以前にチャネルのサイズを変更するには、チャネルを閉じて別のチャネルを開く必要がありました。オンチェーン取引が2回、手数料が2回、そしてチャネルが存在しない空白の期間が生じました。スプライスはそれを1回の取引で行います。splice_init、splice_ack、splice_lockedというメッセージはライトニングの仕様の一部であり、Core Lightningは2023年8月にv23.08で実験的な実装をリリースしました。
仕組み
スプライシングは古いファンディング出力を使用し、同じ取引の中で新しいファンディング出力を作成します。その際、双方のピアが署名します。
まずピア同士が何を変更するかを合意します。一方が追加または削除する金額を指定してsplice_initを送信し、もう一方がsplice_ackで応答します。その後、双方は対話型構築プロトコルを使ってスプライス取引を共同で構築し、それぞれが提供するインプットとアウトプットを追加します。そのため、資金を追加するスプライスでは入金する側のオンチェーンコインが取り込まれ、資金を削除するスプライスではそのピアに直接支払うおつり出力が作成されます。
スプライシングを価値あるものにしているのは、取引が未承認の間に何が起こるかです。チャネルは停止しません。双方のピアは古いファンディング出力と新しいファンディング出力の両方に対して同時にコミットメント取引を保持し、支払いはまだ有効な状態のもとで流れ続けます。スプライスに十分な承認が得られると、splice_lockedが古い出力を引退させ、チャネルは新しいサイズ、元のチャネルID、蓄積されたルーティング履歴をそのままに存続します。
コストは2回ではなく1回のオンチェーン取引であり、その節約は聞こえる以上に大きいものです。閉じて開き直すと、チャネルの公開評価も損なわれ、ノードはルーティング関係を再構築することを余儀なくされ、両方の取引が承認される間は資金が利用できなくなります。スプライシングはその3つすべてを避けます。また、同じウォレット内のオンチェーン残高とライトニング残高を1つの数字として表示できることも意味します。チャネルを終了させることなく、資金を両者の間で移動できるからです。
導入されている場面
スプライシングが最も目に見えるのは、2つの残高を表示しなくなったウォレットです。
Core Lightningはv23.08でexperimental-splicingフラグの背後にこれを追加し、splice_init、splice_update、splice_signedを低レベルコマンドとして公開しました。ACINQは2023年8月にAndroid版Phoenix v2.0.0で一般ユーザーに提供し、同時にデュアルファンディングも導入しました。これによりこのウォレットはインターフェース上でオンチェーン資金とライトニング資金を区別しなくなりました。オンチェーンで入金すると、2つ目のチャネルを開くのではなく、既存のチャネルにスプライスされます。
ノード運営者にとっての実用的な用途は、チャネルを入れ替えずに資金を再調整することです。扱うトラフィックに対して小さくなりすぎたチャネルは、その場で補充されます。必要以上の資金を持つチャネルは、開いたまま一部をコールドストレージに移されます。どちらも以前は閉鎖、待機、再開であり、オンチェーン手数料が2回かかり、ルーティング履歴もリセットされていました。
対応は普遍的ではありません。実装とそのピアの両方がスプライシングのメッセージに対応している必要があるため、特定のチャネルをスプライスできるかどうかは、その反対側に誰がいるかによります。資金を移動するためにチャネルを閉じるようウォレットが今も求めている場合、カウンターパーティまたはソフトウェアがまだ採用していません。
スプライシングvs強制クローズ
スプライシングはチャネルを存続させたままサイズを変更し、強制クローズはチャネルを一方的に終了させます。強制クローズは、ピアに到達できないか不正な動作をしたときに行うものです。最新のコミットメントをブロードキャストし、自分の残高はおよそ1日の遅延の間ロックされ、チャネルは失われます。スプライスは双方のピアの協力と署名を必要とし、機能し続けるチャネルを生み出し、誰の資金にも遅延を課しません。スプライシングは計画して行うメンテナンス作業であり、強制クローズは時間と不利な手数料率を犠牲にする代替手段です。