Lightning Networkの技術解説記事(ThinkIT)

ThinkITにて、Lightning Networkについての短期連載を行いました。

わかりやすいかどうかは別として、イメージをつかんでいただければ幸いです。


第3回の図がわかりづらいようだったので、補足しておきます。

image

これは、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という名称が付けられています。

という図でした。