【翻訳】Building a Multichain Network with XVM
前置き
この記事は、Astar Networkの公式Mediumに投稿された記事を翻訳したものです。XVMは、EVMとWASMの複数の実行環境を横断してアプリケーションを作ることを可能とする新しいシステムです。現在主流のEVMと、これから来るといわれているWASM、両方のスマートコントラクトを橋渡しできるため、Astarのエコシステムとってはかなり重要な要素だと考えられます。
翻訳本文
Introduction
私たちは、開発者がSolidityまたはink!のいずれかでスマートコントラクトを構築できるようにするだけでなく、EVMとWASMの間で構築することを奨励するマルチチェーンネットワークを構築しています。最初のステップは、他のチェーンで既に成功しているスマートコントラクトで構築されたdAppsのエコシステムを形成することによって、Astar Networkをローンチすることでしたが、我々はこれがAstarやPolkadotの長期的成功のための全面的なソリューションであるとは考えていません。その代わり、私たちはWASMとマルチチェーンスマートコントラクトにベットしています。私たちのチームは、WASMをAstar Networkに導入することにレーザーフォーカスを当てています。最近、私たちはマルチチェーンネットワークを実現するための大きなマイルストーンとして、xvm_palletを使ってEVM-to-WASMで対話させることを達成しました
Inspiration for XVM
XVM(Cross-Virtual Machine)のコンセプトは、Frontierフレームワーク(SubstrateのEVM互換レイヤー)がEVM環境からSubstrate palletとの相互運用のためにプリコンパイルしたコントラクトを導入した時期に、我々のチームが最初に思いついたものでした。その時Hoon(Astar CTO)は、WASMのスマートコントラクトもpallet、つまりコントラクトのpalletなので、このpallet用のインターフェースをプリコンパイルで作れば、EVM上のコントラクトがWASMのコントラクトを呼び出すことができるのではないかと考えたのです。当初、これは単なる思いつきで、ウィッシュリストの一部でしたが、2021年のParity and Friends Crowdcastで、これは現実の目標になりました。私たちのチームは、自分たちが取り組んでいることを話し、共有するために招待されました。当時はあまり見せるものがなかったので、野心的にContract pallet用のプリコンパイルされたコントラクトの簡単なPoCを作り、特にCross-Virtual Machine(XVM)というかっこいい名前を付けられるかどうか試してみることにしたのです。私たちの主要な開発者は、すぐにPoCのプリコンパイル・インターフェースを構築し、EVMからWASMまで引数なしのクロス仮想環境コントラクトを実行しました。この成果をCrowdcastで披露した後、私たちはMulti-virtual machine blockchainに大きな可能性を見出しました。
CosmWasmやNearなど、WASMベースのスマートコントラクトVMは無数にありますが、常にEVMと競合して苦戦しています。私たちは、EVM環境上の既存のdAppsは現在のブロックチェーンの重要な部分であり、WASMの普及を後押しするためには、EVMと競争するのではなく、協力し合うべきだと考えています。それがXVMの背後にあるビジョンです。
The lay of the land on Astar
AstarのCross-Virtual Machineや、Substrateベースの新しいソリューションの話をする前に、ShidenとAstarの現状を整理しておきます。
現在、私たちは他のParachainとのChannelを急速に開放し、Dotsama上でのアセットの移動を容易にしています。ユーザーは、自分の資産をPolkadotのどこで使うかを選べるようになったのです。例えば、近隣のチェーンの流動性プールで自分のネイティブアセットを使い、それによって別の貴重なガバナンストークンを獲得できます。例えば、AthSwap(Astar Native Dex)でGLMR(Moonbeamのネイティブコイン)を使って、aUSD(Acalaのトークン)の報酬を得ることができます。Astarは、チームがプロジェクトを立ち上げ、そのトークンの新しいユースケースを構築するためのスペースとなります。
ShidenでContract palletが使えるようになったことで、開発者は初めてKusamaレイヤー1上でWASM dAppsを構築できるようになりました。これらのdAppsは、他のネイティブなShidenスマートコントラクトと直接対話したり、Substrateフレームワークに組み込まれた機能を実行するpalletを呼び出したりすることができます。Shidenのネットワークはモジュール化され、異なるdAppsやプロジェクトがオープンチャンネルや複雑なスマートコントラクトを通じて互いに活用できるようになります。全てはKusama Relay Chainによって保護され、フォークすることなくアップグレードが可能です。
WASMコントラクトをShidenに持ち込んだのは、WASM開発者向けのスマートコントラクトプラットフォームを構築する第一歩にすぎません。私たちはまた、WASMのスマートコントラクトを構築するためのオールインワンツールであるSwanky Suiteの最初のイテレーションを作成しました。Swankyは、cargo contract CLIやpolkadot.jsなどの既存のツールをベースに、ローカルのテストノード(Swanky node)上でスマートコントラクトを構築するための機能を追加したツールです。開発者が既存のスマートコントラクトを利用してプロジェクトを構築するための環境を構築するためのツールとなり、開発段階での時間を短縮し、我々のネットワーク上で新しいWASM dAppを容易に構築することができます。
Swankyでは以下のようなことが可能です。
即時確定が可能なローカルコントラクト開発ノードのクイックスタート (Swanky Node)
スマートコントラクトとフロントエンドdApps両方のための様々なテンプレートを利用した、新しいプロジェクトの土台(例えば、ink!のための "Truffle")
様々な言語でのプロジェクトのコンパイル (ink!、Ask-Liteなど)
クライアント側でスマートコントラクトと対話するためのRPCテストとnpm経由の統合テストのセットアップ
Dotsamaエコシステム内のパレットコントラクトをサポートするネットワークにスマートコントラクトをデプロイ
ネットワークアカウントの処理
デプロイされたスマートコントラクトに任意の呼び出しを行う
2022年後半にかけて、SupercolonyのOpenBrushと密接に連携し、Rust上のPolkadotのライブラリを広げることで開発の可能性を広げます。私たちの目標は、大規模なコードのライブラリを作成し、近隣のParachainとの接続を継続することで、WASMビルダーがエコシステム全体の流動性と資産に接続するdAppを効率的に構築できるようにすることです。
Shidenの開発者がSwankyを使ってWASMを構築できるようになったとはいえ、まだ制限に直面しています。EVMとWASMのどちらのdAppも、互いに直接対話することはできません。これは、ネットワークが(Turing、Karura、Moonriver XC20で)クロスチェーン統合の急成長をサポートしているにもかかわらず、Solidity開発者がEVMだけを開発することに行き詰まることを意味します。また、アセットとdAppは同じネットワークの両方のレイヤーで2度構築され、互いに相互作用することができず、不便なユーザー体験を生み出し、ShidenとAstarの新しいユーザーを引き付けるというより、むしろ抑止してしまうことを意味します。
What xvm_pallet?
XVMは実験的な開発のための強力なツールで、WASMとEVMスマートコントラクト間の相互作用を可能にします。XVMモジュールを構築する際の課題は2つあります。まず、WASMスマートコントラクト(Substrate contracts_palletを使用)は、Nativeコールの受信と送信のみを期待します(つまり、他のパレットやランタイムからのインタラクションのみ)。そのため、私たちのxvm_palletは、WASMと正常に対話するために、あらゆるEVMコントラクトコールをラップする必要があります。これをEVMアダプターと呼び、完成させます。Astarのリード開発者であるAkruは、私たちのXVM palletを介して、EVMとWASMの相互作用のデモに成功しました。つまり、EVM環境でのイベントが、すべてSubstrateランタイム内で、別のWASMコントラクトを呼び出すことができるようになったということです。
その逆、つまりWASMからEVMへの相互作用もXVMの変換が必要ですが、チェーンの拡張を介して行われます。XCMアダプターは、私たちが今完成させてテストしているものです。これを完成させ、2023年の第2四半期までにShidenで双方向のXVMを使えるようにする予定です。
2つ目の課題は、SubstrateランタイムにXVMを統合することです。開発者がink!コントラクトのメリットを十分に享受できるようにしながら、構築をシンプルに保つことができるため、重要なポイントです。Substrateは、まだ十分に活用されていないフレームマクロを使用しており、ink!の1行のコードで開発者は複数のプリロードされた関数にアクセスでき、自動的に何百行ものコードを記述することができます。XVMソリューションは、Substrate SDK、EVMチェーン(AstarやMoonbeam)、クロスチェーン統合による他のParachainなど、Dotsamaにある未開発のテクノロジーと容易に統合できなければなりません。
解決策は、xvm_pallet標準を構築し、PolkadotネイティブツールにSwanky Suite と OpenBrushライブラリを統合することです。さらに、基本的なWASMスマートコントラクトを書き、フロントエンドUIの開発をサポートし、WASMとXVMを試してみたいという開発者を後押しするドキュメントを提供する予定です。最終的にはXVMを拡張し、Gear、Solanaコントラクト、その他のネットワークのサポートを、価値提案とエコシステムに応じて追加することを検討します。しかし、Substrateの中で構築することは、Dotsamaで一歩前進する方法であり、CosmWasmのような他のプラットフォームで開発することは、私たちの意見では、一歩後退することなのです。
A Multichain Solution for Developers and Users
XVMの最終目標は、PolkadotとKusama上の開発者のための制限を取り除くことです。EVMやWASMといった使い慣れたコードで構築しながら、増え続けるツールを試したり、AstarやShidenのネットワーク上で構築されたプロジェクトと統合したりできるスペースを作るのです。すでにArthSwapのようなプロジェクトが、WASM DEXを立ち上げるスペースとしてShidenに注目し始めています。一方、SiO2 Financeは、Astar、そして潜在的にはPolkadot上で最初のマルチVMレンディングプラットフォームとなることを約束しています。このようなプロジェクトは、スマートコントラクトにXVMを実装することができ、以下の恩恵を受けることができます。
Substrateフレームワークや他のParachainテクノロジーに既にあるコードやコントラクトとのインタラクション
EVM dAppとして現在デプロイされているすべてのプロジェクトとの連携
xcm_palletの統合により、EVMまたはWASMのいずれかでSwankyを使用してプロジェクトを効率的に構築
Polkadotエコシステム全体のアセットとの統合
Astarを通してDotsama以外のdAppやアセットとやり取りしたいユーザーのためのマルチチェーンエクスペリエンスを作成
EVMとWASMにまたがってプロジェクトを構築し、ネットワーク上のアセットとdAppを統合できるように、XVM palletを完成させることを楽しみにしています。ユーザーは単一のUIで対話しながら、Astarの開発者によって書かれた複雑なマルチチェーンスマートコントラクトの恩恵を受けることができるようになります。XVMにより、AstarはPolkadotに見られる技術と対話できる画期的なスマートコントラクトを作成し、ユーザーのためにチェーンを問わない新しいdAppを構築できるネットワークとなります。
About Astar
Astar Network — The Future of Smart Contracts for Multichain.
Astar Networkは、EVMとWASMスマートコントラクトによるdAppsの構築をサポートし、クロスコンセンサスメッセージング(XCM)により、開発者に真の相互運用性を提供します。私たちは、開発者によって、開発者のために作られています。AstarのユニークなBuild2Earnモデルは、開発者が書いたコードと構築したdAppに対して、dAppステーキングメカニズムを通じて報酬を受けとることを可能にします。
Astarの活気あるエコシステムは、すべての主要取引所とティア1 VCによってサポートされ、世界的にPolkadotの主要なParachainとなっています。Astarは、開発者がdAppsの構築を開始するために、すべてのEthereumとWASMのツールの柔軟性を提供します。PolkadotとKusama Networksでの成長を加速させるために、Astar SpaceLabsはトップTVL dAppsのためのインキュベーションハブを提供しています。
この記事が気に入ったらサポートをしてみませんか?