【完全保存版】AstarでSubstrateコントラクトを作る際の事前準備
0 はじめに
1 Substrateの事前準備について
AstarでSubstrateのコントラクトを作る際、次の2つの記事を通じて、事前準備を行う必要があります。
この記事の第1章では、Macで必要な処理を抜粋して書いています。
第2章では、Windowsで必要な箇所を抜粋しています。(Macの処理と被る部分は除いています。)
第3章以降は元の記事の翻訳を行っています。
そのため、流れだけ知りたい方は、第1・2章を、原本通りに進みたい方は第3章からお進み下さい。
2 アカウント・テストトークンの事前準備について
なお、Polkadot{.js}のアカウントを作り、テストトークンを取得する方法はこちらになります。
1 mac の場合
macでの必要なインストールを記載していきます。
Homebrewなど、既にインストール済みの箇所は飛ばして進んでください。
また、確認として、出しているのは、私のPCでの出力です。
今後、コントラクトを作成していく際に、動かない場合など、バージョンの参考となるように記載しています。
1 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
確認
% brew -v
Homebrew 3.6.19
2 protobuf
M1などのApple Siliconの場合に必要です。
brew update
brew install protobuf
確認
% protoc --version
libprotoc 3.21.12
3 openssl
brew install openssl
確認
% openssl version
OpenSSL 3.0.7 1 Nov 2022 (Library: OpenSSL 3.0.7 1 Nov 2022)
4 Rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
確認
% rustc --version
rustc 1.72.0-nightly (8b35c0bb0 2023-06-08)
5 ツールチェーンへのwasm追加
rustup default stable
rustup update
rustup target add wasm32-unknown-unknown
確認
% rustup show
Default host: aarch64-apple-darwin
rustup home: /Users/ytakahashi/.rustup
installed toolchains
--------------------
stable-aarch64-apple-darwin
nightly-2022-06-30-aarch64-apple-darwin
nightly-2022-08-15-aarch64-apple-darwin
nightly-2022-11-03-aarch64-apple-darwin
nightly-2023-01-10-aarch64-apple-darwin
nightly-2023-02-07-aarch64-apple-darwin
nightly-aarch64-apple-darwin (default)
1.64.0-aarch64-apple-darwin
1.69.0-aarch64-apple-darwin
installed targets for active toolchain
--------------------------------------
aarch64-apple-darwin
wasm32-unknown-unknown
active toolchain
----------------
nightly-aarch64-apple-darwin (default)
rustc 1.72.0-nightly (8b35c0bb0 2023-06-08)
6 ツールチェーン(nightly)へのwasm追加
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
確認
% rustup +nightly show
Default host: aarch64-apple-darwin
rustup home: /Users/ytakahashi/.rustup
installed toolchains
--------------------
stable-aarch64-apple-darwin
nightly-2022-06-30-aarch64-apple-darwin
nightly-2022-08-15-aarch64-apple-darwin
nightly-2022-11-03-aarch64-apple-darwin
nightly-2023-01-10-aarch64-apple-darwin
nightly-2023-02-07-aarch64-apple-darwin
nightly-aarch64-apple-darwin (default)
1.64.0-aarch64-apple-darwin
1.69.0-aarch64-apple-darwin
installed targets for active toolchain
--------------------------------------
aarch64-apple-darwin
wasm32-unknown-unknown
active toolchain
----------------
nightly-aarch64-apple-darwin (overridden by +toolchain on the command line)
rustc 1.72.0-nightly (8b35c0bb0 2023-06-08)
7 cmake
brew install cmake
確認
% cmake --version
cmake version 3.25.1
8 binaryen
brew install binaryen
確認
% wasm-opt --version
wasm-opt version 111
9 cargo-contract
cargo install cargo-contract --force --locked
確認
% cargo-contract --version
cargo-contract 3.0.1-unknown-aarch64-apple-darwin
10 cargo-dylint dylint-link
cargo install cargo-dylint dylint-link
確認
% cargo install --list
cargo-contract v3.0.1:
cargo-contract
cargo-dylint v2.1.1:
cargo-dylint
cargo-edit v0.11.8:
cargo-add
cargo-rm
cargo-set-version
cargo-upgrade
cargo-generate v0.17.6:
cargo-generate
contracts-node v0.22.1 (https://github.com/paritytech/substrate-contracts-node.git#c80b4630):
substrate-contracts-node
dylint-link v2.1.1:
dylint-link
11 rust-srcの追加
rustup component add rust-src --toolchain nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
確認
% rustup component list --toolchain nightly | grep rust-src
rust-src (installed)
2 Windows特有箇所について
記事執筆者がMacであり、Windowsを使っていないため、確認部分は省いております。
1 WSL
wsl --install
2 各種必要パッケージ
sudo apt update
sudo apt install --assume-yes git clang curl libssl-dev llvm libudev-dev make protobuf-compiler
3 binaryen
sudo apt-get update
sudo apt-get install binaryen
3 macOS開発環境
この章では、こちらの記事を翻訳しています。
Intel または Apple M1 プロセッサを搭載した Apple macOS コンピュータに Rust をインストールし、Substrate 開発環境をセットアップすることができます。
1 始める前に
macOS に Rust をインストールして開発環境をセットアップする前に、お使いのコンピュータが以下の基本要件を満たしていることを確認してください・
オペレーティングシステムのバージョンが10.7 Lion以降であること。
プロセッサ速度は2Ghz以上、3Ghzを推奨。
メモリは8GB以上のRAM、16GBを推奨。
10GB以上のストレージ空き容量
ブロードバンドインターネット接続
2 Apple Siliconのサポート
ビルドプロセスを開始する前に、Protobufをインストールする必要があります。
インストールするには、以下のコマンドを実行してください。
brew install protobuf
3 Homebrewのインストール
ほとんどの場合、macOSコンピュータへのパッケージのインストールと管理にはHomebrewを使用する必要があります。
ローカルコンピュータにHomebrewがまだインストールされていない場合は、先に進む前にダウンロードしてインストールしてください。
Homebrewをインストールするには
1 ターミナルアプリケーションを開きます。
2 以下のコマンドを実行し、Homebrewをダウンロードしてインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
内容はこちらになります。
3 以下のコマンドを実行して、Homebrewが正常にインストールされたことを確認します。
brew --version
コマンドは以下のような出力を表示します。
Homebrew 3.3.1
Homebrew/homebrew-core (git revision c6c488fbc0f; last commit 2021-10-30)
Homebrew/homebrew-cask (git revision 66bab33b26; last commit 2021-10-30)
4 インストール
ブロックチェーンは公開鍵と秘密鍵のペアの生成とトランザクションの署名の検証をサポートするために標準的な暗号を必要とします。
そのため、opensslのような暗号を提供するパッケージも必要です。
macOSにopensslとRustツールチェーンをインストールするには、以下の手順に従います。
4ー1 opensslのインストール
① ターミナル・アプリケーションを開く
② 以下のコマンドを実行して、Homebrewのバージョンが更新されていることを確認します。
brew update
③ 以下のコマンドを実行してopensslパッケージをインストールします。
brew install openssl
④ バージョンの確認は以下のコマンドで行います。(翻訳者追記)
openssl version
4ー2 Rustupのインストール
① rustupインストールプログラムをダウンロードし、以下のコマンドを実行してRustをインストールします。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
詳細はこちらです。
② 表示されるプロンプトに従って、デフォルトのインストールを進めます。
③ 以下のコマンドを実行して、現在のシェルをCargoを含むように更新します。
source ~/.cargo/env
④ 以下のコマンドを実行して、インストールを確認します。
rustc --version
4ー3 安定バージョンの追加
以下のコマンドを実行して、Rust ツールチェーンがデフォルトで最新の安定バージョンになるように設定します。
rustup default stable
rustup update
rustup target add wasm32-unknown-unknown
4ー4 ナイトリーバージョンの追加
以下のコマンドを実行して、ナイトリーリリースとナイトリーWebAssembly (wasm)ターゲットを開発環境に追加します。
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
以下のコマンドを実行して、開発環境の設定を確認します。
rustup show
rustup +nightly show
コマンドは以下のような出力を表示します。
# rustup show
active toolchain
----------------
stable-x86_64-apple-darwin (default)
rustc 1.61.0 (fe5b13d68 2022-05-18)
# rustup +nightly show
active toolchain
----------------
nightly-x86_64-apple-darwin (overridden by +toolchain on the command line)
rustc 1.63.0-nightly (e71440575 2022-06-02)
4ー5 cmakeのインストール
以下のコマンドでcmakeをインストールします。
brew install cmake
インストールできましたら、以下の方法で確認を行って下さい。(翻訳者追記)
cmake --version
4 Windowsの開発環境
この記事は、こちらを翻訳しています。
一般的に、macOSやLinuxのようなUNIXベースのオペレーティングシステムは、Substrateベースのブロックチェーンを構築するのに適した開発環境を提供します。
Substrateチュートリアルやハウツーガイドのコード例やコマンドラインの説明はすべて、ターミナルでUNIX互換コマンドを使用してSubstrateを操作する方法を説明しています。
しかし、ローカルのコンピュータがUNIXベースのオペレーティングシステムではなくMicrosoft Windowsを使用している場合は、追加のソフトウェアを設定することで、Substrateベースのブロックチェーンを構築するのに適した開発環境にすることができます。
Microsoft Windowsが稼働しているコンピューター上に開発環境を準備するには、Windows Subsystem for Linux(WSL)を使用してUNIXオペレーティング環境をエミュレートすることができます。
始める前に
Microsoft Windowsにインストールする前に、以下の基本要件を確認してください。
サポートされているバージョンの Microsoft Windows オペレーティング・システムを実行しているコンピュータがあること。
Windows デスクトップオペレーティングシステムを搭載したコンピューターに Windows Subsystem for Linux をインストールするには、Microsoft Windows 10、バージョン 2004 以降、または Microsoft Windows 11 を実行している必要があります。
Windows サーバーオペレーティングシステムを搭載したコンピューターに Windows Subsystem for Linux をインストールするには、Microsoft Windows Server 2019 以降を実行している必要があります。
良好なインターネット接続があり、ローカルコンピューターでシェルターミナルにアクセスできます。
Windows Subsystem for Linux のセットアップ
Windows Subsystem for Linux (WSL) を使用すると、Windows オペレーティング・システムを使用しているコンピューター上で Linux 環境をエミュレートできます。
Substrate 開発におけるこのアプローチの主な利点は、Substrate ドキュメントに記載されているすべてのコードとコマンドライン例を使用できることです。
例えば、ls や ps などの一般的なコマンドを変更せずに実行できます。
Windows Subsystem for Linux を使用することで、仮想マシンのイメージやデュアルブートのオペレーティング・システムを設定する必要がなくなります。
Windows Subsystem for Linux を使用して開発環境を準備するには、以下の手順に従います。
1 デフォルト状況の確認
Windows のバージョンとビルド番号を確認し、Windows Subsystem for Linux がデフォルトで有効になっているかどうかを確認します。
Microsoft Windows 10、バージョン 2004 (Build 19041 以降)、または Microsoft Windows 11 を使用している場合は、Windows Subsystem for Linux がデフォルトで有効になっているため、次の手順に進むことができます。
Microsoft Windows の古いバージョンがインストールされている場合は、古いバージョンの WSL マニュアルのインストール手順を参照してください。
Microsoft Windows の古いバージョンにインストールする場合、コンピューターに Windows 10、バージョン 1903 以降があれば、WLS 2 をダウンロードしてインストールできます。
2 Powershell等の実行
[スタート]メニューから[Windows PowerShell]または[コマンドプロンプト]を選択し、右クリックし、[管理者として実行]を選択します。
3 インストールの実行
PowerShellまたはコマンドプロンプトのターミナルで、以下のコマンドを実行します。
wsl --install
このコマンドは、Windowsオペレーティングシステムの一部である必要なWSL 2コンポーネントを有効にし、最新のLinuxカーネルをダウンロードし、デフォルトでUbuntu Linuxディストリビューションをインストールします。
利用可能な他のLinuxディストリビューションを確認したい場合は、次のコマンドを実行してください:
wsl --list --online
4 ターミナルを閉じる
ディストリビューションのダウンロードが完了したら、ターミナルを閉じます。
5 コンピュータの再起動
[スタート]メニューをクリックし、[シャットダウン]または[サインアウト]を選択し、[再起動]をクリックしてコンピューターを再起動します。
Linuxディストリビューションのインストールを開始するには、コンピューターの再起動が必要です。
再起動後、インストールが完了するまで数分かかることがあります。
開発環境としてのWSLのセットアップの詳細については、WSL開発環境のセットアップを参照してください。
6 必要なパッケージとRustのインストール
WSLにRustツールチェーンをインストールします。
[スタート]メニューをクリックし、[Ubuntu]を選択します。
UNIXユーザ名を入力して、ユーザアカウントを作成します。
UNIX ユーザーのパスワードを入力し、確認のためにパスワードを再入力します。
Ubuntu Advanced Packaging Tool(apt)を使用して、以下のコマンドを実行し、Ubuntuディストリビューションの最新アップデートをダウンロードします。
sudo apt update
以下のコマンドを実行して、Ubuntuディストリビューションに必要なパッケージを追加します。
sudo apt install --assume-yes git clang curl libssl-dev llvm libudev-dev make protobuf-compiler
rustupインストールプログラムをダウンロードし、以下のコマンドを実行してUbuntuディストリビューション用のRustをインストールする:
これ以降は、第2章第2節のMacの場合のやり方と同様です。
そちらをご参照ください。
5 ink!使用のためのセットアップ
1 セットアップ
初心者向けのチュートリアルをお探しの場合は、スマートコントラクトのチュートリアルページをご覧ください。
2 RustとCargo
スマート・コントラクトをコンパイルするための前提条件は、RustとCargoがインストールされていることです。
こちらがインストールガイドです。
3 ink! CLI
最初にインストールするツールはcargo-contractで、ink!で書かれたWebAssemblyスマートコントラクトのセットアップと管理を支援するCLIツールです。
4 binaryenのインストール
このツールの前提条件として、コントラクトのWebAssemblyバイトコードを最適化するためのbinaryenパッケージをインストールする必要があります。
例えば、Debian/Ubuntu、Homebrew、Arch Linux用のパッケージがあります。
お使いのディストリビューションのパッケージマネージャに古いバージョンしかない場合は、バイナリリリースを直接ダウンロードすることもできます。
1.Debian/Ubuntu
sudo apt-get update
sudo apt-get install binaryen
2.Homebrew (macOS)
brew install binaryen
3.Arch Linux
sudo pacman -S binaryen
確認方法は以下のようになります。
wasm-opt --version
ちなみに、binaryenとwasm-optの関係性はこのようになります。
ちなみに、その名の通り、wasm-optはこのように、wasmのバイトコードを最適化してくれます。
5 cargo-contractのインストール
パッケージをインストールしたら、次のコマンドを実行します。
cargo install cargo-contract --force --locked
forceを使用すると、最新のcargo-contractバージョンに確実に更新されます。
こちらのコマンドで確認を行って下さい。(翻訳者追記)
cargo-contract --version
その後、cargo contract --helpを使用して、使用可能なコマンドを調べ始めることができます。
6 lintのインストール
ink!コントラクトをlintするには、他に2つの依存関係が必要です。
これは、セキュリティの問題につながる可能性のある方法でAPIを使用する場合などに、ユーザーに警告するために行われます。
cargo install cargo-dylint dylint-link
下のようにして、確認することができます。(翻訳者追記)
% cargo install --list
cargo-contract v3.0.1:
cargo-contract
cargo-dylint v2.1.1:
cargo-dylint
cargo-edit v0.11.8:
cargo-add
cargo-rm
cargo-set-version
cargo-upgrade
cargo-generate v0.17.6:
cargo-generate
contracts-node v0.22.1 (https://github.com/paritytech/substrate-contracts-node.git#c80b4630):
substrate-contracts-node
dylint-link v2.1.1:
dylint-link
7 サブストレートフレームワークの前提条件
ink!を使えば、Substrate上に構築されたブロックチェーン用のスマートコントラクトを書くことができます。
Substrate Developer Hub Knowledge Baseの公式インストール手順に従って、Substrateの前提条件をすべて設定してください。
これを実行したら、次のコマンドも実行する必要があります。
rustup component add rust-src --toolchain nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
下のようにして、確認することができます。(翻訳者追記)
% rustup component list --toolchain nightly | grep rust-src
rust-src (installed)
6 コントラクトの作成
準備ができましたら、簡単なコントラクトを作ってみましょう。
下の記事に沿って、コントラクトを作ることができるかを試してみて下さい。
以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊