見出し画像

【完全保存版】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)"

内容はこちらになります。

chatGPT-4

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にopensslRustツールチェーンをインストールするには、以下の手順に従います。

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

詳細はこちらです。

chatGPT-4

② 表示されるプロンプトに従って、デフォルトのインストールを進めます。

③ 以下のコマンドを実行して、現在のシェルをCargoを含むように更新します。

source ~/.cargo/env

④ 以下のコマンドを実行して、インストールを確認します。

rustc --version

4ー3 安定バージョンの追加

以下のコマンドを実行して、Rust ツールチェーンデフォルトで最新の安定バージョンになるように設定します。

rustup default stable
rustup update
rustup target add wasm32-unknown-unknown

翻訳者注
wasm32-unknown-unknown(ターゲットトリプレットについて)
内容は下のようになります。

これにより、RustのコードWebAssemblyバイナリとしてコンパイルすることが可能になります。

4ー4 ナイトリーバージョンの追加

以下のコマンドを実行して、ナイトリーリリースナイトリーWebAssembly (wasm)ターゲット開発環境に追加します。

rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly

翻訳者注
Rustのリリースは、いくつかのチャンネルで提供されており、stablebetanightly が主なものです。
stable: 安定版で、通常の利用に推奨されるバージョンです。
beta: 次の安定版となるリリースのプレビュー版です。
nightly: 毎夜自動的にリリースされる最新の開発版です。最新の機能や実験的な変更が含まれているため、すべての機能が安定しているわけではありません。

chatGPT-4より

以下のコマンドを実行して、開発環境の設定を確認します。

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の開発環境

この記事は、こちらを翻訳しています。

一般的に、macOSLinuxのような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のインストール

WSLRustツールチェーンをインストールします。

[スタート]メニューをクリックし、[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用のパッケージがあります。

お使いのディストリビューションのパッケージマネージャに古いバージョンしかない場合は、バイナリリリースを直接ダウンロードすることもできます。

翻訳者注
インストールした時のことを忘れてしまいましたが、chatGPTで確認したところ、下の方法で良さそうです。
また、ここからこの節の最後まで、翻訳者の注です。

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

ちなみに、binaryenwasm-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 コントラクトの作成

準備ができましたら、簡単なコントラクトを作ってみましょう。

下の記事に沿って、コントラクトを作ることができるかを試してみて下さい。

以上です。



サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊