- Developers(開発者ガイド)概要
- 開発の事前準備
- 必須となるRust Crate(クレート)
- Writing On-Chain Code
- Getting Started with Rust
- Getting Started with AssemblyScript
- 基本的なスマートコントラクトをRustで書く方法
- スマートコントラクトのテスト
- スマートコントラクトのアップグレードとメンテナンス
- スマートコントラクトの呼び出し
- コントラクトとセッションコード
- セッションコードの書き方
- セッションコードのテスト
- コントラクトによるイベント発行を有効に
- コントラクトハッシュとパッケージハッシュの使い分け
- Casperスマートコントラクトのベストプラクティス
- Casper JSON-RPC API
- DAppsのビルド
- SDKクライアントライブラリ
- dApp Technology Stack
- ReactのFront-endテンプレート
- URefのアクセス権限とセキュリティへの考慮
- トランザクションへの署名
- スペキュラティブ(推測的)実行によるガス・コストの見積もり
- NCTLを使ったローカルネットワーク設定
- NCTLを使ったスマートコントラクトのテスト
- イベントの監視と消費
- CLIを使ったBlockchainとのやり取り
Getting Started with Rust
これは、Casperスマートコントラクトの初期設定に必要な基本的なツールについてのガイドとなっています。また、スマートコントラクトのサンプルを作成し、ローカルマシン上での基本的なテストの実行を可能にします。
Casperブロックチェーンは、プログラミング言語であるRustをベースに構築され、WebAssemblyに変換されます。このガイドでは、はじめてのコントラクト作成手順について順番に説明していきます。開発環境の構築は、ここに記載のある通りに準備を終えておいてください。
プロジェクトの作成
Casperクレートを使用すると、新しいサンプルプロジェクトをとても簡単に作成できます。例えば、このチュートリアルのためにmy-projectという名前のプロジェクトを作成したいと思います(必要に応じて別の名前を選択することも可能です)。
cargo casper my-project新規に作成されたmy-projectフォルダの中には、contractとtestsという2つのクレートがあります。これは、完成された基本的なスマートコントラクトであり、引数として渡された値をブロックチェーンに保存します。testsクレートは、Casper仮想マシンの実行環境と、基本的なスマートコントラクトのテストを提供しています。
nightly toolchainの使用
my-projectフォルダーへ移動し、rust-toolchainファイルを開きます。ファイルのコンテンツにRustのnightly versionが指定されています。以下は例です。
nightly-2022-08-03
最新のnightly toolchainを、Rustでスマートコントラクトを開発する上ではベストです。詳細は、Rust Documentation on Channels とRust Documentation on Toolchainsをご確認ください。
ここに挙げた例にある様に、ご自分のプロジェクトディレクトリの最上レベルに rust-toolchain を設定することを推奨します。
以下のコマンドでも nightly Rust toolchainをインストール可能です。
rustup toolchain install nightlyAvailable Casper Rust crates
Rustでのスマートコントラクト開発のサポート用に、以下のクレートが公開されています。
- Casper コントラクト – ブロックチェーンとのやり取りをサポートするライブラリ。スマートコントラクトを書く際に必要となるメインライブラリです。
- Casper Test Support – 自分のスマートコントラクトをテストできる仮想マシン
- Casper Types – Rustエコシステムを跨いで使用する型のライブラリ
クレートは、バイナリもしくはライブラリにコンパイル可能な困憊レーションユニットです。
有効なAPIについてのドキュメント
各Casperクレートは、APIドキュメントとhttps://docs.rsに記載のある各関数のサンプルでつくられています。
最新のコントラクトAPIドキュメントは、ここに書かれています。
WASMへのコンパイル
Casperブロックチェーンでは、WebAssembly (WASM)を実行環境にて使用しています。WASMのコンパイルターゲットとしてRustが用意されており、開発者はスマートコントラクトを開発する際にRustのエコシステムツールをすべて利用することができます。
NOTE:
Wasmは、C/C++、C#、Go、Julia、Lobster、およびZIGを含む他の言語の使用を可能にします。my-projectフォルダーに移動し下記コマンドを実行すれば、スマートコントラクトをWASMにコンパイルできます。
cd my-project
make prepare
make build-contractコントラクトフォルダー内に、targetフォルダーがあり、my-project/contract/target/wasm32-unknown-unknown/release/contract.wasmに、コンパイルされたスマートコントラクトがあるかと思います。
Linting(リント)
Casperのコントラクトは、コントラクトをリントするClippy(クリッピ)などのRustツールをサポートしています。ご自由に利用ください。 また、make check-lintコマンドもコントラクトのリントに利用いただけます。my-projectフォルダー内で、このコマンドを実行してください。
make check-lintコントラクトのテスト
コントラクトの作成と共に、Casperクレートは、my-project/testsフォルダにサンプルテストを自動的に作成します。
Casperローカル環境では、コントラクトのテストを実施可能とするインメモリ仮想環境を提供しています。testクレートを実行する際、スマートコントラクトを自動的にリリースモードにてビルドし、Casperの実行環境にてtestsシリーズを実行します。カスタムビルドスクリプトは、build.rsにあります。もう少し詳しく知りたい場合は、ご利用ください。
💡 Note:
テストスクリプトが自動的にコントラクトをビルドする為、開発中はmake build-contractではなく、make testというコマンドのみが必要となります。
テストが実行できたということは、スマートコントラクト環境が正しくセットアップできているということです。
make testコンパイル終了後は、テストが実行されターミナルに下記のようなメッセージが表示されるはずです。
running 2 tests
test tests::should_error_on_missing_runtime_arg ... ok
test tests::should_store_hello_world ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s簡単な例を挙げると、my-project/contract/src/main.rsをエディタで開き、コントラクトの KEY_NAME の値を変更した上で、make testコマンドを再実行します。すると、スマートコントラクトが再コンパイルされ、テストが失敗するはずです。
Video Walkthrough
このビデオチュートリアルは、このガイドのまとめとなっています。
Rustのリソース
下記Rustリソースは、どれも精巧ですのでかなりお薦めです。