2
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 1 year has passed since last update.

PokladotのMainnetに繋いでみた。

Last updated at Posted at 2022-06-10

はじめに

筆者は、Polkadotの技術調査を行っている。
Polkadotのブロックチェーンはどのような情報を保持しているか確認したい背景がある。
手始めにPolkadotのRelay-chainのClient NodeとしてMainnetに繋いでみた。
接続する過程をまとめ、筆者が忘れてしまった時に確認するためのドキュメント(備忘録)を残すこととした。

本記事は以下の流れでPolkadotのMainnetに接続する。
1.Rustをインストールを行いPolkadotのソースコードが実行可能な環境整備をする。
2.Polkadotのオープンソースコードを取得する。
3.PolkadotのMainnetの接続を行う。
4.その後PolkadotのMainnetに接続できたか確認。

Rustのインストール(環境構築)

  • 実行環境
    • OS : Ubuntu20.04.4 LTS

以下の公式のインストール方法を参考にインストールを行う。

Rustのインストール
@username:~$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
terminal_出力
Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /home/username/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory located at:

  /home/username/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  /home/username/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /home/username/.profile
  /home/username/.bashrc

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>

> 1を入力

1を入力した後
info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: latest update on YYYY-MM-DD, rust version 1.61.0 (fe5b13d68 YYYY-MM-DD)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
 19.7 MiB /  19.7 MiB (100 %)  11.2 MiB/s in  2s ETA:  0s
info: downloading component 'rust-std'
 26.9 MiB /  26.9 MiB (100 %)  11.2 MiB/s in  2s ETA:  0s
info: downloading component 'rustc'
 55.4 MiB /  55.4 MiB (100 %)  10.8 MiB/s in  5s ETA:  0s
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
 19.7 MiB /  19.7 MiB (100 %)   8.7 MiB/s in  2s ETA:  0s
info: installing component 'rust-std'
 26.9 MiB /  26.9 MiB (100 %)  11.4 MiB/s in  3s ETA:  0s
info: installing component 'rustc'
 55.4 MiB /  55.4 MiB (100 %)  13.6 MiB/s in  4s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu installed - rustc 1.61.0 (fe5b13d68 YYYY-MM-DD)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source $HOME/.cargo/env

Versionの確認(正しくインストールができたかの確認)
@username:~$ rustc --version
rustc 1.61.0 (fe5b13d68 YYYY-MM-DD)

 
Versionの確認がうまくできない場合はPATH設定を行う。
 

@username:~$ cat $HOME/.cargo/env
#!/bin/sh
# rustup shell setup
# affix colons on either side of $PATH to simplify matching
case ":${PATH}:" in
    *:"$HOME/.cargo/bin":*)
        ;;
    *)
        # Prepending path in case a system-installed rustc needs to be overridden
        export PATH="$HOME/.cargo/bin:$PATH"
        ;;
esac
@username:~$ source $HOME/.cargo/env

 
改めてバージョン確認
 

正常な出力
@username:~$ rustc --version
rustc 1.61.0 (fe5b13d68 YYYY-MM-DD)

Polkadotのソースコードを取得してくる

実際にPolkadotをソースコードから実行する場合は、ソースコードを入手してビルドします。
またRustとサポートソフトウェアがインストールされていることを確認してください。

Polkadotのソースコードはオープンソースで公開されている。
GitHubからソースコードを取得し確認する。
確認段階では次のような手順になる。

@username:$ curl https://getsubstrate.io -sSf | bash -s -- --fast

次に、Polkadotのソースコードを入手します。
今回はgit cloneしてソースコードを入手する。
(GitHubのwebページからzipファイルをダウンロードをしてくることも可)

git clone
@username:$ git clone https://github.com/paritytech/polkadot.git
git clone ログ
ch/polkadot.git
Cloning into 'polkadot'...
remote: Enumerating objects: 1431987, done.
remote: Counting objects: 100% (1720/1720), done.
remote: Compressing objects: 100% (609/609), done.
remote: Total 1431987 (delta 1165), reused 1617 (delta 1103), pack-reused 1430267
Receiving objects: 100% (1431987/1431987), 1.70 GiB | 10.95 MiB/s, done.
Resolving deltas: 100% (1298717/1298717), done.

取得したソースコードの/polkadot/ディレクトリに移動する。
シェルスクリプトは、Rustをインストールまたは更新し、必要な依存関係をインストールします。

WebAssemblyをインストールとRustの更新
@username:$ cd polkadot
@username:$./scripts/init.sh   

次に、コードをビルドします。

警告
Mainnetに接続する場合は、リリースモード(--release)でビルドする必要があります。
(PCの性能にもよるが、数十分はかかる)

リリースモードでビルド
@username:$ cargo build --release
実行環境下ではビルドに20分程度かかった。
@username:~/polkadot$ cargo build --release
   Compiling log v0.4.17
   Compiling proc-macro2 v1.0.39
   (中略)
   Compiling polkadot v0.9.23 (/home/noname/ドキュメント/polkadot)
    Finished release [optimized] target(s) in 20m 29s

info
必要に応じてテストモードを実行してみましょう。
(PCの性能にもよるが、数十分はかかる)

必要に応じて、テストを実行
@username:$ cargo test --all --release

Polakadot-mainnetに接続

カスタムネームを設定する場合は--name "カスタムネーム"が必要(今回はNo_nameと設定した)

Mainnetに接続
@username:~/polkadot$ ./target/release/polkadot --chain=polkadot --name "No_name"
Mainnetに接続時の出力
@username:~/polkadot$ ./target/release/polkadot --chain=polkadot --name "No_name"
YYYY-MM-DD 13:00:38 Parity Polkadot    
YYYY-MM-DD 13:00:38 ✌️  version 0.9.23-016dc729710    
YYYY-MM-DD 13:00:38 ❤️  by Parity Technologies <admin@parity.io>, 2017-2022    
YYYY-MM-DD 13:00:38 📋 Chain specification: Polkadot    
YYYY-MM-DD 13:00:38 🏷  Node name: No_name    # 起動時に設定したノード名前が表示される.
YYYY-MM-DD 13:00:38 👤 Role: FULL    
YYYY-MM-DD 13:00:38 💾 Database: RocksDb at /home/noname/.local/share/polkadot/chains/polkadot/db/full    
YYYY-MM-DD 13:00:38 ⛓  Native runtime: polkadot-9230 (parity-polkadot-0.tx12.au0)    
YYYY-MM-DD 13:00:49 🏷  Local node identity is: XXXXXXXXXXXXXXXXXXXXXXxxxxxxxxxxxxXXXXXXXXXXXX    
YYYY-MM-DD 13:00:50 💻 Operating system: linux    
2022-06-10 13:00:50 💻 CPU architecture: x86_64    
2022-06-10 13:00:50 💻 Target environment: gnu    
2022-06-10 13:00:50 💻 CPU: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz    
2022-06-10 13:00:50 💻 CPU cores: 6
2022-06-10 13:00:50 💻 Memory: 15881MB    
2022-06-10 13:00:50 💻 Kernel: 5.13.0-48-generic    
2022-06-10 13:00:50 💻 Linux distribution: Ubuntu 20.04.4 LTS    
2022-06-10 13:00:50 💻 Virtual machine: no    
2022-06-10 13:00:50 📦 Highest known block at #28217    
2022-06-10 13:00:50 〽️ Prometheus exporter started at 127.0.0.1:9615    
2022-06-10 13:00:50 Running JSON-RPC HTTP server: addr=127.0.0.1:9933, allowed origins=Some(["http://localhost:*", "http://127.0.0.1:*", "https://localhost:*", "https://127.0.0.1:*", "https://polkadot.js.org"])    
2022-06-10 13:00:50 Running JSON-RPC WS server: addr=127.0.0.1:9944, allowed origins=Some(["http://localhost:*", "http://127.0.0.1:*", "https://localhost:*", "https://127.0.0.1:*", "https://polkadot.js.org"])    
2022-06-10 13:00:50 🏁 CPU score: 578MB/s    
2022-06-10 13:00:50 🏁 Memory score: 8230MB/s    
2022-06-10 13:00:50 🏁 Disk score (seq. writes): 114MB/s    
2022-06-10 13:00:50 🏁 Disk score (rand. writes): 51MB/s    

このあとPolkadotブロックチェーンの同期が始まる。

Mainnetに接続したノードの確認(カスタムネームで検索)

webブラウザでPolkadot Teremetryにアクセスすると以下の画像の通りになる。
Polkadot Teremetryには、リアルタイムでpolkadot Mainnetに接続されているすべてのノードを観測することができる。
Screenshot from 2022-06-10 13-54-34.png

この画面の状態からキーボード入力を行うと自ノードの名前(カスタムネーム)を検索することができる。

Screenshot from 2022-06-10 13-00-03.png

おわりに

PolkadotにMainnetに接続を行ってみました。

また筆者は今後Rustを勉強中であり、Polkadotのソースコードを読んでいく予定である。
ソースコードを読んでいく上で気付いた点や発見をしたらまた新たな記事を書いていきたいと思う。

参考サイト

Polkadot公式

Polkadotのオープンソースコード

Rust公式

2
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
2
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?