ThinkITにて、Lightning Networkについての短期連載を行いました。
- 第1回:Lightning Networkが動作する仕組み
- 第2回:Lightning Networkの送金処理で使用されている技術【前編】
- 第3回:Lightning Networkの送金処理で使用されている技術【後編】
わかりやすいかどうかは別として、イメージをつかんでいただければ幸いです。
第3回の図がわかりづらいようだったので、補足しておきます。
これは、transactionの名称とoutputの名称を図で表そうとしたものです。
funding transactionは、同意してチャネルを閉じる場合にはclosing transactionへ、そうではない場合はcommitment transactionにつながります。
closing transactionは、チャネルを開いたそれぞれが送金先を指定するので、そこから先は自由です。
問題は、commitment transaction。チャネルに送金できる額が残っていれば、to_local outputとto_remote outputがあります。
dust以下しか残っていなければ、そのoutputはありません。
もしHTLCが残っていて、それも送金できる額が残っていれば、offered HTLC outputsやreceived HTLC outputがあります。で、この名称は「output」なので、transaction名ではありません。
連載の図ではtransactionと同じ色にしてしまったので、わかりづらかったのだと思います。to_local outputは、スクリプトへの送金です。
スクリプトに名称はないので、to_local outputという名前のスクリプトだと思っていいんじゃないでしょうか。
この送金は、スクリプトだけが指定されていて、そこから先のoutputは自由です。
なので、BOLTとしてはこの部分にtransactionとしての名称を付けていません。to_remote outputは、相手のアドレスへの送金です。
offered HTLC outputsとreceived HTLC outputsは、スクリプトへの送金です。
ただし、この送金先についてはさらに次のoutputまでBOLTで指定されています。
そのため、HTLC Timeout transactionやHTLC Success transactionという名称が付けられています。
という図でした。