見出し画像

【完全保存版】Astar のXVM を体験してみよう!

1 コンパイルを行う

1 git clone 

下のように、git cloneを行います。

git clone https://github.com/ytakahashi2020/astar_xvm.git

2 コンパイルを行う

下のように、「erc20」フォルダに行き、コンパイルを行います。

cd ink-xvm-sdk/contracts/erc20
cargo contract build  

「~.contract」というファイルがデプロイように使うものです。

2 デプロイを行う

1 テストトークンを取得する

事前にテストトークンを取得します。

やり方は、こちらをご参照ください。

2 事前にsolidityのコントラクトをデプロイする

事前に、ERC20のコントラクトをデプロイします。

作り方がご不明の場合は、こちらをご参照ください。

なお、EVMでのShibuyaの取得方法については、こちらをご参照ください。

3 デプロイする

では、こちらのSubstrateからデプロイしていきましょう。

「Add New Contract」から「Upload New Contract Code」を選択

実行するアカウントを選択し、下の箇所を選択します。

ここで、第1章第2節でできた、「~.contract」のファイルを指定します。

これで、このコントラクトの関数が表示されます。

「Next」を選択

事前にデプロイしていたコントラクトアドレスをコピーします。

コントラクトアドレスを貼り付けて、「Next」

「Upload and Instantiate」を選択

これでWASMコントラクトデプロイされました。

3 操作の確認を行う

ここでは、WASMコントラクトから、EVMのコントラクトの値を取得できることを確認します。

下のように、「totalSupply」を確認すると、「0」となっています。

これは、EVMのコントラクトでまだミントを行っていないためです。

では、下のように、EVMのコントラクトで、ミントを行ってみます。

EVM側「totalSupply」がこのように反映されました。

WASM側でも見てみましょう。

このように、EVMの値を反映していることが確認できました。

4 XVMの仕組みを学ぼう

なお、詳細は、こちらの記事をご確認ください。

1 概要について

まずは、下のように、水色の「Pallet」と紫色のインターフェースが存在しています。

真ん中の「XVM Pallet」を通じて、やり取りを行います。

WASMコントラクトから行う場合は、下のような流れを取ります。

つまり、WASM側としては、「Chain Extension」を経由します。

2 Chain Extensionについて

実際の連携部分はこの部分になります。

下のように、「extension」Chain Extension部分)から「xvm_call」を実行しています。

具体的には、この部分になります。

3 どのVMと連携するか

次に、どのVM(Virtual Machine)と連携するのかを設定します。

EVMには「0x0F」という値が割り当てられています。

下のようにして、どのVMと連携するのかを設定しています。

4 どのコントラクトと連携するか

次は、どのコントラクトと連携するかです。

下の図では、dAppsとありますが、dAppsの中のどのコントラクトと連携させるのかを設定します。

下のように、EVMのアドレスを設定しています。

5 どの関数を実行させるか

次にそのコントラクトのどの関数を実行し、引数として何を渡すのかを設定します。

それが、下の部分です。

引数を含めた、エンコード済みの値を設定します。(total_supply関数の場合は、引数はありません。

これにより、XVMを行うことができました。

詳細については、こちらの記事をご確認ください。

以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊