Avalancheでスマートコントラクト開発 ~C-ChainでEVMを使ってみる~

Yuya Sugano
22 min readMay 6, 2021

--

AvalancheはDeFiのような金融サービスやエンタープライズアプリケーションをプラグプレイできる一元化したプラットフォームとして機能するブロックチェーンのプラットフォームです。高い相互運用性と拡張性を持ち、複雑なルールセットを持つアプリケーションやカスタムブロックチェーンネットワークを複雑なプロセスなく作成したり、既存のプライベート/パブリックサブネット上に構築することができるようになります。AvalancheのContract Chain(C-Chain)はデフォルトのスマートコントラクトチェーンであり、EVM(Ethereum Virtual Machine)互換のためBSC(Binance Smart Chain)のように既存のEthereumの環境を使用したアプリ開発やア移植を容易にします。既にEthereumの資産のブリッジを可能とするAvalanche-Ethereum-Bridge(AEB)やAvalanche上のDEX(Pangolin)が開発され実利用が開始されています。3月23日のChainLinkのハッカソンでAvalancheのワークショップがあり、そのストリーミング動画で解説されていたハンズオンをやってみましたので備忘録として本記事を残しました。

Avalanche

DeFiのようなDappsの領域ではBSCやAvalancheなどのEVM互換のチェーンとインターオペラビリティ、またEthereumのスケーリングソリューションとEth2.0など複数の複雑な要素が絡み合い環境が形成されてきていますが、AvalancheはデフォルトのチェーンにC-ChainというEVM互換のVirtual Machineを採用しつつも後述するように様々なカスタムチェーンの追加を可能としている点が非常に興味深いです。高い分散性とスループット、秒未満のファイナリティを可能としつつ、高いエネルギー消費や複雑なシャーディングを避けている点にAvalancheの革新性があると思われます。以下、本稿の目次です。

  • Avalancheとは
  • マルチチェーンデザイン
  • Avalanche-Ethereum-Bridge(AEB
  • スマートコントラクト開発

Avalancheとは

AvalancheはAva Labsによって開発されているブロックチェーンプロジェクトです。2020年9月にメインネットをローンチ済みで、Andreessen Horowitz(a16z)やPolychain Capitalなどの投資会社から1800万ドルを調達しました。2020年7月にAvalanche上のネイティブトークンであるAVAXトークンを公開し、トークンセールでは約4時間で4200万ドルを調達することに成功しています。Avalancheは採用されているコンセンサスプロトコルの名称であり、「ナカモトコンセンサス」(堅牢性、規模、分散化)と「クラシカルコンセンサス」(速度、迅速なファイナリティ、エネルギー効率)の利点を組み合わせ、クラスカルコンセンサス、ナカモトコンセンサスに次ぐ新たなコンセンサスファミリの1つとなっています。[1]

Why Avalanche?

Avalancheプロトコルは、Team Rocketによって書かれた論文をもとに構築されたトランザクション検証モデルです。1秒間に4500以上のトランザクションを処理できるスループットと数秒のファイナリティが可能となっています。以下の表のようにクラスカルコンセンサス、ナカモトコンセンサスにおける利点の併合に加えて、Avalancheは51%攻撃への耐性も持ち合わせているとされています。AvalancheではPoWのようなASICによる計算は不要でコスト効率は高く、ネットワークへ参加する障壁も高くはありません。Avalancheは、パブリックテストネットの時点で1,000を超えるブロック生成バリデーターが参加しており、メインネットにおいてもローンチから1週間でメインネット上に500以上のバリデーターを保持するようになりました。[2]

Snowflake to Avalanche
Avalanche Consensus, The Biggest Breakthrough since Nakamoto

PoWやPoSはコンセンサスメカニズムの呼称としてたびたび誤認されてきました。クラシカルコンセンサスは、Practical Byzantine Fault Tolerance (PBFT)、HotStuff、Tendermint/Cosmosのようなコンセンサスメカニズムのことで特定の決定プロセスを開始するリーダーと複数ラウンドによって高スループット、低レイテンシーなファイナリティを実現します。全ノード間通信が必要となるためにコミュニケーションのオーバーヘッドが大きいこと、攻撃者が3分の1以上のネットワークのコントロールを得ると、2重支払いなどの攻撃が可能となることなどの特徴があります。ノード数のスケーラビリティに制限があり、正確なメンバーシップを維持する必要がある場合に脆弱となるため、ノードが自由にネットワークに参加および離脱できる大規模でオープンで許可のないネットワークには適していません。

ナカモトコンセンサスはBitcoinに採用されたことで広く認知されるようになりました。オープンでパーミッションレスなネットワークに適しているクラスカルコンセンサスとは異なり、ナカモトコンセンサスでは確実なファイナリティではなく確率論的なファイナリティを採用しました(既にファイナリティではありませんが)。プロトコルのパラメータを操作することで2重支払いのようなネットワークに対する攻撃の可能性を十分に低くすることができます。ナカモトコンセンサスでは長いチェーンを正と見なすことで確率的ファイナリティとしています。PoWは計算に多くの電気消費を必要とする、またトランザクションに決定性が与えられるためには時間が必要であるなどの特徴があります。[3]

AvalancheはPoSを採用しているブロックチェーンで、ネイティブトークンはAVAXです。Avalancheは固定キャップで最大720百万のAVAXが流通するように設計されています。アカウントモデルではなく、支払いを容易にするためにUTXOモデルを採用し、Segwitのようなトランザクション構造を持ちます。アドレスの可読性を高めるためにBech32アドレスフォーマットを使用しています。ネットワーク手数料は、基本的にネイティブトークンであるAVAXで支払われますが、トークンはバーンされることで永遠に供給量が減少し、トークン保有者にとってのAVAXの希少性が継続的に高まるようになっています。[4]

マルチチェーンデザイン

Avalancheは、重要な機能の役割を分割し、異なるデータ構造を採用する3つのブロックチェーンを持つマルチチェーンフレームワークを採用しており、開発者はアプリケーションに対して最大限の柔軟性と制御を行うことが可能となります。プライマリーチェーンはExchange Chain(X-Chain)、Contract Chain(C-Chain)、Platform Chain(P-Chain)でC-Chainがデフォルトのスマートコントラクト用のチェーンです。C-ChainはEVM(Ethereum Virtual Machine)互換でSolidityによるスマートコントラクトやEthereumツールとの完全な互換性を持ちます。

チェーンは個別のVirtual Machineのインスタンスで、VMやWASMなどの複数のカスタム仮想マシンがサポートされているためチェーンはユースケースに応じた機能を持つことができます。Avalancheは様々なサブネットで構成され、サブネットと呼ばれるカスタムブロックチェーンネットワーク上に配置され、「一連のブロックチェーンの状態に関するコンセンサスを達成するために協力して働くバリデータの動的なセット」で構成されます。バリデータは少なくともプライマリーチェーンの3つを含むサブネットのメンバーとなる必要があります。

各バリデータ―は少なくともプライマリーチェーンのメンバーですが、その他のチェーンについてはアプリケーションに応じて動的に参加することが可能です。プライベートサブネットの作成によって、アプリ開発者は実装のルール、経済性、参加者、セキュリティを柔軟かつ詳細に設定することができるようになります。Avalancheは様々なサブネットで構成され、1つの相互運用可能なネットワークを形成するブロックチェーンのプラットフォームとなることを前提としています。[5]

X-Chain — スマートデジタルアセットの作成と取引のための分散型プラットフォームとして機能するAvalanche Virtual Machine(AVM)のインスタンスです。トランザクションが時系列やブロックの高さによって編成される従来のブロックチェーンとは対照的に、AvalancheのX-Chainは有向非周期グラフ(DAG)です。アセットの作成にはAVAXによる手数料の支払いが必要ですが、これは前述の通りバーンされます。

C-Chain — EVMのインスタンスがあるチェーンです。EVM互換でMetaMask、Web3.js、Remix、Truffle Suite、Embark Platformなどの分散型金融(DeFi)の成長を支えたEthereumツールをそのまま使用できます。既存のEthereumアプリケーションはAvalancheから容易に移設可能で、毎秒数千件のトランザクションを処理し低いガス料金で、Solidityの容易な動作などの利点を享受することができます。

P-Chain — Avalanche上のメタデータチェーンであり、ステーク、ネットワーク間のバリデータの調整、カスタムサブネットの作成を担当します。全てのAvalancheのバリデーターはP-Chainのステークに参加してコアネットワークのセキュリティを確保しますが、各バリデーターは、ダイナミックまたはプライベートなバリデーターセットを形成してサブネットを運用することができます。

各サブネットは、独自のトークンや手数料などの料金体系を設定できます。ステークキングや取引手数料をAVAX、ステーブルコイン、独自のトークンによる支払いに設定することもできます。Avalancheはコンセンサスプラットフォームであるため、プロジェクトは既存のトークンやアプリケーションを移植してAvalanche上で使用することができます。誰でもAVAXでサブスクリプションスタイルの料金を支払うことで独自のサブネットを作成することができ、新しいブロックチェーンを作成するために既存のサブネットを使用することも可能です。サブネットの作成とブロックチェーンの料金は両方ともAVAXで支払われ、トークンはバーンされます。バリデータは3つのプライマリーチェーンに加えて独自のサブネットなど複数のサブネットを検証可能です。

Avalanche-Ethereum-Bridge

Avalanche-Ethereumブリッジは「AvalancheとEthereum間でERC-20とERC-721のシームレスな転送を可能にする双方向のトークンブリッジ 」です。EthereumベースのアセットをAvalanche上のDappsで使用するために、ユーザーはこれらのアセットをChainBridgeコントラクトでロックし、Avalancheネットワーク上で同等のトークンをミントすることができます。ブリッジによる移転は2つ程度のトランザクションで完了します。[6]

2021年2月8日にAvalanche-Ethereum Bridge(AEB)がローンチして以来、Avalancheにおけるスマートコントラクトのアクティビティは急増しており、トランザクション数は1051%増の626,000件以上、ユニークウォレット数は1,752%増の39,000件以上となっています。Avalanche上の分散型取引所であるPangolinではEthereumのアセットの流入が増加しており、300万ドル程度の流動性が現在提供されています。

ETH and ERC-20 tokens can be bridged between the Ethereum and Avalanche networks (source: Avalanche)
Pangolin Protocol Analytics

DeFiを利用する上でのEthereumのガス代は小口ユーザにはまだまだ高く、BSCやPolkadotなどのブロックチェーンへのアプリ移行が進んできています。BSCの採用の裏にはEVM互換という強みや安価なトランザクションといったメリットがあったと考えられますが、AvalancheのC-ChainもこのEVM互換によってイーサリアムキラーのダークホースとなる可能性が高いと思われます。Avalahcheの公式記事ではAvalancheはイーサリアムキラーではなくEthereumを補完する存在であると言っていますがAvalancheはEthereumのアプリやユーザを奪うポテンシャルは非常に高いように感じられます。

四半期レポート 2021年 Q1 — CoinGecko

Pangolinの他にも既存のDeFiサービスなど多くのDappsがAvalanche上でのローンチを計画しています。既に発表のあったDappsには以下のようなものがあります。ファイナリティも短く、手数料も安いためAMMを採用するSushiSwapのようなアプリではAvalancheは妥当な選択となるでしょう(SushiSwapはマルチチェーン指向で、BSC、Fantom、Polkadotなどへ展開中)。

スマートコントラクト開発

既にみてきたようにプライマリーチェーンの1つであるC-ChainはEVM互換で、MetaMask、Web3.js、Remix、Truffle Suiteなどの分散型金融(DeFi)の成長を支えたEthereumツールをそのまま使用することができます。本稿ではChainLinkハッカソンでストリーミングされたAvalancheワークショップの動画を元にC-Chain上でのスマートコントラクト開発を実施してみました。デモはHardHatのプロジェクトのようです。[7]

メインネット、テストネットやAvashを利用したローカルネットの設定を行うことでMetaMaskでC-ChainのRPCエンドポイントへ接続することが可能です。今回は『Fuji Testnet』を使用するので以下のエンドポイントを事前に設定しておきます。Faucetから無料でテストネット用のAVAXを入手可能です。[8]

主な開発ツール:

  • Avalanche Wallet: Avalancheの各資産を保管するためのシンプルで安全な、非保管型ウォレット
  • AvalancheGo: AvalancheのGo言語によるフルノード実装、JSON RPCを提供
  • Avalanche Explorer: Avalancheネットワークでトランザクション、アドレス、およびその他のプラットフォーム活動を検索できる分析ツール
  • Avascan: Avalancheの為の独立したブロックチェーンエクスプローラー
  • Avash: Avalancheのローカルブロックチェーン環境(EthereumのGanacheのようなツール)
  • VScout: Avalancheサブネット(ダイナミックバリデータプール)を探索するための分析ツール
  • AvaxMap: Avalanche上で実行されているアクティブなノードを確認できる探索ツール

yarnnode のバージョンがローカルで若干古いですが、必要なパッケージ群は問題なくインストールできました。

$ git clone https://github.com/ava-labs/avalanche-smart-contract-quickstart.git
$ cd avalanche-smart-contract-quickstart/
$ yarn -v
1.13.0
$ node -v
v13.7.0
$ yarn

contracts/Coin.sol を適宜書き換えます。ここではこのようなコードへ変更してみました。OpenZeppelinを使用したERC-20トークンのコードです。

hardhat.config.jsfuji ネットワークの箇所にFaucetからAVAXを送付したアドレスの秘密鍵を設定します。以下のコマンドでアドレスとアドレスのバランスが確認可能です。

$ yarn hardhat accounts --network fuji
0x52D094C4F822E69dc62714FF77e18a62f2C67412
Done in 1.66s.
$ yarn hardhat balances --network fuji
0x52D094C4F822E69dc62714FF77e18a62f2C67412 has balance 40000000000000000000
Done in 2.58s.

コードをコンパイルしてデプロイします。デプロイ先のネットワークを --network fuji で間違えないように指定してください。デプロイできたのでエクスプローラでデプロイされたコントラクトが確認できます。

$ yarn compile
$ yarn deploy --network fuji
Coin deployed to: 0xBc84b5CC488c544Dbd54A1b001b3a79FB22Bc6B8
Done in 8.22s.
Transaction Hash

Fuji TestnetにTESTというシンボルのトークンがミントされていることが確認できました。AvalancheのC-ChainにはENSやChainlinkなど既存のEthereumのEVMで使用できるプロトコルがまだ統合されていませんが、実装は現在進んでいるということです。というわけでEthereumにおけるSolidityの開発とほぼ同じ要領でAvalancheのC-Chainでの開発が行えることが分かりました。

Avalancheのミッションは「金融業界における共通の言語及び共通のインフラストラクチャとなり金融市場を最適化すること」であり、Webの世界で言うところの“HTTP”や“Amazon Web Services”のような役割の担い手となることである、と言われています。詳細は以下の『AVAが望むビジョンと幾つかのエピソード』で述べられていますが、価値のインターネットというキーワードは相互運用性等といったブロックチェーンの次の方向性を示唆しているように見えます。[10]

BSCやAvalanche C-Chainのような高スループットで手数料の安いチェーンによってEth2.0の登場は予想よりもインパクトが薄いものになるかもしれません。皮肉にもEVMを搭載するEthereumよりもEVM互換のブロックチェーンプラットフォームのほうが利用が増え、近い将来トラクションを獲得しEth2.0を結果的に駆逐する可能性があると考えられます。AthereumはAVA上で実行されているEthereumのフォークですが、これはEth2.0が目指しているほとんどの目標をスペック上では達成しているようです。[11]

まとめ

  • Avalancheはコンセンサスプロトコルの名称で、「ナカモトコンセンサス」(堅牢性、規模、分散化)と「クラシカルコンセンサス」(速度、迅速なファイナリティ、エネルギー効率)の利点を組み合わせた新たなコンセンサスメカニズムである
  • AvalancheのネイティブトークンであるAVAXはサプライに上限があることに加えて、トランザクション手数料、アセットの生成の費用はAVAXで支払われバーンされるために稀少性が増加していくと考えられる
  • Avalancheは3つのプライマリーチェーンを含むマルチチェーンフレームワークを採用しており、開発者はアプリケーションに対して最大限の柔軟性と制御を行うことが可能となる(Exchange Chain、Contract Chain、Platform Chain)
  • Ethereumの開発ツールであるTruffleなどEthereumの開発資源を流用しデプロイできるためEVM互換であるBSCなどのブロックチェーンの採用やアプリの移行が多くなっている、Avalanche C-ChainもEVM互換のチェーンとなっている

--

--

Yuya Sugano
Yuya Sugano

Written by Yuya Sugano

Cloud Architect and Blockchain Enthusiast, techflare.blog, Vinyl DJ, Backpacker. ブロックチェーン・クラウド(AWS/Azure)関連の記事をパブリッシュ。バックパッカーとしてユーラシア大陸を陸路横断するなど旅が趣味。

No responses yet