【CTO Tech Blog】LNピアのデータを保管するピアストレージ
- CTO Tech blog

先月ピアストレージの仕様がBOLTにマージされた↓
https://github.com/lightning/bolts/blob/master/01-messaging.md#peer-storage
ピアストレージ
ピアストレージというのは、LNでピアから受け取った任意の暗号化データを受け入れるオプションサービス。
チャネルのバックアップ情報などを暗号化した上でピアに都度保管してもらい、リカバリーが必要になった際に、ピアに以前送ったデータを送ってもらいリカバリーに使用するといった使い方が可能になる。CLNとかはSCB(Static Channel Backup)の拡張という位置づけで実装してるみたい。
データサイズの上限は約65KB(65531 byte*1)で、任意のBLOBデータを保存できる。暗号化されているのもあり、データを受け取ったピアも中身が分からないので、送信したノードが解釈できれば何でも良さそう。BOLTでは特に暗号化方式も定義されておらず、送信したノードが後でデータを受けっとたときに、データの完全性が確保される方法で暗号化されていればいいと。
サポートの通知
ピアストレージをサポートするノードは、機能フラグoption_provide_storage
をアドバタイズする。
ピアストレージ用のメッセージ
ピアストレージをサポートするにあたって2つの新しいメッセージが導入されている↓
peer_storage
BLOBデータを送信し、データの保管を依頼するメッセージ。実際のデータのサイズを隠すため、送信者はデータが65531 byteになるまでパディングする。
メッセージを受け取ったノードは、送信者との間にチャネルを開いている場合は、メッセージを保管する必要がある。チャネルを開いていない場合は、保管してもしなくてもいい(対価があれば保存する場合もある)。
また、一応レート制限があり、1分あたり1回以上のペースでpeer_storage
が送信された場合は、受信側は遅延を発生させる。このため、送信者が想定する最新のデータと実際に保存されているデータが異なる可能性があることに注意。
peer_storage_retrieval
保存している最新のBLOBデータをピアに送信するメッセージ。ピアと再接続し、init
メッセージを交換した後に(channel_reestablish
より前に)、このメッセージを使って保存しているデータを送信する。その際、ピアとのチャネルがすべて閉じられていて、BLOBを削除する場合は、すくなくとも2016ブロック待つ必要がある。
peer_storage_retrieval
メッセージでBLOBデータを受け取ったピアは、そのデータが古かったり、無関係なデータであった場合は、warning
メッセージを送信する可能性がある。
各ノード実装の対応状況
各ノード実装のピアストレージの対応状況は↓
CLN
SCBをリモートピアに送信するSCBの拡張という位置づけ。
Eclair
モバイルウォレットを提供するLSPを対象とし、ユーザーがスマホを交換したい場合などに、チャネルを復元できるようにするみたい。
LDK
現状は、ノード間でバックアップのデータをやり取りできる機能をまず実装したという段階っぽい。
LND
現時点でまだPRはマージされていない↓
*1:BOLT8で定義されているライトニングメセージの最大サイズが65535 byteなのでそれを超えないように選択された値
Chaintopeでブロックチェーンの未来を共に創りませんか?
Chaintopeは、独自のブロックチェーン「Tapyrus」と、開発プラットフォーム「Tapyrus Platform」を活用し、デジタル社会の信頼基盤を構築しています。
私たちは、ブロックチェーン技術の可能性を最大限に引き出し、社会に新しい価値を提供することを目指しています。
募集職種:
ブロックチェーンエンジニア
アプリケーションエンジニア
インフラ・保守エンジニア
プロジェクトマネージャー
フィールドセールス
Chaintopeで働く魅力:
最先端のブロックチェーン技術に触れる機会
リモートワークやフレックスタイム制による柔軟な働き方
専門性の高いチームとの協働
ブロックチェーン技術に情熱を持つあなたのスキルを、私たちのチームで活かしませんか?
詳細は、採用情報をご覧ください。
https://www.chaintope.com/recruit/