[LN#001] どこから読むか

現在(2017/11/14)のところ、BOLTは0~11章まである(うち、6章は欠番)。

image

 

このうち、どこから読み始めるのがよいかという質問をされることがあるが、その回答は難しい。


まず、BOLT#0は導入部で用語が多少載っているため、先に目を通すとよいだろう。
テーマソングがあるなど、ふざけたところがあるように見えるかもしれないが、そういった要素はここ以外見当たらない。

 

内容についてはBOLT#1以降になるが、プロトコルの階層順で行くと、BOLT#8を最初に読むのがよいだろう。
BOLT#8は他の章からほぼ独立していて、BOLTでの通信を開始する前のネゴシエーションと、通信を開始してからの符号化処理について書かれている。
他の章は、この章の内容が実現されている前提になっている。
逆に言えば、実装をしないのであれば、BOLT#8はあまり気にしなくてよい。

 

BOLT#1、#2および#7は、P2P通信プロトコルについて記載されている。
BOLT#1,#7で使用するパラメータの一部をBOLT#9で、BOLT#2で使用するパラメータの一部をBOLT#4で詳細に説明している。
BOLT#3は、1st Layer、すなわちBitcoinのブロックチェーンで使用するトランザクションとBOLT#2で交換したメッセージの関係や、スクリプトで使用する鍵の導出について記載されている。
BOLT#5は、トランザクションをon-chain、すなわちBitcoinのブロックチェーンでどのように扱うべきか示している。

 

BOLT#10はノードの情報を得る手段について、BOLT#11は請求書(invoice)についてである。


このように、章単独で読み進められるものではない。
それでもあえてどこからか読み進めるとすれば、BOLT#2がよいか。
内容は分からないにしても、シーケンスが図になっているので、イメージはつかみやすいと思う。

 

ただ、このブログでは、通信を確立するところから順に解説していく。


なお、弊社ではオリジナルノード実装のptarmiganを開発している。
BOLTの標準実装を進めているc-lightningのノードと混在させての送受金テストも動作している(commit id : ebdecebb1a89f7dcd8daa53c57ec58af32f7c40d)。

image