[LN#013]現状(2017年12月前半)

ここまででChannel Establishment、Normal Operation、Channel Closeの主要な説明を行ってきた。

今回は、現状(2017/12前半)のBOLTについてまとめておく。
BOLTのコミットはこちらである。


2017/12/7に、以下の記事が掲載された。
Lightning Protocol 1.0: Compatibility Achieved ✅ – Lightning Developers – Medium

これを掲載した時点(2017/12/20)で、またBOLTとしてv1.0はリリースされていない。
記事で、c-lightningeclairlndの3ノードアプリ間で統合テストが通ったという内容であった。

基本的には、現在の内容からは大きく変更せずにv1.0として固めるのだろうと思われる。
issueもあるものの、現在はドキュメントとしての整備が行われているようで、最近のコミット内容は英語の文法や見栄えのような習性が多い。

 

v1.0には入れないが、次のv1.1に入れたいという内容は上がってきている。
https://github.com/lightningnetwork/lightning-rfc/milestone/1


現状のBOLT仕様ではいくつか数値の制限があるので、amountや期間に関係するものをいくつか挙げておく。

 

Channel Establishment

funding_satoshisは、チャネルにfundingする額である。
当初は、funding_satoshisなどの額については4byteで管理していたのだが、Litecoinではコーヒーも飲めないということで8byte管理になったようである。
なお、ブロックチェーンの種類はopen_channel/accept_channelにgenesis blockのハッシュを載せることで表している。

max_accepted_htlcsは、受入可能なHTLC数ということで、送金反映でHTLCが消える前に別の送金が行われるなどしてHTLCがたまっていった場合の上限と考えている。
この半端な数字は、違反した相手から取り戻すときのことを考慮しているようである。

minimum_depthは、相手がチャネル開設を要求してきた(open_channelを送信)とき、自分はfunding transactionを認めるのにconfirmationがこれだけ必要になる、という下限である。
表現として「大きすぎる(unreasonably large)」は曖昧だが、ノードを立てた人の感覚を重視しているのかもしれない。

 

Normal Operation

ホップ数は最大で20もあるため、update_add_htlcメッセージは1,366byteと固定のBOLTメッセージで一番大きくなっている。
また、onion_routing_packetは送金経路を隠蔽するようにできているため、ホップ数にかかわらず1,366byte送信する必要がある。