substrate-contracts-node に RUST製(ink!産)スマートコントラクトをデプロイしてみた
前回、何も考えずに ink! で作成したスマートコントラクトを astar-collator に
デプロイしようとしたが、うまくイカなかったため、今回は substrate-contracts-node を
使用してink! で作成したスマートコントラクトをデプロイしてみる。
お題
ink! の Getting started をこなす。
実技
ひとまず、 getting start に従ってコマンドを打てばできる。
substrate-contracts-node を起動する。
前回 astar-collator を起動した際に見られたようなログが表示される。
polonity@athena:~/workspace/astar/tutorial$ substrate-contracts-node --dev --tmp
2022-02-06 22:19:14 Substrate Contracts Node
2022-02-06 22:19:14 ✌️ version 0.5.0-0ec18d9-x86_64-linux-gnu
2022-02-06 22:19:14 ❤️ by Parity Technologies <admin@parity.io>, 2021-2022
2022-02-06 22:19:14 📋 Chain specification: Development
2022-02-06 22:19:14 🏷 Node name: cool-answer-9144
2022-02-06 22:19:14 👤 Role: AUTHORITY
2022-02-06 22:19:14 💾 Database: RocksDb at /tmp/substrateUdo3Np/chains/dev/db/full
2022-02-06 22:19:14 ⛓ Native runtime: substrate-contracts-node-100 (substrate-contracts-node-1.tx1.au1)
2022-02-06 22:19:15 🔨 Initializing Genesis block/state (state: 0x9a29…4be9, header-hash: 0x1e7f…fd35)
2022-02-06 22:19:15 👴 Loading GRANDPA authority set from genesis on what appears to be first startup.
2022-02-06 22:19:15 🏷 Local node identity is: 12D3KooWH2wT1tYQjSyPbRZkgYJkmbPKWAC25saq4fYRobtZVz38
2022-02-06 22:19:15 📦 Highest known block at #0
2022-02-06 22:19:15 〽️ Prometheus exporter started at 127.0.0.1:9615
2022-02-06 22:19:15 Listening for new connections on 127.0.0.1:9944.
2022-02-06 22:19:16 Accepted a new tcp connection from 127.0.0.1:52882.
ink! のチュートリアルでは、 canvus というGUIを使用してスマートコントラクトを
デプロイしていたが、私の環境ではデプロイに失敗してしまったため、
polkadot.js で substrate-contracts-node に接続する。
以下のURLを叩けばOK。
左上にノードの名前が表示されている。
substrate-contracts-node に接続できていることが分かる。
以下が astar-collator に接続したとき。
様子が違うことが分かる。
当然ながら、substrate-contracts-node は、 dapps staking がevent log として
上がらないのも差として確認できる。
また、以下のような画面の場合は、node とブラウザが接続できていない。
いよいよ、ink! で作った スマートコントラクトをデプロイしていく。
前回と同様に、「ディベロッパー」->「コントラクト」->「Upload&deploy code」を押下
好きなキャラクタを選んで[1]、ink! で作成した hoge.contract を選択したら、Nextを押下
好きな額を入力したいところを我慢して次へ
赤枠 「Sign and Submit」を押下
以下のように表示されれば成功。
なお、以下のように値を 0 以外にすると、エラーとなってしまう。。
(ContractTrapped というエラー。)
これで、 contract を実行できるようになる。
BOB に実行してもらう。
赤枠 ▼を押下。
ここで、 flipper の current value が false であることを確認しておく。(初期値)
続いて 赤枠 ▶exec を押下
Execute !と叫びながら Execute を押下
Sign and Submit を押下
以下のように表示されれば成功。
見事 flipper の値が false から true に変わっている。
終わりに
これで今日のミッションコンプリート。
RUST製のスマートコントラクトを書いて遊べる環境が整った。
後は astar がwasm に対応するのを待つばかり。(応援しています)
しかし、遊ぶのはまた今度にして、次は上記RUST製スマートコントラクトのための
フロントエンドAppを作成してみたいと思う。
できたらまた記事にします!
-
僕は...... Alice ちゃん!!!
↩︎
Discussion