メインコンテンツまでスキップ

lesson-2_Subnetを作成しよう

🔥 Avalanche-CLI

このレッスンでは実際にSubnetの作成を行います。

Subnetの作成にはAvalanche CLIというツールを使用します。

📓 Avalanche CLI Avalanche で行うあらゆる開発に使用できるコマンドラインツールです。 ローカルネットワークのセットアップや Subnet の作成やカスタマイズなどに使用できます。 このツールは日々急速な開発が進められているので、変更がないか定期的にドキュメントをチェックする必要があります。 もし本プロジェクトに関連する範囲で変更を見つけた場合、プルリクにて教えて頂けると大変嬉しいです。

Avalanche CLIをインストールするためにターミナル上(任意のディレクトリ)で、以下のコマンドを実行してください。

curl -sSfL https://raw.githubusercontent.com/ava-labs/avalanche-cli/main/scripts/install.sh | sh -s

ホームディレクトのbin(~/bin)内にavalancheという実行ファイルがインストールされているので、 これを任意の場所で実行できるよう、以下を実行して環境変数PATHにこのディレクトリのパスを追加します。

export PATH=~/bin:$PATH

以下のようにavalancheコマンドが使用できるはずです。

$ avalanche -v
avalanche version 1.0.2

このコマンドを今後も使用するように設定する場合、.zshrcなどに先ほどのexport文を追記してください。

🛩️ Subnet の作成

それではAvalanche-CLIを使用して最もシンプルなSubnetを作成していきます。 (こちらを参考にしています。)

以下のコマンドを実行してEVMベースのSubnetを作成していきます。 mySubnetはSubnetの名前です。

avalanche subnet create mySubnet

実行後、対話形式で設定を求められるので1つずつ答えていきます。

VM

SubnetEVMを選択します。

ChainId

EVM形式のChainID(正の整数)を入力します。

ChainIDはユニークなものなので、実際にSubnetを稼働させる環境では他のチェーンと被らないようにする必要があります。

ここでは開発環境でSubnetを作成するので自由に入力できますが、1(Ethereum)や43114(Avalanche C-Chain)などの主なchainIDは開発中に障害とならないよう避けましょう。

EVMネットワーク上のChainIDはこちらで確認できます。

ここでは1111と入力しました。

Token Symbol

作成するSubnetのネイティブトークンのシンボル名を自由に設定できます。

ここではTESTと入力しました。

Subnet-EVM Version

Use latest versionを選択します。

Fees

作成するSubnetにどのようにガス代を設定するのかを選択します。

Low disk use / Low Throughput 1.5 mil gas/s (C-Chain's setting)を選択します。

Airdrop

Airdrop 1 million tokens to the default address (do not use in production)を選択します。

ネイティブトークンをデフォルトアドレスにAirdropしました。

⚠️ ここで使用したデフォルトアドレスとは、秘密鍵が公開された開発用のアカウントのものなので、実際のプロダクトの開発では使用しないでください。

プロダクト段階で Subnet を作成する際はCustomize your airdropが選択することで他のアドレスに Airdrop を行います。

Precompiles

このセクションはSubnetをカスタムする際に使用します。

今はNoを選択してください。

全ての設定が終了するとSuccessfully created subnet configurationを表示されます。

avalanche subnet list --deployedを実行すると以下のような表示がされます。

% avalanche subnet list --deployed
+----------+----------+----------+-----------+-----------+-------+----------+---------+
| SUBNET | CHAIN | CHAIN ID | TYPE | FROM REPO | | DEPLOYED | |
+----------+----------+----------+-----------+-----------+-------+----------+---------+
| | | | | | Local | Fuji | Mainnet |
+----------+----------+----------+-----------+-----------+-------+----------+---------+
| mySubnet | mySubnet | 1111 | SubnetEVM | false | No | No | No |
+----------+----------+----------+-----------+-----------+-------+----------+---------+

まだどこにもデプロイしていないためDEPLOYEDの項目が全てNoになっています。

🛫 Subnet のデプロイ

作成したSubnetをローカルネットワークにデプロイします。

以下のコマンドを実行し、その後のプロンプトでLocal Networkを選択します。

avalanche subnet deploy mySubnet

これよりローカルマシンに5つのノードによるAvalancheネットワークが構築されます。

実行後以下のような出力がされます。

出力の最後にあるBrowser Extension connection details (any node URL from above works):の情報を使用して、Metamaskなどのウォレットと連携することができます。

Metamask をお持ちでない方は こちら からブラウザの拡張機能をダウンロードし、MetaMask ウォレットをあなたのブラウザに設定してください。

📓 Coreウォレットについて Ava Labs(Avalanche エコシステムの開発チーム) がサポートしている Core というウォレットが存在します。 Core でのウォレットを使用すると Avalanche に適した処理により、高速なトランザクションが実現する可能性があります。 現在は beta 版ということもありバグや仕様変更が日々改善されているため、ここでは使用しませんが注目なウォレットです。

ブラウザ上でMetamaskを開き、アカウントタブからアカウントのインポートを選択しましょう。

こちらに先ほど出力にあったprivate key:に続く情報を入力します。

インポートが成功すると新たなアカウントが作成されます。

⚠️ このアカウントは秘密鍵の公開されたアカウントなので、資金を入れるなどの行為は危険です。

ここでは、他のアカウントと区別がつくようにアカウントの名前を変更します。 3つのdotマークを選択 -> アカウントの詳細 -> アカウントの名前を変更します。

次にネットワークの追加を行います。

ネットワークタブを開き、ネットワークを追加を選択します。

ネットワークを手動で追加します。

出力にあった情報を入力します。

ネットワークの追加が成功すると、Airdropされたネイティブトークンが表示されます。

以上でSubnetの作成と接続ができました 🎉

ターミナルでavalanche subnet list --deployedを実行すると、以下のような表示がされ、DEPLOYEDの項目のLocalYesに変わっています。

% avalanche subnet list --deployed
+----------+----------+----------+-----------+-----------+-------+----------+---------+
| SUBNET | CHAIN | CHAIN ID | TYPE | FROM REPO | | DEPLOYED | |
+----------+----------+----------+-----------+-----------+-------+----------+---------+
| | | | | | Local | Fuji | Mainnet |
+----------+----------+----------+-----------+-----------+-------+----------+---------+
| mySubnet | mySubnet | 1111 | SubnetEVM | false | Yes | No | No |
+----------+----------+----------+-----------+-----------+-------+----------+---------+

このようにAvalanche-CLIを使うことで、簡単にSubnetを作成することができます。

🙋‍♂️ 質問する

ここまでの作業で何かわからないことがある場合は、Discord#avalancheで質問をしてください。

ヘルプをするときのフローが円滑になるので、エラーレポートには下記の三点を記載してください ✨

1. 質問が関連しているセクション番号とレッスン番号
2. 何をしようとしていたか
3. エラー文をコピー&ペースト
4. エラー画面のスクリーンショット

次のレッスンではカスタムしたSubnetの作成を行います 🎉