Lightning Networkの仕様はどこから読み始めたらよいか[LN#001]

Bitcoinのブロックチェーンを第1層とするならば、Lightning Networkという技術は第2層に当たります。その仕様はオープンソースで公開されており誰でもアクセスすることができます。

今回の記事は、「Lightning Networkは何となく知っているが、その仕様がどのように構成されているのかについて知りたい」という方向けに書いています。
※本記事は、2017/11/14に公開した記事を編集・再掲載したものです。

はじめに

Lightning Networkの仕様はいくつか存在します。その中でも、最も使われているのが BOLT (Basis of Lightning Technology) と呼ばれる仕様です。

BOLT の構成(GitHubより)

BOLTは0~11章で構成されており(6章は欠番)、時々どこから読み始めるのがよいかと質問されることがあります。それに対する回答は難しいですが、私なりに答えていきたいと思います。

各章の内容

まず、BOLT#0(0章)の前半には専門用語とその説明が記載されています。先に目を通しておくと理解しやすくなるのでいいかもしれません。
後半にはテーマソングが載っています。ふざけているように見えますが、このような内容は先にも後にも見当たらないので、見ておくといいかもしれません(笑)

続いて内容についてです。
内容はBOLT#1以降になりますが、プロトコルの階層順で行くとBOLT#8も前持って見ておくといいのではないでしょうか。

BOLT#8は他の章からほぼ独立しています。BOLTでの通信を開始する前のネゴシエーションと、通信を開始してからの符号化処理について書かれています。 他の章は、この章の内容が実現している前提になっています。
しかし、実装をしないのであれば、BOLT#8はあまり気にしなくていいかもしれません。

BOLT#1#2および#7は、P2P通信プロトコルについて記載しています。
なお、#1、#7で使用するパラメータの一部をBOLT#9で、#2で使用するパラメータの一部をBOLT#4で詳細に説明しています。

BOLT#3は、Bitcoinのブロックチェーン(第1層)で使用するトランザクションと#2で交換したメッセージの関係や、スクリプトで使用する鍵の導出について記載しています。

BOLT#5は、Bitcoinのブロックチェーン(第1層)でどのようにトランザクションを扱うべきか示しています。

BOLT#10は、ノードの情報を得る手段についてです。

BOLT#11は、インボイス(請求書)について書かれています。

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

以上、簡単にではありますがBOLTの構成と読み方についてまとめました。ご感想やご質問等あればお気軽にコメントください!

--

--