🤚
solidity を solang でwasm にコンパイルして astar-collator にデプロイする
環境
- windows 11
- WSL2 Ubuntu 20.04
- astar-collator 3.6.0-08c5843f-x86_64-linux-gnu
実践
以下のチュートリアルをやってみる。
今回もたくさん怒られながらやった。
が、solang のインストール以外は簡単なお仕事であった。
solang のビルド
以下のページを参考に、solang をインストールする。
今回のエラー達
- llvm のバージョンが足りない
Compiling pest_generator v2.1.3
error: No suitable version of LLVM was found system-wide or pointed
to by LLVM_SYS_120_PREFIX.
以下から llvm をダウンロードして任意のディレクトリにインストールして解決。
- tower-lsp が古い?
Compiling tower-lsp v0.14.1
error[E0308]: mismatched types
--> /home/hoge/.cargo/registry/src/github.com-1ecc6299db9ec823/tower-lsp-0.14.1/src/lib.rs:108:1
|
108 | #[rpc]
| ^^^^^^ expected enum `std::option::Option`, found enum `Id`
|
= note: expected enum `std::option::Option<Id>`
上記、ソースコードからbuild すれば回避可能であった。
すると、以下のようなエラーに見舞われる。
- libxml2 が無いよ
s/solang-ce72bae96e48c656" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-Wl,-O1" "-nodefaultlibs"
= note: /usr/bin/ld: cannot find -lxml2
collect2: error: ld returned 1 exit status
なので、 xml2 をインストールする。
sudo apt install libxml2-dev
solang ビルド終わり
以下の成果物ができていれば成功。
$ ./target/release/solang -V
solang version v0.1.9-134-gcfb502f2
solang で flipper をコンパイルする
チュートリアル通り、以下のコマンドを実行する。
wget https://raw.githubusercontent.com/hyperledger-labs/solang/master/examples/flipper.sol
solang flipper.sol
すると、以下のように怒られる。
$ solang flipper.sol
error: The following required arguments were not provided:
--target <TARGET>
USAGE:
solang [OPTIONS] --target <TARGET> <INPUT>...
For more information try --help
target を指定してくれ、と。
solang --help でもっと情報を集める。すると、以下のように書かれている。
--target <TARGET>
Target to build for [possible values: solana, substrate, ewasm]
astar は substrate ベース?[1]なので、 substrate を指定して、以下の様に実行する。
solang --target substrate flipper.sol
すると、以下の成果物を得られる。
$ls
flipper.contract flipper.sol flipper.wasm
後は、以下の記事通り、 flipper.contract を polkadot.js 上でデプロイできる。
後は煮るなり焼くなり好きに楽しむ。
-
この表現が正しいか自信ないっす。。。substrate のどのパッケージまで使用しているかをちゃんと調べたい。 ↩︎
Discussion