📮

AvalancheのSubnet間の通信プロトコル Avalanche Warp Messaging(AWM) の仕組み

2023/07/03に公開

社内の勉強会で、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を使った通信が実現できるようになった

https://twitter.com/avax/status/1605988995917299720?s=20

仕組み

  1. バリデーターは署名に利用するキーペアを持っており、公開鍵がP-Chainに登録されている
  2. 送信するメッセージに対して行われるSubnetのバリデーターのBLS署名から集約署名(BLS Multi-Sigunature)を生成し送信する
  3. メッセージを受け取ったSubnet Bは、送信元であるSubnet Aのバリデーターの公開鍵を取得する
  4. 得られた公開鍵をもとに署名を検証し、問題がなければトランザクションを発行する

https://twitter.com/AvaxDevelopers/status/1668357327328796672

  • 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を介して検証することで、ブリッジやオラクル、その他第三者が提供するサービスに依存することなく通信できる

参考文献

  • 公式ホワイトペーパー

https://www.avalabs.org/whitepapers

  • Avalanche-Japaneseによるホワイトペーパーの概要

https://medium.com/ava-labs-jp/3分で読めるavalancheプラットフォームホワイトペーパーの概要-36b275460fe8

  • 公式ドキュメント What is Subnet?

https://docs.avax.network/learn/avalanche/subnets-overview

  • 公式Twitter Spaceのまとめスレッド

https://twitter.com/Arcade__Max/status/1606032144207212544?s=20

  • OKCoinJapan Youtubeチャンネル 「「誰も気づかない」Avalancheの魅力とは?」

https://www.youtube.com/watch?v=LJixjLex6HY

  • coinbaseによる解説記事

https://www.coinbase.com/ja/cloud/discover/dev-foundations/intro-to-avalanche-subnets

  • 公式によるAWMの利用に対応したVMのリファレンス実装 XSVM

https://github.com/ava-labs/xsvm

  • Skyland Ventures 松本 頌平さんのnote記事
    インターオペラビリティとCosmos IBCのいろは Vol.1 【UnUniFi 木村優さん】

https://note.com/sholana/n/n09687b639fc5

Money Forward Developers

Discussion