📮
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