2023-11-21 こちらの記事は古くなっております。Symbol コミュニティの記事が最新です。
まえがき
皆様お元気でらっしゃいますでしょうか、コロナ禍がおさまりつつあるこの年末、あぁ年末、もう年末。あっという間に一年が経ちまして。そういえば昨年の今頃、Symbolノード構築手順を書きました。そしてかなりのアクセス数になっておりました。
やはりハーベスト報酬とノード報酬で、それなりの利益が出る(可能性がある)というのは大事なことだと思いますね。そして報酬は100年続きます。
この一年を振り返ってみますと、2021年3月にSymbolメインネットがローンチされZaifにSymbolが上場、10月には突如bitbankにも上場されました。また、11月にはコアデブとNGL等との関係が整理され、よりコミュニティ重視へと路線転換を表明、その同意を得るハードフォーク(キプロス)があり、キービジュアルの刷新が図られサイバーパンクな宇宙海賊風に。コアデブの、特にハチェット姉さん(@0x6861746366574)がエンドユーザーとのコミュニケーションを積極的に取るようになり情報発信および情報開示の推進が見られました。昨年と比べると情報発信をするユーザーが段違いに増え、Symbol界隈がとてもにぎやかになってきております。実際情報を追いきれません
現在のところ1400台強のノードが稼働しており、Symbolチェーンをベースとしたデータが絶対消えないNFT-Driveサービスが登場、クラウドファウンディング的なQUESTサービスなど、個人にエンパワーメントするサービスが続々と登場しています。そして米国Valkyrie財団が新たに信託に加わり、今後スイスに「Fushicho(不死鳥)財団」の設立、米国デラウェア州に暗号通貨NGO「Symbolシンジケート」の設立、また「リンガフランカ」という組織の設立などが予定されています。いやはや加速してます、してます。
さて今後の期待が高まったところで、昨年書いたノード構築記事を読み返しますといささか古くなっておりまして。メインネットローンチ前後の情報収集中の記事だったため、ノード構築手順と委任ハーベスト手順が入り混じっており、混乱を呼ぶものとなっております。ということで、本記事では一旦ノード構築に焦点を絞り、改めて手順を整理したいと思います。ツールのSymbol Block Explorer(testnet)や蛇口WEBアプリ等のURLも変わってたりしますので。
ということで以下は本題の、Symbolノード構築に興味を持った初心者が テストネット でノード構築するところまでの手順です。ちょうどタイミングよくというか昨日リセットされたようですね。
ノード構築に自信がついたらメインネットへ参加しましょう!
Symbol テストネットノード構築
事前準備
- サーバー: VPSをレンタル or 自宅サーバー(より分散を Node map)
- OS: Ubuntu 20.04
symbol-bootstrapのバージョン確認
-
https://github.com/symbol/symbol-bootstrap/releases
- 現時点でバージョンは 1.1.1 でした。こちらは定期的にチェックしましょう。またコアデブ3人をフォローしておくと良いでしょう。
- https://twitter.com/NCOSIGIMCITYNRE
- https://twitter.com/Jaguar0625
- https://twitter.com/0x6861746366574
公式ドキュメント
ハードウェア要件
本記事では dual node 設定で構築します。
- CPU: 4 cores
- RAM: 16GB
- Disk size: 750 GB
- Disk speed: 1500 IOPS SSD
開放するポート
- 3000
- 7900
サーバー起動後
以下、sudo su - できるユーザーでOSにログインできているとします。
symbol-bootstrap 稼働要件
-
https://github.com/symbol/symbol-bootstrap
- Node 12.0.0+
- Docker 18.3.0+
- Docker Compose 1.25.0+
Node.js インストール
公式サイト(公式ではnvmでインストールしろとありますが…)
$ sudo apt install -y curl
$ sudo curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
$ sudo apt install -y nodejs
$ node -v
v16.13.1
npm 最新化
$ sudo npm install -g npm@latest
$ npm -v
8.2.0
Dockerインストール
既存のパッケージのリストを更新します。
$ sudo apt update
いくつかの必要になるパッケージをインストールします。
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
Docker公式リポジトリを登録します。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
パッケージデータベースを更新します。
$ sudo apt update
リポジトリが、デフォルトのUbuntuではなくDockerリポジトリになっていることを確認します。
$ apt-cache policy docker-ce
Dockerをインストールします。
$ sudo apt install docker-ce
実行されていることを確認します。
$ sudo systemctl status docker
sudoなしでDockerコマンドを実行できるようにします。確認をします。
$ id -nG
グループに追加します。
$ sudo usermod -aG docker ${USER}
dockerグループに追加されたことを確認します。
$ id -nG
グループ追加を適用させるためにサーバーから一旦ログアウトおよび再度ログインするか、次のように入力します。
$ su - ${USER}
バージョン確認
$ docker -v
Docker version 20.10.11, build dea9396
Dockerのインストールが完了です。
Docker Compose インストール
バージョンを確認します。
要件にあるように2系ではなく1系をインストールします。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
コマンド実行できるように権限を設定します
$ sudo chmod +x /usr/local/bin/docker-compose
バージョン確認
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
Symbol Bootstrap をインストール
リリース情報を確認
$ sudo npm install -g symbol-bootstrap@1.1.2-alpha-202112032036
$ sudo symbol-bootstrap -v
symbol-bootstrap/1.1.2-alpha-202112032036 linux-x64 node-v16.13.1
設定ファイルの生成
なお同期したブロックチェーンのデータがtarget配下に保存される。
$ cd ~/
$ mkdir -p ~/symbol-bootstrap/target
$ cd ~/symbol-bootstrap
設定ファイルの作成(やらなくてもOK。ノードリストのNameにランダム文字列が表示されます)
$ vi my-preset.yml
----
nodes:
-
host: <あなたのホスト名>
friendlyName: <好きな文字列>
maxUnlockedAccounts: <委託可能数>
beneficiaryAddress: <ハーベスト手数料の送付先ウォレットアドレス>
----
建てたいノードタイプによってコマンドが変わります。
$ symbol-bootstrap config -p testnet -a dual # テストネットの場合
$ symbol-bootstrap config -p testnet -a dual -c my-preset.yml # 上記の個別設定を読み込ませる場合
$ symbol-bootstrap config -p mainnet -a dual # メインネットの場合
privateKeyを扱うファイル操作するときのためのをパスワードを設定する必要があります。
? Enter password to use to encrypt and decrypt custom presets, addresses.yml, and preset. yml files. When providing a password, private keys will be encrypted. Keep this password in a secure place!
friendlyName等が、自分のプリセット設定が読み込まれているか確認します。
$ less target/nodes/node/server-config/resources/config-node.properties
生成されたpublicKey等を確認します。
なお、privateKeyが伏字になっていますので、確認したい場合は手順を他記事を探してみてください。
$ less target/addresses.yml
コンテナの起動と停止
$ symbol-bootstrap start --detached # 一回目だけ
$ symbol-bootstrap stop # 停止
$ symbol-bootstrap run --detached # 二回目から
コンテナの起動状態を確認します。
$ symbol-bootstrap healthCheck
APIゲートウェイの疎通をまずはローカルで確認します。
$ curl http://localhost:3000/node/info
{"version":16777985,"publicKey":"F6A35285E5AF7744C578524012B3FB1CBEEE23AFED3CB019C669BA6104D8D0DC","networkGenerationHashSeed":"3B5E1FA6445653C971A50687E75E6D09FB30481055E3990C84B25E9222DC1155","roles":3,"port":7900,"networkIdentifier":152,"host":"ik1-102-57776.vs.sakura.ne.jp","friendlyName":"CURUPO_TEST","nodePublicKey":"FC7BC8B5F56F483018F4EA70D4335ADFEE45BF08C1F8194757DFD1F0905B35C2"}
以下のコマンドを何回か叩いて、チェーン高 (height) が高くなっていけばブロックチェーンの同期はOK
$ curl http://localhost:3000/chain/info
{"scoreHigh":"0","scoreLow":"69786224148995062","height":"6841","latestFinalizedBlock":{"finalizationEpoch":3,"finalizationPoint":68,"height":"1440","hash":"BFC81A9E0680618ABDDDEA8D5566388959B0100A8CD13CF715107F655B873C9A"}}
↓
{"scoreHigh":"0","scoreLow":"87786224148912949","height":"8641","latestFinalizedBlock":{"finalizationEpoch":4,"finalizationPoint":68,"height":"2160","hash":"0ED79886586F1AD641B7F39A8BAC46CB0A1D6350C6A51012DD4EBE8EA613F7AD"}}
ローカルでアクセス可能なら、VPSで払い出されたIPまたは自宅サーバーに割り当ててある固定IPアドレスでも叩いてみましょう。
$ curl http://{IPアドレス}:3000/chain/info
{"scoreHigh":"0","scoreLow":"167633496728810663","height":"10837","latestFinalizedBlock":{"finalizationEpoch":9,"finalizationPoint":45,"height":"5760","hash":"44CA32FC58B565A9C39156C7E28F979EB8B80F933A82D6B4454CFF5583BFD548"}}
最後に テストネット のノードリストに追加されたか確認してみましょう。
大丈夫なようですね、これであなたもノード大家の仲間入りィィ!!
https化については以下の記事を参照ください。
ノードに対してウォレットから委任ハーベストするパートについては、別記事を早めに書きます(予定)。
ともあれノード構築で困ったらノード構築の神々が集うタヌソンSlack道場へ。
有益な情報を得られると思います。それでは!