📮
AvalancheのSubnet間の通信プロトコル Avalanche Warp Messaging(AWM) の仕組み
社内の勉強会で、AWMの仕組みについて扱ったので、そこでの学びをこちらにDumpします。
記事の内容に不備等あれば是非フィードバックいただきたいです。
Avalancheざっくり説明
- Avalancheは、高性能、高い拡張性、カスタマイズ性を併せ持つセキュアなプラットフォーム
- 複数のブロックチェーンを、お互いが任意のデータを送受信できる高い相互運用性(インターオペラビリティ)を持った状態で動作させることで、これを実現しようとしている
- Avalancheは送金や取引の実施とプラットフォームの運営が別のチェーンに分別されている
- プライマリネットワークは3つのチェーンによって構成されている
- 本記事の文脈で重要となるのはP-Chain。P-Chainはプラットフォームの運営に特化したチェーン
公式ドキュメントより引用
AvalancheのSubnetとは
SubnetはAvalancheのプラットフォーム上に簡単かつ柔軟にブロックチェーンを構築するための仕組み
Subnetとブロックチェーンの関係
-
SubnetはAvalancheバリデーターのグループであり、ブロックチェーンではない
-
Subnetがブロックチェーンをホストし、コンセンサスレイヤーの役割を担う
-
1つのSubnetで複数のブロックチェーンをホストすることも可能
P-ChainとSubnetとバリデーターの関係 -
Subnetやバリデーターは、プライマリネットワークのP-Chainと呼ばれる、プラットフォームの運営に特化したチェーンによって管理されている
-
Subnet内のすべてのバリデーターは、Avalancheのプライマリネットワークのバリデーターにもなる必要がある
- 2000 AVAXをステーキングすることでバリデーターになることが可能
-
各Subnetは他のSubnetから分離されているため、あるSubnetでの使用量が増加しても、別のSubnetのパフォーマンスに影響を与えることはない
Subnetを作成することで、Avalancheのバリデーター資源を活用しつつ、自由にルールを設定したブロックチェーンを構築することができるようになる
- バリデーター要件、実行ロジック、ガス代体系、VM、インセンティブ設計まで独自にカスタムすることができる
Avalanche Warp Messaging(AWM)とは
- AWMは、Subnet同士を相互運用するための通信規格
- 2022年12月23日にリリースされたBanff 5(Avalanche Go v1.9.5)により、AWMを使った通信が実現できるようになった
仕組み
- バリデーターは署名に利用するキーペアを持っており、公開鍵がP-Chainに登録されている
- 送信するメッセージに対して行われるSubnetのバリデーターのBLS署名から集約署名(BLS Multi-Sigunature)を生成し送信する
- メッセージを受け取ったSubnet Bは、送信元であるSubnet Aのバリデーターの公開鍵を取得する
- 得られた公開鍵をもとに署名を検証し、問題がなければトランザクションを発行する
- AvaLabsの図
@AvaxDevelopersによる解説スレッド より引用
- BLS署名、BLS署名の集約署名の技術を活用
- これらはEthereum PoSのコンセンサスレイヤーでも利用されている
- 通信の形式に細かい指定はない
- 公式が提供しているAWMの利用に対応したVMのリファレンス実装 XSVM を見ると、通信用のAPIを独自に定義している
- 必須となるバリデーターの合意の割合なども、Subnetごとに設定できる
リファレンス実装 XSVM のメッセージ送信APIの使われ方(XSVMのREADME参照)
<< POST
{
"jsonrpc": "2.0",
"method": "xsvm.message",
"params":{
"txID":<cb58 encoded>
},
"id": 1
}
>>> {"message":<json>, "signature":<bytes>}
- P-Chainを利用した検証により、ブリッジやオラクル、その他第三者が提供するサービスに依存することなく通信できる
- 類似プロトコルとしてよく比較されるPolkadot XCMは、より厳格なフォーマットを提供している
- Avalancheは柔軟性を重視する設計思想から、シンプルな規約のみを提供する意思決定をしていると考えられる
- Cosmosもプラットフォームネイティブな通信規格としてCosmos IBCを提供しているが、Cosmos IBCには、データを送受信するブロックチェーン以外への依存を限りなくなくそうとする設計思想があり、相互運用性を実現する仕組みも大きく異なる
まとめ
- Avalancheには、Subnetと呼ばれる、複数のブロックチェーンを高い相互運用性を持って動作させる仕組みが存在する
- Subnetやバリデーターは、プライマリネットワークのP-Chainと呼ばれる、プラットフォームの運営に特化したチェーンによって管理されている
- Subnetを作成することで、Avalancheのバリデーター資源を活用しつつ、自由にルールを設定したブロックチェーンを構築することができるようになる
- AWMはSubnet同士の相互運用を実現する通信規格で、BLS署名の集約署名をP-Chainを介して検証することで、ブリッジやオラクル、その他第三者が提供するサービスに依存することなく通信できる
参考文献
- 公式ホワイトペーパー
- Avalanche-Japaneseによるホワイトペーパーの概要
- 公式ドキュメント What is Subnet?
- 公式Twitter Spaceのまとめスレッド
- OKCoinJapan Youtubeチャンネル 「「誰も気づかない」Avalancheの魅力とは?」
- coinbaseによる解説記事
- 公式によるAWMの利用に対応したVMのリファレンス実装 XSVM
- Skyland Ventures 松本 頌平さんのnote記事
インターオペラビリティとCosmos IBCのいろは Vol.1 【UnUniFi 木村優さん】
Discussion