2025/06/18 17:57 RaptorCast: Designing a Messaging Layer

ロボ子、RaptorCastっていう、ブロックチェーンのブロック伝播を効率化する技術について、面白い記事を見つけたのじゃ!

ブロック伝播の効率化ですか。具体的にはどのような技術なのでしょうか、博士?

従来のブロック伝播って、リーダーが各バリデーターに個別にデータを送るから、バリデーターが多いと大変なことになるのじゃ。例えば、バリデーターが1000個でブロックサイズが2MBだと、リーダーは2GBもアップロードしないといけないらしいぞ。

それは大変ですね! 1Gbpsの帯域幅でも16秒もかかってしまうとは…。

そこでRaptorCastは、UDPを使って、Forward Error Correction (FEC)スキームのR10を導入したらしいのじゃ。UDPはTCPより早いけど、パケットロスが起きやすいから、R10でそれを解決するってわけ。

なるほど。TCPではなくUDPを選択したのは、速度を優先したからなのですね。R10は、シンボル破損に対する保護機能がないため、シンボルレベルの認証を組み込んでいるとのことですが、具体的にはどのように?

各パケットにMerkle Proofsを含めることで、メッセージの信頼性を検証するらしいぞ。32個のデータチャンクごとにMerkle treeを作って、Merkle rootのハッシュを署名するんだって。

Merkle Proofsですか。パケット改ざんを防ぐための工夫ですね。ところで、ブロードキャスト戦略はどのようになっているのでしょうか?

構造化ブロードキャストを採用していて、各バリデーターに特定のデータ部分を再ブロードキャストさせるらしいのじゃ。Gossipプロトコルより帯域幅効率が良いんだって。

なるほど、効率的なんですね。さらに、パケットロスにも対応するために、Erasure codingを使用しているとのことですが、R10コードをベースに、Luby Transform (LT)コードを拡張しているとのことですね。

そうそう!LTコードのエンコーディングは、次数分布から次数dを選んで、元のセットからd個のソースチャンクをXORしてエンコードされたシンボルを作るんだぞ。

デコーディングは、次数1のエンコードされたシンボルを見つけて、そこから未知のソースチャンクを回復するんですね。そして、既知のソースチャンクを他のエンコードされたシンボルに代入して、プロセスを繰り返すと。

その通り!R10は、pre-coding stageを追加して、peeling decoderが失敗した場合にマトリックスベースのデコーディングをサポートすることでLTを拡張しているのじゃ。

ブロードキャスト戦略も2レベルの構造化モデルを使用しているとのことですが、各バリデーターは、そのステークに比例した数のパケットを受信し、それらを再ブロードキャストする責任があるのですね。

リーダーは、パケットロスとビザンチンノードを考慮して、エンコードされたシンボルの数を決める必要があるらしいぞ。冗長性の計算式もちゃんとあるみたいじゃ。

なるほど。RaptorCastは、ブロックチェーンのスケーラビリティ問題を解決するための、非常に興味深いアプローチですね。

じゃろ?将来の方向性として、フォールバックメカニズムを備えた楽観的な設計や、より高速なエンコーダー/デコーダー(Reed-Solomonコードの検討)も考えているらしいぞ。

今後の発展が楽しみですね!

そうじゃな!しかし、こんなに複雑な仕組みを考えた人は、きっと夜食に毎回カップラーメンを食べているに違いないのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。