見出し画像

Astar PortalでのXCMの使い方

こんにちは、you425です。
ついにPolkadotでフル機能ではないもののXCMが使えるようになり、AstarやShidenに資産を移動することが出来るようになりました。

この記事では、公式のドキュメントに沿ってやり方を説明しつつ、補足や注意事項を追記していきます。

また、XCMに関してはPolkadotに関する理解があるとスムーズに頭に入ってくるので、知らない方は以前書いた記事を読んでおくことをお勧めします。


XCMの概要

XCMは、相互運用可能なネットワークにおいて、どのようにメッセージ転送を行うべきかのフォーマットです。 Cross-Consensus Messagingは、チェーン、スマートコントラクト、パレット、ブリッジ、そしてSPREEのような(ブロックチェーン間で)断片化されたエンクレーブの間で行われます。

SPREE(共有保護ランタイム実行エンクレーブ)
ガバナンスやParachainを介してPolkadot(Relaychain)にアップロードされるロジックのフラグメントです。
XCMの初期状態では、Parachain間で何かしらのコードを送信する場合に、受信側のParachainがどのようにコードを実行するかを保証できないため相手先のParachainにトラストが発生していました。
そのため、RelaychainのSPREEモジュールにコードをアップロードしておくことで、想定している内容でトラストレスかつ確実に実行できるようにしました。

例えると、小売業者Aが製造業者Bにスフレを作るように依頼するとします。
しかし、それだけではどのようなスフレが作られるかは分かりません。
そのため、データベースに希望のスフレのレシピをアップロードしておき、それを参照して製造してもらうようにします。
この場合スフレを作る依頼がXCMP、レシピがSPREE、アップロードしてあるデータベースがSPREEモジュールということになります。

参考:https://wiki.polkadot.network/docs/learn-spree

XCMの意義は、PolkadotのネイティブコインであるDOTが、Polkadotネットワーク上のすべてのParachain間で取引、送信、合成できる画期的な機能に起因しており、KSMがKusamaにとってそうなるのと同じです。
ここでは、PolkadotからAstar Portal上にXCMを経由してDOTを転送する方法を説明します。ShidenのKSMも同じ手順でできます。
また、HRMPは近々登場する予定です。現在、最初のアセットとしてDOTを転送する機能がありますが、数週間後にHRMPが使えるようになると、任意のトークンになります。

HRMP(Horizontal Relay-routed Message Passing)
XCM(Cross-Consensus Message Format)には
・VMP (Vertical Message Passing)
→さらに分けるとUMPとDMP、RelaychainとParachain間の通信
・XCMP (Cross-Chain Message Passing)
→ParachainとParachain間の通信
の3種類があります。
XCMPが実装されるまでの間、XCMP-Liteとも呼ばれるHRMPを利用してParachain間で通信を行います。
HRMPはXCMPの代用品であり、Relaychainへの負荷が高いためXCMPが利用可能になると廃止されます。

参考:https://wiki.polkadot.network/docs/learn-crosschain

重要なことは、XCMが2つのシステム間の通信言語として設計された汎用メッセージ・フォーマットであることです。その名の通り、必ずしもSubstrateベースやDotsamaチェーンだけに縛られるものではなく、あらゆるコンセンサスを利用するシステムで採用・利用することが可能です。


必読!!注意事項

Existential Deposit(実存残高)を意識する

PolkadotやKusamaにはExistential Deposit(実存残高)というものが存在します。
Polkadotでは1DOTが、Kusamaでは0.0000333333KSM以上ウォレットに残っていないと、DOTやKSMが徴収されアカウントがノンアクティブ(削除されるわけではない)になります。
これは、ブロックチェーンのリソースを節約するためです。
実存残高がない場合使われていないウォレットだと判断されステータスを削除し無駄を減らします。
そのため、ウォレット内のDOTやKSMが規定量を下回らないようにする必要があります。
再度ウォレットに残高を作れば復活しますが、ガス代と割り切って残しておきましょう。
推奨:Polkadot:1.05DOT、Kusama:0.00004KSM

執筆現在(2022/05/19)は一方通行

執筆現在、XCMでAstarやShidenに持ってきたDOTやKSMは戻すことが出来ません。さらに、EVMアカウントに入れたDOTやKSMはNativeアカウントに戻すこともできません。今出来る動きは以下のようになります。
Relaychain>Astar Native>Astar EVM
Relaychain>Astar EVM
Nativeアカウント間やEVMアカウント間は通常通り転送可能です。


PolkadotからAstarへのXCM転送

Assetsページに行くと、XCM Assetsパネルが有ります。

Astar Asset Portal

受け取りアカウントの(ASTR)の残高が0でないことを確認する必要があります。なぜなら、アセットパレットからのアセットは、nonceが0(または残高が0)のアカウントに転送することができないからです!

XCMボタンを押すと、XCMポップアップが出ます。

XCM Transaction UI

ここでは、PolkadotからAstar NetworkにDOTを送信したいと思います。タブが2つあり、1つはNativeアカウントへ、もう1つはEVMアカウントへ送信します。リレーチェーン(DOT)から送信できる残高を確認することができます。
送信する金額を入力し、確認ボタンを押します。取引にサインするためのポップアップが表示されます。

入力された金額からガス代が差し引かれますので、ご注意ください。振込金額は、ガス料金の見積もりで調整してください。

PolkadotからAstarへの転送

トランザクションが確認されるまで待ちます。確認後、再度XCMの資産を確認すると、XCMのウォレットにDOTがしっかり送られていることが確認できます。

XCM wallet

転送ボタンをクリックすると、他のアカウントに資産を転送するポップアップが表示されます。


PolkadotからAstar EVMへの転送

Assetsページに行くと、XCM Assetsパネルが有ります。

Astar Asset Portal

受け取りアカウントの(ASTR)の残高が0でないことを確認する必要があります。なぜなら、アセットパレットからのアセットは、nonceが0(または残高が0)のアカウントに転送することができないからです!

XCMボタンを押すと、XCMポップアップが出ます。このチュートリアルでは、Deposit to EVMを使います。

XCM Transaction UI

受信したいEVMアドレスを入力し、送信したい金額を入力し、確認ボタンを押してください。取引にサインするためのポップアップが表示されます。

EVMアカウントへのDOTの送信

トランザクションが確認されるまで待ちます。確認後、DOTトークンをEVMウォレットに追加することができます。XC20をMetaMaskに追加する方法については、次のセクションで詳しく説明します。


MetamaskでのXC-20の管理

Assetsページに移動したら、MetaMaskのアカウントでログインして、すべてのアセットを確認します。

Astar portal

上のスクリーンショットにあるように、EVMアカウントにDOTアセットが入っています。では、このアセットをMetaMaskに追加してみましょう。

Import tokensをクリックすると、以下の情報がインポートされます。

  • Token Contract Address: 0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF

  • Token Symbol: DOT

  • Decimals: 10

MetamaskをDOTに追加

DOTアセットの追加とインポートが完了すると、ウォレットに表示されます。対応アセットの全リストはこちらで確認できます。


いいなと思ったら応援しよう!