見出し画像

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ワークフローに簡単に統合できます。

  1. 以下のコマンドを実行して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のプロジェクトの作成の際の一般的なワークフローを紹介します。

  1. 新しい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のコードを書いて実装していきます!

この記事が気に入ったらサポートをしてみませんか?