👻

[できた]ASTAR Network(local)上に Ink! を使って RUST製 smart contract をデプロイ

2022/02/02に公開

環境

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal
$ rustup -V
rustup 1.24.3 (ce5817a94 2021-05-31)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.58.1 (db9d1b20b 2022-01-20)`

お題

https://docs.astar.network/build/smart-contracts/wasm/smart-contract

注意点

  • ASTAR 公式チュートリアル記載の
     cargo-contract ver 0.11 では cargo +nightly build で失敗する。
  • Ubuntu 20.04.3 LTS で binaryen を apt install すると、古いバージョンが入るのでNG

手順

まずは ink! をインストールする。
インストールの仕方は ink! 公式を参照する。
https://github.com/paritytech/cargo-contract#installation

ここで注意するべきは、 apt とかで binaryen をインストールすると、
ディストリビューションによっては 古いものが入ってしまうので、
最新版をダウンロードして入れることをおすすめする。
ダウンロードした binaryen は path が通っているディレクトリに置いておく。

wget -O binaryen-version_105-x86_64-linux.tar.gz https://github.com/WebAssembly/binaryen/releases/download/version_105/binaryen-version_105-x86_64-linux.tar.gz
tar xzf binaryen-version_105-x86_64-linux.tar.gz 

次に、 ink! をインストールする。
ink! は cargo で cargo-contract をインストールするとついてくる。

rustup update nightly
cargo install cargo-contract --force --locked
cargo contract --help

ink! の プロジェクトを作成する。

cargo contract new flipper

サンプルのスマートコントラクト flipper が自動生成されるので、
甘えて使用させてもらい、このままビルドする。

cargo +nightly build
cargo +nightly test
cargo +nightly contract build

成功すれば、以下のフォルダに成果物ができている
失敗するもまた人生。

$ ls ./target/ink/
metadata.json  flipper.contract  flipper.wasm

これを substrate 上からデプロイできる。

先程ビルドした wasm を選択し、

適当な手数料を入力し、

デプロイすると、

エラーとなる。

なにかが足りないらしい。。


[追記 2022/02/28]

本件、node に問題であったようで、
Astar Collator v3.9.1 ではデプロイできる。

Discussion