4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

リニューアルされたSubstrateのチュートリアルをやる「Start a Private Network」

Posted at

subsrateとは何か?

リニューアルされたSubstrateチュートリアル

  • こちらです。(https://www.substrate.io/tutorials)
  • まずデザインが凄くかっこいいですね。
  • そして、以前より、分かり易くなっているように思います。

今回やったこと

Cloneしてビルドする。

git clone -b v2.0.0-alpha.7 --depth 1 https://github.com/substrate-developer-hub/substrate-node-template
  • 実装言語であるrustの環境を作ります。
curl https://getsubstrate.io -sSf | bash -s -- --fast
source ~/.cargo/env
rustup update nightly
rustup update stable
rustup target add wasm32-unknown-unknown --toolchain nightly
  • 作業用のローカルbranchを作成します。
cd substrate-node-template
git checkout -b my-first-substrate-chain
  • ビルドします。※環境にもよりますが、30分近くかかります。
cargo build --release

ノードで使うキー(2台分)を作成します。

  • 以下のコマンドを2セット実行して、テキストファイル等にメモします。
subkey --sr25519 generate
subkey --ed25519 inspect "※※--sr25519実行時に作成されたSeecret Seedsを指定"

自分用のPrivate Chainの設定ファイル(?)を作る

  • customSpec.jsonを作成した後にチュートリアルに従って編集して下さい。
  • 私は自分で作成した2台分のキーのみをいれたファイルを作成しました。
./target/release/node-template build-spec --disable-default-bootnode --chain local > customSpec.json
  • 作成したファイルです。
cat customSpec.json
{
  "name": "Local Testnet",
  "id": "local_testnet",
  "chainType": "Local",
  "bootNodes": [],
  "telemetryEndpoints": null,
  "protocolId": null,
  "properties": null,
  "consensusEngine": null,
  "genesis": {
    "runtime": {
      "system": {
        "changesTrieConfig": null,
        "code": /* 省略 */},
      "aura": {
        "authorities": [
          "5DyHhXoTtfa9u7ZiBmjxdwbA6TcAqKFovDGmPnn6wbWm7dje",
          "5EpqvJcZZgmdjnxoTHyzw8GWmp9D2HmpYzgqbNGw32PQYxwT"
        ]
      },
      "grandpa": {
        "authorities": [
          [
            "5GMP6xJjukUwW9LcccfynkEWTPNkrzjm1oSQf68UZ1jc8xb1",
            1
          ],
          [
            "5E4LLaTE44E2F4t62SkFBXbwNqdgDbBvVrkjHaqybWNckQn6",
            1
          ]
        ]
      },
      "balances": {
        "balances": [
          [
            "5DyHhXoTtfa9u7ZiBmjxdwbA6TcAqKFovDGmPnn6wbWm7dje",
            1152921504606846976
          ],
          [
            "5EpqvJcZZgmdjnxoTHyzw8GWmp9D2HmpYzgqbNGw32PQYxwT",
            1152921504606846976
          ]
        ]
      },
      "sudo": {
        "key": "5DyHhXoTtfa9u7ZiBmjxdwbA6TcAqKFovDGmPnn6wbWm7dje"
      }
    }
  }
}
  • 指定出来る形にします。
./target/release/node-template build-spec --chain=customSpec.json --raw --disable-default-bootnode > customSpecRaw.json
  • customSpecRaw.jsonは起動する端末に配布して下さい。

起動する ※今回は2台起動しました。

  • 1台目を起動する
./target/release/node-template \
  --base-path /tmp/node01 \
  --chain=./customSpecRaw.json \
  --port 30333 \
  --ws-port 9944 \
  --rpc-port 9933 \
  --telemetry-url 'ws://telemetry.polkadot.io:1024 0' \
  --validator \
  --unsafe-rpc-expose \
  --name MyNode01 \
  --rpc-cors=*  \
  --unsafe-ws-external \
  --unsafe-rpc-external
  • 2台目を起動する
  • ※"11.111.111.111"の部分は1台目が起動している端末のIPを指定して下さい。
  • ※"p2p"の後ろは1台目を起動した時の標準出力に表示される"Local node identity is:"の後ろに表示された文字列を指定して下さい。
./target/release/node-template \
  --base-path /tmp/node02 \
  --chain=./customSpecRaw.json \
  --port 30334 \
  --ws-port 9945 \
  --rpc-port 9934 \
  --telemetry-url 'ws://telemetry.polkadot.io:1024 0' \
  --validator \
  --unsafe-rpc-expose \
  --name MyNode02 \
  --rpc-cors=*  \
  --unsafe-ws-external \
  --bootnodes /ip4/11.111.111.111/tcp/30333/p2p/QmcWd9MRAfdjSKQQqBb7yN24nPZegn46Ne8HTssPtZFZLK \
  --unsafe-rpc-external
  • 成功すると以下のような状態で標準出力が出力され、ブロックが生成されます。
 ? Imported #389 (0x24cd…e14d)
 ? Idle (1 peers), best: #389 (0x24cd…e14d), finalized #0 (0x6771…40b9), ? 1.0kiB/s ? 1.1kiB/s
 ? Imported #390 (0xdbdf…b879)
 ? Idle (1 peers), best: #390 (0xdbdf…b879), finalized #0 (0x9d1e…251f), ? 1.0kiB/s ? 1.1kiB/s

作成したキーを登録する

1台目の設定

2台目の設定

ノードを2台とも再起動する

  • 「Ctl + c」で2台ともコマンドを停止します。
  • 再度2台とも起動します。
  • 暫く待って、Finalizeされてているようなら成功です。以下のように出力されるはずです。
 ? Imported #386 (0x4edf…dad5)
 ? Idle (1 peers), best: #386 (0x4edf…dad5), finalized #383 (0x0dce…f63a), ? 1.1kiB/s ? 1.1kiB/s
 ? Imported #387 (0x6771…40b9)
 ? Idle (1 peers), best: #387 (0x6771…40b9), finalized #384 (0x6f65…429d), ? 1.0kiB/s ? 1.0kiB/s

しばらくはsubstrateとplasmをやっていきます

  • ここしばらくは、Plasmのチュートリアルを中心にしながら、substrateをやって、ノードの起動、runtimeの実装、ink!(スマートコントラクト)の実装が出来るくらいまでキャッチアップしたいと考えています。
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?