ここ最近はライトニングネットワーク(LN) の効率化の話を書くこと多くなっています。今日もそんな話にお付き合い下さい。
LNにおける効率とは、突き詰めれば「LN上のトランザクション総額 / かかったオンチェーントランザクション手数料」であり、これを改善する方策としてはオンチェーンでのチャネル開閉が必要になる場面を減らすことがメインです。(資金効率の話もよく出てきますが、資金が大きいほうが上記の効率が高くなりやすいため、有利かもしれません)
コストのかかるチャネル開閉を減らすには、チャネルのリバランスの頻度が下がるよう運用を工夫するなどノード管理者の努力も当然されていますが、送金経路上のノードがオフラインになった場合などにチャネルを閉じる必要がある仕組みを見直すなど、根本的な提案もされています。
今回説明するPedro Moreno-Sanchez氏論文紹介シリーズの第三弾は、オンチェーントランザクションを伴わない、ペイメントチャネル上に構築する「仮想チャネル」でLNを効率化する方法であるDonnerについてです。
https://eprint.iacr.org/2021/855.pdf
LIGHTWEIGHT VIRTUAL PAYMENT CHANNELS
実はDonnerより前、ちょうど1年ほど前に発表された論文にLightweight Virtual Payment Channelsというものがあります。
https://eprint.iacr.org/2020/998.pdf
これは近距離(1ホップ先までーつまり中継ノードは1つ) のノードを直接つなげる仮想チャネルをマルチシグとタイムロックのみを使って実現する方法で、オンチェーントランザクションが発生するのはその仮想チャネルを強制的にクローズする必要がある場合のみです。
また、この仮想チャネルの上にさらに仮想チャネルを構築することによって、任意のホップ数先のノードまで直接仮想チャネルをつなげることもできます。(Recursive LVPC)
しかしRecursive LVPCは大きな欠点として、いくつも重なった仮想チャネルの上位層がオンチェーンに決済する必要ができると、関係する下層の仮想チャネルもオンチェーンに決済する必要があること、いたずらなどによる資金のロックも同様に下層の仮想チャネルに波及することなどが挙げられます。
DONNERの大まかな機能
大まかな機能として、Donnerは仮想チャネルに使用する資金と同額を実際のLN上でも担保し、仮想チャネル上の資金のやり取りは直接チャネルがあるのと同様に管理し、友好的にクローズする際には残高を実際のLN上で決済します。この場合、オンチェーンには1つもトランザクションは発行しません。
そのために、セットアップ時にLN上の経路を設定し、その中継ノードを巻き込んで仮想チャネルをセットアップします。
LNの手数料は基本的にはパーセンテージなので、おびただしい量のトランザクションを捌く必要がある場合には手数料がかなり高く付くことになります。Donnerのような仮想チャネルを使って直接チャネルを開いた状態を仮想的に実現することで、手数料を気にせず大量のペイメントをやり取りすることができます。金融機関や従量制課金などのユースケースに非常に向いていると言えます。
オンチェーンの決済を、あとでまとめて行うことでトランザクション数を圧縮するのがLNなら、LNの決済をあとでまとめて行うことでトランザクション数を圧縮するのがDonnerです。
DONNERの詳しい流れ
では今日紹介するDonnerはどのような仕組みで以上の問題点を改善しようとするのでしょうか。実は仕組みは1ヶ月ほど前に紹介したBlitzプロトコルに似ています。
BlitzプロトコルとはHTLCに代わる、マルチシグとタイムロックのみによるLN上の送金中継の仕組みで、一定時間の経過で自動的に経路上の中継がすべて成功するようになっています。もし送金者が一定時間の経過する前に送金をキャンセルしたい場合は、返金用のオンチェーントランザクションを発行します。このオンチェーントランザクションは各中継ノードにあらかじめ渡しており、中継ノードはそのオンチェーントランザクションを参照してチャネルを元の状態に戻します。