開発の事前準備

この項では、Casperネットワークとの連携に必要な事前準備について説明します。

Casperネットワークにて快適に開発をするには、Linux Ubuntu 20.04を使用してください。Casperは、macOSを公式にはサポートしていないが、ユーザーの利便性のためにコマンドは提供しています。何か問題が発生した場合は、Telegram か Discordに連絡してください。Windows上での開発はお勧めしていません。

開発環境の準備​

Linux/macOS

・Linuxの場合

curlのインストール​

sudo apt install curl

必須となっている Linuxパッケージのインストール

sudo apt install build-essential

Casperツールに必要なパッケージのインストール

sudo apt-get install pkg-config
sudo apt-get install openssl
sudo apt-get install libssl-dev

Linuxへのcargoのインストール

sudo apt install cargo

・macOSの場合:

macOS用のXcode デベロッパーツールのインストール

xcode-select --install

インストールの認証:

xcode-select -p

brewのインストール

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Casperツールに必要となるパッケージのインストール

brew install pkg-config
brew install openssl

・Linux/macOS共通

Rust​のインストール

まだご自分のPCにRust言語をインストールしていない場合は、インストールしてください。

Rustの公式ガイドには、curlを使ったRustのインストールが推奨されています。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

次回ログイン後、インストールのスクリプトがRustを自動でシステムPATHに追加してくれます。Rustを即座に使用開始するには、ターミナルの再起動をする代わりに以下のコマンドを自分のシェルにて実行してください。そのコマンドがシステムのPATHにRustを追加してくれます。

source $HOME/.cargo/env

インストールの認証:

rustup --version

Casper crateのインストール​

CasperのRust projectを最速でセットアップするベストな方法は、Wasmスマートコントラクトの作成とCasperのネットワーク上にてテスト実施を行うためのコマンドラインツールである cargo casper を使用することです。このツールは、シンプルなスマートコントラクトやランタイム環境、簡単なテストを行えるテストフレームワークを作成してくれます。Cargoは、Rust用(Pythonに慣れている人はpip、Javascriptの方はnpmやyarn)のビルドシステムとパッケージマネージャーです。CI/CDパイプライン内での設定も可能です。

cargo install cargo-casper

インストールの認証:

cargo-casper --version

※必須のCasper crateは、ここに記載していますのでご確認ください。

Casper クライアントのインストール​

デフォルトのCasper Clientは crates.io上に記載されています。このクライアントによってCasper Networkへのデプロイを行えるようになります。

cargo install casper-client

インストールの認証:

casper-client --version

Casperクライアントは、help情報を表示することも可能の為、サポートされているコマンドの最新リストを提供してくれます。下記のコマンドを使用して表示できます。

casper-client --help

各コマンドにhelpを用いて最新の引数や概要を取得可能となっています。

casper-client <command> --help

Casperクライアントのソースコードへのアクセス

Casperクライアントのソースコードは、ここから確認いただけます。クライアントライブラリのソースが lib ディレクトリに入っているが、これはCLIライブラリからではなく直接呼び出しすることになると思います。CLIアプリのcasper-clientは、このライブラリを使用してその機能を実装します。

コンパイルをしたい場合は、以下のコマンドを使用してnightly Rust コンパイラをまず始めにインストールする必要があります。

rustup toolchain install nightly

そして、ソースコードをコンパイルします

cargo build --release

target/releaseディレクトリ内に実行可能なcasper-cientをご確認いただけるはずです。

cmakeのインストール

casper-nodeのリポジトリにあるものも含むソースコードからのコントラクトのコンパイルを考えている場合は、以下のコマンドを用いてcmakeをインストールしてください。

私たちも使用している CMakeは、人気のビルドツールです。既にインストール済みの方もいらっしゃるかもしれませんが、最新のバージョンであることをご確認ください。もし、インストールやアップデートが必要な場合は、下記インストラクションもしくはCMakeの公式ページに従ってください。インストール後は、下記手順にてバージョンを確認してください。

Linux/macOS

・Linuxの場合:

sudo apt-get -y install cmake

以下を実行してインストールを認証してください。

cmake --version

・macOSの場合:

brew install cmake

以下を実行してインストールを認証してください。

cmake --version

IDEのインストール

開発にはVisual Studio Code (VSC)のようなIDE(統合開発環境)の使用をお勧めします。このガイドに従い、VSCのセットアップとプラグインのインストールを行ってください。開発時に役立つと思います。

アカウントの設定

Account 作成の過程は、大きく2つに分かれています。 

  1. アカウントの暗号鍵の生成
  2. アカウントへのトークン付与

このビデオは以下の説明を包括しており、必要な情報が盛り込まれています。

アカウントの作成

Casperブロックチェーンは、チェーン上のアカウントをベースにしたモデルであり、特定のPublicKey(公開鍵)から派生したAccountHashによって個々に識別されています。 

基本的には、標準のブロックチェーンとの通信であれば、アカウント作成に使用したPublicKey(公開鍵)に紐づいたkey-pair(鍵の組み合わせ)で暗号署名されたDeployという形式をとります。

Casperのコマンドラインクライアントにて、アカウントを作成することもできます。

他の手段として、公式のTestnetやMainnetなどのCasperネットワーク用に提供している、アカウント作成が可能なブラウザ上で操作できるブロックエクスプローラーもあります。このセクションにて説明しています。

アカウントとそれに対応する暗号鍵のkey-pairの生成には、どちらかの方法を用います。

アカウントハッシュの生成

開発者の方は、アカウントハッシュ(公開鍵の32バイトハッシュ)を使うことは度々あると思います。これは、16進数に符号化された公開鍵に直接対応する代わりにAccountHashを持つノードからレスポンスする為です。公開鍵のアカウントハッシュを確認するには、Casper CLIクライアントのaccount-addressオプションを使用します。

casper-client account-address --public-key <path-to-public_key.pem/public-key-hex>

アカウントへのトークン付与

アカウントの暗号鍵ペアの生成後、アカウントにトークンを付与して初めてチェーン上に作成されたことになります。

Testnetでは、ガイドにしたがってトークン付与のリクエストを行うことでトークンを受け取ることができます。 テストトークンのリクエストは、アカウント毎に1回のみとなります。

Mainnetでは、既存のアカウントからCSPRトークンを転送することで、アカウント設定が完了となります。送信元アカウントは、送信先アカウントの16進数に符号化された公開鍵に、CSPRトークンを転送する必要があります。この転送では、送信先アカウントがいなくても自動で作成されます。現時点では、これが唯一のMainnet上でのアカウント作成方法です。

ノードアドレスをネットワークピアから取得

クライアントは、ノードのJSON-RPCエンドポイント(デフォルト:http://<node-ip-address>:7777)へのリクエスト送信を介して、ブロックチェーン上のノードと疎通します。

ノードアドレスは、ピアノードのIPとなります。

公式のTestnetとMainnet両方のブロックエクスプローラーにて、それぞれのネットワーク上のノードのIPアドレスを提供しています。

下記リンクから、ネットワーク上のノードのnode-ip-addressを取得できます。

ピアのリストがあるので、そのリスト上のどのピアのIPでも選択可能となっています。

Note:もし選択したピアの反応がない場合は、他のピアを再選択してください。