- 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とのやり取り
NCTLを使ったローカルネットワーク設定
NCTLは、ネットワーク/ノードコントロールの略です。NCTLは、CLIアプリケーションの1つでして、開発中に複数のローカルCasperネットワークのセットアップやコントロールが可能になります。多くの開発者は、ブロックチェーンへのデプロイ前に、比較的小さなテストネットワークを起動し、ローカルでテストを実施したいと考えます。コミュニティで標準化されたアプローチを採用することは、トラブルシューティングや問題の報告にも役立ちます。
前提条件
- Getting Started セクションに記載のある、CMake (version 3.1.4+)やCargo、そしてRustなどのツールのインストールを終え、開発環境が整っている
- オペレーティングシステムにPythonが入っていない場合は、Python3をインストール済みであることを確認してください
- NCTLの実行に必要なBash Shellも準備できている
仮想環境のインストール
ここでは、仮想環境にてNCTLを実行する方法を紹介します。システムレベルでのNCTLの実行も可能ですが、状況をよく理解している場合のみお勧めします。
まず、NCTLの実行に必要なツールを一通りインストールする必要があります。
Step 1. まず初めに、Pythonのパッケージマネージャーpipが必要となります。pipは、python.orgからPython3をインストールする際に付属しているものですが、まだお持ちでない場合は、以下の手順または全インストール手順に従ってインストールしてください。
MacOS用:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.pyLinux用:
$ sudo apt install python3-pipStep 2. 1つ以上のライブラリに対してコンパイルやリンクを行うプログラムpkg-configをインストールします。
MacOS用:
$ brew install pkg-configLinux用:
$ sudo apt install pkg-configStep 3. TLS(Transport Layer Security)やSSL(Secure Sockets Layer)プロトコルのツールキットであるlibssl-dev(Linux)またはopenssl(MacOS)をインストールしてください。これらのツールキットは、汎用の暗号ライブラリでもあります。
MacOS用:
$ brew install opensslLinux用:
$ sudo apt install libssl-devStep 4. 開発者用コマンドラインツールとして提供されているgccおよびg++コンパイラも必要です(執筆時点でのバージョンは7.5.0)。
MacOS用:
$ xcode-select --install
$ gcc --version
$ g++ --versionLinux用:
$ sudo apt install build-essential
$ gcc --version
$ g++ --versionStep 5. 新しい仮想環境を構築し、アクティベートします。仮想環境に適用されるコマンドには、(env)というプレフィックス(接頭辞)が付きます。以下のコマンドを実行して設定してください。
MacOS と Linux 用:
$ python3 -m venv env
$ source env/bin/activate
(env) $Step 6. 仮想環境内で、pipを最新バージョンにアップグレードします。
MacOS と Linux 用:
(env) $ pip install --upgrade pipStep 7. コマンドラインJSONプロセッサであるjqをインストールします。
MacOS と Linux 用:
(env) $ pip install jqStep 8. クロスプラットフォームのプロセスマネージャであるsupervisorをインストールします。
MacOS と Linux 用:
(env) $ pip install supervisorStep 9. 設定用ファイルパーサであるtomlをインストールします。
MacOS と Linux 用:
(env) $ pip install toml
ネットワークの設定
これで、Casperノードのローカルネットワークのセットアップと実行の準備が整いました。
💡note
Github のウェブGUIにてダウンロードしたリポジトリでは、NCTLが正常に動作しない場合があります。CLI git clone コマンドを使用した上で機能をご利用ください。
Step 10. 作業ディレクトリ(WORKING_DIRECTORYと呼ぶ)に casper-nctl ソフトウェアをCloneします。
★重要★
NCTLツールは、パスが長すぎるとレポートしてくるため、作業ディレクトリのパスは短めなものを選んでください。
MacOS と Linux 用:
$ cd <WORKING_DIRECTORY>
$ git clone https://github.com/casper-network/casper-nctlStep 11. 次に、自分の作業ディレクトリにcasper-nodeソフトウェアをクローンします。
MacOS と Linux 用:
$ git clone https://github.com/casper-network/casper-nodeStep 12. casper-client-rs ソフトウェアを自分のディレクトリにクローンします。
MacOS と Linux 用:
$ git clone https://github.com/casper-ecosystem/casper-client-rsStep 13. casper-node-launcher ソフトウェアをworking directoryにCloneします。
MacOS と Linux 用:
$ git clone https://github.com/casper-network/casper-node-launcher小規模なローカルネットワークを構築していることが前提ですが、nctl-assets-setupを実行する前に local config.toml の deploy_delay を減らすことで新しいブロック生成の処理スピードを速くすることができます。
Step 14. working directoryにcasper-sidecar ソフトウェアをCloneします。CasperのCondorリリースの仕様により、Casper ネットワークとの疎通、そしてAPIリクエストのやり取りにsidecarが必要となっています。
MacOS と Linux 用:
$ git clone https://github.com/casper-network/casper-sidecarStep 15. ターミナルセッションからのNCTLコマンドを有効にする為には、 .bashrc ファイルを拡張する必要があるかもしれません。その場合は、下記コマンドで対応可能です。
cd YOUR_WORKING_DIRECTORY/casper-nctl
cat >> $HOME/.bashrc <<- EOM
# ----------------------------------------------------------------------
# CASPER - NCTL
# ----------------------------------------------------------------------
# Activate NCTL shell.
. $(pwd)/activate
EOM次に、bashセッションをリフレッシュします。
. $HOME/.bashrcStep 16. 下記コマンドを使用してNCTL環境をアクティベートします。
MacOS と Linux 用:
$ source casper-node/utils/nctl/activateStep 17. NCTLバイナリスクリプトをコンパイルします。下記コマンドが、casper-nodeとcasper-clientをリリースモードでコンパイルします。
MacOS と Linux 用:
(env) $ nctl-compileStep 18. バイナリ、chainspec、config、faucet、keyなど、ローカルネットワークの起動に必要なアセット(資産)をすべてセットアップします。ネットワークもその直後に起動します。デフォルトでは、アクティブノードが5台、非アクティブノードが5台、計10台のノードがネットワークに存在します。
MacOS と Linux 用:
(env) $ nctl-assets-setup && nctl-startネットワークが一旦稼働すると、ネットワーク内の各ノードのコントロールや新しいノードのネットワークへの追加ができるようになります。
他にもいくつかエイリアス経由のNCTLコマンドがあり、ターミナルセッション内からの実行が可能となっています。これらのコマンドはすべてnctl-というプレフィックス(接頭辞)がついており、様々なタスクへの対応が可能になっています。
以下のような構造で、utils/nctl/assetsという新しいディレクトリが作成されているはずです。
下記の様な出力がコマンドライン上に得られるでしょう。
ネットワークの停止
Step 15. 必須ではないが、下記コマンドにてNCTLの停止とリセットも可能です。
MacOS と Linux 用:
(env) $ nctl-stop
(env) $ nctl-cleanNext Step
- 様々なNCTL commandsを試してみる
- NCTLの使用ガイドを進めてみる