Stylus を使用して Rust でスマート コントラクトを作成する方法
参考記事↓
https://docs.arbitrum.io/stylus/stylus-quickstart
最初に必要な準備
Rustのインストール
以下のRust言語のインストールページの指示に従って、Rustツールチェーンをシステムにインストールしてください。インストール後、お好みのコマンドライン・ターミナルからrustup、rustc、cargoの各プログラムにアクセスできることを確認してください。
https://www.rust-lang.org/tools/install
VScodeの拡張機能の準備
エディタやIDEの指定は特にありませんが、Stylusコントラクトを開発するためのIDEとして、Rustのサポートが充実しているVSCodeが推奨されています。
以下のようなRust開発に役立つVS Codeの拡張機能もあるので、参考になれば幸いです。
テストネットETHを取得
Stylus テストネットでテストネット ETH を取得するには、以下の手順に従ってください
https://bwarelabs.com/faucets/arbitrum-stylus-testnet に移動します。
テキストフィールドにウォレットアドレスを入力します。
Claim をクリックし、オプションで2番目のステップに従って追加のテストネットトークンを受け取ります。
これでStylusテストネットにSepolia ETHがあるはずです。
これで準備完了です!
Stylusのプロジェクトの作成
cargo-stylusのセットアップ
cargo-stylusは、Arbitrum StylusプログラムをRustでビルド、検証、デプロイするためのCLIツールです。Rustプログラムの開発に使用する標準Cargoツールのプラグインとして利用でき、一般的なRustワークフローに簡単に統合できます。
以下のコマンドを実行してStylus CLIツールをインストールします
cargo install — force cargo-stylus cargo-stylus-check
2. さらに、以下のコマンドでWASM(WebAssembly)をRustコンパイラのビルドターゲットとして追加します。
rustup target add wasm32-unknown-unknown
3. cargo stylus — helpコマンドでうまく確認します。
以下のような表示になれば成功です。
❯ cargo stylus --help
Cargo subcommand for developing Stylus projects
Usage: cargo stylus <COMMAND>
Commands:
new Create a new Rust project
export-abi Export a Solidity ABI
check Check a contract
deploy Deploy a contract
replay Replay a transaction in gdb
trace Trace a transaction
c-gen Generate C code
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
Stylusのプロジェクトの作成
cargo stylus コマンドには、 new, check ,deploy, export-abiなど、Stylus プログラムの開発と Arbitrum チェーンへのデプロイに便利なコマンドが用意されています。
今回は、Stylusのプロジェクトの作成の際の一般的なワークフローを紹介します。
新しいStylusプロジェクトを作成します。
今回は、stylus-practiceというディレクトリ名にします。
cargo stylus new stylus-practice
2. Stylus プロジェクトが有効かどうかを確認します。
プログラムが正常にデプロイされ、有効どうかを確認するには、cargo stylus check サブコマンドを使用します。
cargo stylus check
このコマンドを実行することで、JSON-RPC エンドポイントを指定し、トランザクションを必要とせずにプログラムがデプロイされ、onchain でアクティブ化されます。
プログラムが成功すると、次のようなメッセージが表示されます。
Finished release [optimized] target(s) in 1.88s
Reading WASM file at hello-stylus/target/wasm32-unknown-unknown/release/hello-stylus.wasm
Compressed WASM size: 3 KB
Program succeeded Stylus onchain activation checks with Stylus version: 1
3. プログラムをオンチェーンにデプロイする準備ができたら、cargo stylus deploy サブコマンドを次のように使用します。
まず、デプロイを実行するのに必要なガスを見積もります
cargo stylus deploy \
--private-key-path=<PRIVKEY_FILE_PATH> \
--estimate-gas-only
Compressed WASM size: 3 KB
Deploying program to address 0x457b1ba688e9854bdbed2f473f7510c476a3da09
Estimated gas: 12756792
4. 次に、実際のデプロイを試みます。
この時、つのトランザクションがオンチェーンで送信されます。
cargo stylus deploy \
--private-key-path=<PRIVKEY_FILE_PATH>
Compressed WASM size: 3 KB
Deploying program to address 0x457b1ba688e9854bdbed2f473f7510c476a3da09
Estimated gas: 12756792
Submitting tx...
Confirmed tx 0x42db…7311, gas used 11657164
Activating program at address 0x457b1ba688e9854bdbed2f473f7510c476a3da09
Estimated gas: 14251759
Submitting tx...
Confirmed tx 0x0bdb…3307, gas used 14204908
トランザクションデータの送信と出力には、さらに多くのオプションがあるため、詳細は cargo stylus deploy — help を参照してください。
5. Solidity ABI のエクスポート
stylus-sdkを使用するStylus Rustプロジェクトには、Solidity ABIをエクスポートするオプションがあります。cargo stylus ツールでは、export-abi コマンドを使用して簡単にエクスポートできます。
cargo stylus export-abi
これでStylusのプロジェクトの作成が完了しました!✨
次回から、Rustのコードを書いて実装していきます!