ライトニングチャネルへの入出金を1トランザクションで行えるSplicingの仕組み
決済事業者やオンラインストアの対応などにより、ライトニング支払いが利用可能な場面が少しずつ増えてきています。しかし、ライトニングに対応していない決済プラットフォームや取引所などを相手にした送金など、相変わらずオンチェーンでの送金が期待されるユースケースも多いです。
また、ライトニングチャネルの総残高は変えることができませんが、思ったより便利で資金を追加したいという場面もあるかもしれません。この場合、一度チャネルを閉じて再び開けるコストをかけるのは億劫です。
そんなときに、1トランザクションでライトニングチャネルに資金を追加したり、チャネル内の資金をオンチェーン送金に使うSplicingというテクニックがあります。今日はSplicingが何かについて、Peerswapとの違いを含めて説明します。
通常のライトニングチャネルの開閉
稼働中のライトニングチャネルはオンチェーンでは2-of-2マルチシグのUTXOとして表現されています。このUTXOを使用するトランザクションをオフチェーンで更新していくことで多数のトランザクションを1つにまとめるのがライトニングの本質です。
したがって、通常の手順でライトニングチャネルを閉じて再び開設する場合、以下のトランザクションを配信する必要があります:
1.2-of-2 UTXOからチャネルの最終バランスを分配するトランザクション (※協調閉鎖の場合)
2.協調閉鎖トランザクションのoutput(と、資金を追加したい場合は別のoutput)から新たなチャネル(2-of-2マルチシグ)に送金するトランザクション
相手が非協力的な場合はさらにトランザクションが増えますが、その場合はSplicingも不可能なので考慮しないこととします。
そもそも非協力的な相手とのチャネルを持っていても仕方ありません。
Splicingの仕組み
ライトニングチャネルに資金を追加するSplice-inと、チャネル内の資金の一部をオンチェーンに逃すSplice-outに分けて説明します。
Splice-in
先程では2つのトランザクションに分けていた工程を1つにします:
2-of-2 UTXOおよび追加する資金のUTXOから、新たな2-of-2 UTXOへの送金
これによって、古いチャネルを閉じる行為と資金を追加した新しいチャネルを開設する行為が1つのトランザクションで完結できます。
Splice-out
こちらも1つのトランザクションにまとめることができます:
2-of-2 UTXOから、オンチェーンの送金先と新たな2-of-2 UTXOへの送金
これによって、古いチャネルを閉じてオンチェーン送金しながら残金で新たなチャネルを開く行為を1つのトランザクションで完結させることができます。
Splicingの利点
さて、Splicingの利点としては手数料の節約とダウンタイムが発生しないことが挙げられます。
Splicingを利用した場合はトランザクションの数が減ることに加え、別々のトランザクションで閉鎖と開設を行う場合に必要となる互いのチャネル残高を一時的に払い出すアウトプット・インプットも不要になるなど、ブロックスペースの効率が非常に良いです。そのため、支払うオンチェーン手数料が節約できます。
また通常はライトニングチャネルは開設のために数ブロック待つ必要があり、閉鎖時は即時に使えなくなります。ところが、Splicingをすると閉鎖と開設が同じトランザクションで行われるため、閉鎖中のチャネルと開設中のチャネルの両方を更新することで確実に不正を防ぐことができます。
同一のトランザクションで閉鎖と開設が行われていなければ別々のタイミングで承認されたり、そもそも承認されないリスクがあるため、チャネルのダウンタイムが発生してしまいます。
これらのことから、ライトニングチャネル内の資金を使ってオンチェーン送金したり、ライトニングチャネルに資金を追加したい場合、相手が協力してくれるならSplicingの利用が有効です。
Peerswapとの違い
さて、ちょうど昨年にPeerswapというプロトコルを紹介しました。

これをライトニング上の離れたノード間で行えるForwardable Peerswapという概念も最近紹介しました。
これはライトニングとオンチェーンのアトミックスワップによってチャネルバランスを調整するプロトコルです。例えばライトニングチャネルのLocal Capacity (Outbound Capacity / 自分方の残高)が枯渇して支払いができなくなった場合、Splice-inで資金を追加するほかにもPeerswap-inを使ってチャネルの相方にオンチェーンで送金しライトニングで受け取るという方法が使えます。
これをふまえて、PeerswapとSplicingの違いを整理してみます:
Splicingに有利な点
・Peerswap-inは2つのトランザクションとその承認を待つ時間が必要(opening + claim)なところ、Splice-inは1つのトランザクションで完結する。
・Peerswapではオンチェーンの流動性を供給する側 (Peerswap-inを提案する側、Peerswap-outを受ける側)が先にトランザクションを発行するため相手側の途中キャンセルにより手数料分だけ損しうるが、Splicingではその問題はない。
・Peerswap-outはアトミックスワップの性質上他者への送金には使えず、ライトニングチャネルの残高を直接利用したオンチェーン送金はSplice-outの専売特許である (Peerswap-outでは完了後に改めてオンチェーン送金する必要がある)。
Peerswapに有利な点
・Peerswapは実用段階である (Forwardable Peerswapはまだ)。SplicingはDual-funded channels対応のノードが前提となるため未実装である。
・Forwardable Peerswapは2つのオンチェーントランザクションでネットワーク規模でリバランスを行え、非常に高効率になる可能性がある。
・Peerswapはアトミックスワップを利用するため、別のブロックチェーン上のアセットとも取引できる(Liquid NetworkのL-BTCなど)。Splicingは閉鎖・開設と同一トランザクションで送金や入金を行うため、BTCの利用が前提となる。
以上をふまえると、当面はPeerswapが有利でしょうが、Forwardable Peerswapや他チェーンの資産というユースケースが実際にfitしなければSplicingが利用面で追い上げるかもしれません。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。

ディスカッション