👻
[できた]ASTAR Network(local)上に Ink! を使って RUST製 smart contract をデプロイ
環境
$ 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)`
お題
注意点
- ASTAR 公式チュートリアル記載の
cargo-contract ver 0.11 では cargo +nightly build で失敗する。 - Ubuntu 20.04.3 LTS で binaryen を apt install すると、古いバージョンが入るのでNG
手順
まずは ink! をインストールする。
インストールの仕方は ink! 公式を参照する。
ここで注意するべきは、 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