📝

ASTAR Network のチュートリアルをやる

2022/01/29に公開

今話題の ASTAR Network の Local Network にスマートコントラクトをデプロイしてみた。

https://coinpost.jp/?p=315037

今回のお題

以下のチュートリアルをやってみる。
最終的にlocal network 上に smart contract をデプロイできれば優勝。

https://docs.astar.network/tutorial/develop-and-deploy-your-first-smart-contract-on-aster-shiden-evm

環境

  • Windows11 (10.0.22000)
  • WSL2 (ubuntu)

事前準備

実技

ASTAR の build

WSL 上でASTARをビルドする。以下のREADME の Building From Source を実行する。

https://github.com/AstarNetwork/Astar

rust を入れておく。

https://www.rust-lang.org/tools/install

後は "building-from-source" に沿ってやればいけた。

./target/release/astar-collator がビルド成果物。

local network 内でASTAR を動かす

公式チュートリアルでは、 shiden をベースに記事が書かれているが、astar-collator に読み替えてやってみる。

./astar-collator --port 30333 --ws-port 9944 --rpc-port 9933 --rpc-cors all --alice --dev

実行成功すると、以下のようにログ出力される。

polonity@xxxx:~/workspace/astar/tutorial$ ./Astar/target/release/astar-collator --port 30333 --ws-port 9944 --rpc-port 9933 --rpc-cors all --alice --dev
2022-01-29 13:08:32 Astar Collator    
2022-01-29 13:08:32 ✌️  version 3.4.0-934b40e0-x86_64-linux-gnu    
2022-01-29 13:08:32 ❤️  by Stake Technologies <devops@stake.co.jp>, 2019-2022    
2022-01-29 13:08:32 📋 Chain specification: Development    
2022-01-29 13:08:32 🏷 Node name: Alice    
2022-01-29 13:08:32 👤 Role: AUTHORITY    
2022-01-29 13:08:32 💾 Database: RocksDb at /tmp/substrateuO65Ix/chains/dev/db/full    
2022-01-29 13:08:32 ⛓  Native runtime: astar-local-1 (astar-local-1.tx1.au1)    
2022-01-29 13:08:32 🔨 Initializing Genesis block/state (state: 0xc0d7…ad61, header-hash: 0x0ea8…3650)    
2022-01-29 13:08:32 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.    
2022-01-29 13:08:33 ⏱  Loaded block-time = 2s from block 0x0ea8f0dddd09ae232b0b843c8b660c5c5cde34174e30cd78d038de010d2c3650    
2022-01-29 13:08:33 Using default protocol ID "sup" because none is configured in the chain specs    
2022-01-29 13:08:33 🏷 Local node identity is: 12D3KooWKipwnNy4cJsLFdQgMATxUhh5tpcU2kmETogYBsN1EyTm    
2022-01-29 13:08:33 📦 Highest known block at #0    
2022-01-29 13:08:33 〽️ Prometheus exporter started at 127.0.0.1:9615    
2022-01-29 13:08:33 Listening for new connections on 127.0.0.1:9944.    
2022-01-29 13:08:34 🙌 Starting consensus session on top of parent 0x0ea8f0dddd09ae232b0b843c8b660c5c5cde34174e30cd78d038de010d2c3650    
2022-01-29 13:08:34 🎁 Prepared block for proposing at 1 (1 ms) [hash: 0xc5ec8435dc8dffd17bcbb2969ecf329eb8e3a02c9a20cda62516680a956d1a1d; parent_hash: 0x0ea8…3650; extrinsics (1): [0x565a…930d]]    
2022-01-29 13:08:34 🔖 Pre-sealed block for proposal at 1. Hash now 0xed4d380fbbdf26494ecef4b270e088d7b61d060d80bffba5675b7e815f5357f4, previously 0xc5ec8435dc8dffd17bcbb2969ecf329eb8e3a02c9a20cda62516680a956d1a1d.
・・・

ASTAR の状態をWEBブラウザで確認する

https://polkadot.js.org/apps/?rpc=ws%3A%2F%2F127.0.0.1%3A9944#/explorer にアクセスしてみる。

こんな画面が表示されると正常。
ブロックが連鎖していくようすが分かる。
ここで、 ずっと以下の画面から遷移しない場合は、WSL2 がローカルポートフォワーディングする設定となっているか確認する。
また、WSL2 内の google-chorome を起動して、上記アドレスにアクセスしてみて、同じ状況でないなら、確実に WSL2 の設定が原因と切り分けられる。
※WSL 上で google-chrome をGUIで起動するのにも設定が必要。
 やり方に関しては割愛する。

local network 内で token をやり取りしてみる

local network 上で token をやり取りしてみる。

公式チュートリアルでは metamask wallet のアドレスを https://polkatools.hoonkim.me/index.html で変換しているが、
このサイトに接続できない。。。orz

公式チュートリアルでは、 metamask を使用しているが、私は使えなかったので困った。。
(metamask を使用する上で必要な H160 address(0xhogehoge) を SS58(FugaFuga) に
変換するサイトに接続できなかった。。)
というわけで、ここから公式チュートリアルで敷かれたレールから降りて、別ルートを開拓することとなる。


[2022/03/28 追記]
subscan で自分の H160 を検索すると、 SS58 アドレスを確認できるみたい。
https://astar.subscan.io/


[2022/06/13 追記]
polkadot-js でも変換可能。
以下の記事が大変参考になる。
https://medium.com/astar-network/using-astar-network-account-between-substrate-and-evm-656643df22a0


ここで、実際の ASTAR Network でも metamask を直接使用することができず、
polkadot 系の wallet を使用していたことを思い出す。

気を取り直し、polkadot に対応した wallet で試してみる。
私は実際の ASTAR ネットワークでも使用している clover wallet を使った。

https://clover.finance/

使い方は割愛する。

clover wallet を作成できたら、portal に接続してみる。

https://portal.astar.network/#/balance/wallet

上記ページにアクセスすると、clover wallet を接続するかの
確認ダイアログが表示されるので、OKする。

下記の赤枠からネットワークを Local Network に変更する。

すると、以下のような画面を確認できる。

再び以下のページにアクセスしてみると、clover wallet が起動する。
接続し、以下赤枠の「送信」を押下する。

すると、token の送信先に現在接続している clover wallet が出てくるので、選択する。

試しに100 ASTL 送信してみる。

送信に成功すると、ウィンドウ右上にOKみたいなノリのアイコンが表示される。

portal も確認する。

先に行った送信がうまく行っていれば、ASTL も増えている。

この Balance は、当然ながら、 起動中の astar-collator を停止すると消える。

astar-collator のコマンドオプションに

--base-path <path to save blocks>

というのがあるので、多分、 block をどこかに保存し、起動時に読み込めばイケるかもしれない(未検証)

ちなみに、 portal からも Alice や bob にトークンを送信することができる。

smart contract をデプロイする

時は満ちたので、Remix にアクセスする。
https://remix.ethereum.org/

公式チュートリアルの通り、ファイルを追加し、実装をコピペする。
今回は、 ./contracts/astr_tutorial.sol というファイルを作成した。

Remix は clover wallet とは繋がらず[1]、metamask とつながったので、metamask wallet で 上記スマートコントラクトで実装されているトークンをmint する。
mint のために gas fee が必要なので、portal にて clover wallet -> metamask wallet に少し token を送る。以下のように、metamask 内で 送られてきたトークンを確認できる。

※ metamask 内の token名が ASTR なのは、ミスっているだけなので読み飛ばしてください!

いよいよ スマートコントラクト を Deploy する。
Remix 上のDeploy を押すと metamask 内でコントラクトの展開に対する gas fee の確認画面が表示される。

ブロックチェーン上に展開したコントラクトの情報が刻まれる。

先程のスマートコントラクトでmetamask wallet で
mint したトークンを確認するため、
トークンを metamask に追加する。
スマートコントラクトのアドレスは赤枠部なので、
これをコピーし、metamask 内でShiden local に対してトークンを追加する。

すると、無事、TSTが付与されている。🎉

最後に

ここまで、この記事を書きながらざっと2hr。
ただ、 metamask で local network に接続できなかったくだりで1.5hr近く費やしたので、
公式チュートリアルに記載ある通り、30分あれば local network 内にスマートコントラクトを
デプロイするところまでイケる!はず!!!笑

ここから、スマートコントラクトを思うがままに実装して遊んでみようと思う。

脚注
  1. もしかしたら策があるかもしれないが、私は疲れた。。。 ↩︎

Discussion