WEB・IT・ゲームの趣味ブログ

ハーベスト用 Symbolノードの構築方法(さくらのVPS)

ハーベスト用 Symbolノードの構築方法(さくらのVPS)

暗号通貨XYMのプラットフォームであるSymbol。

ノードを構築すればSymbolのネットワークプラットフォームに貢献し、より効率的にハーベストを行うことができます。

この記事では、さくらのVPSを利用してSymbolのノードを構築する手順とハーベスティングの方法について解説します。

さくらのVPSを利用すれば、独自ドメインを使ったハーベストノードも作成可能です。

Symbolノード構築の参考文献

主に自分用です。

私がノードを構築する際に参考にしたページをまとめています。ノードの設定やSymbol Bootstrapの使い方について詳しく知りたい人は参考にしてください。

Symbol Documentation

Github

docker

Symbol testnet

Symbolノードとハーベスティング

Symbolノードとハーベスティング

Symbolは、暗号通貨XYMのプラットフォームの名称です。

ノードは暗号通貨においてキーとなる「ブロックチェーン」の作業要員です。ノードのネットワークがブロックチェーンプラットフォームを構成します。

ノードは取引(トランザクション)の承認作業の見返りに手数料を獲得します。Symbolではこれをハーベスティングと呼んでいます。

ハーベスト自体はノードを持っていなくても可能です。

しかし他人のノードを利用するとその分手数料を取られます。

逆に言えば、自分でノードを運営すれば多くの手数料を得られるわけです。

より収益性の高いハーベストを行ために自分自身のノードを構築しましょう。

VPSサーバーを用意する(さくらのVPS)

サーバーでも自宅PCでも構いませんが、ノードの構築にはそれなりのスペックを持ったマシンが必要になります。

今回はさくらのVPSを利用します。

さくらのVPS は、サーバー通信事業の大手「さくらインターネット」が運営する仮想専用サーバーです。

さくらのVPS
さくらのVPS

ノードの構築ではAllnodesが有名ですが、Allnodesはスペックが不明でホスト名もallnodesのサブドメインになります。ノード名も「Allnodes0000」のようになるので、他と同じようなノードが乱立してしまい目立ちません。

特にスペックはハーベスト効率に影響するため非常に重要です。

ブロックチェーンノードの実行は、ディスクスペース、メモリ、および CPU 要件の点で 非常に要求が厳しい です。 以下の最小要件 を満たさない場合、ネットワークの残りの部分に追いつくのに苦労するノードが生成されます。グローバルブロックチェーンは影響を受けませんが、ノードがノード報酬を収集する資格があることはめったにありません。

ハードウェア要件 – Symbol Documentation

その点でさくらのVPSは、

サーバースペックが明確に表記されており、ノードの将来性を心配する必要はありません。独自ドメインも使用できますしノード名も自由に設定可能です。

Symbolノード構築に必要な最小要件は次の通りです。

ノードの最小要件Peer ノードAPI ノードデュアル&投票ノード
CPU2 コア4 コア4 コア
RAM8GB16GB16GB
ディスクサイズ500 GB750 GB750 GB
ディスク速度1500 IOPS SSD1500 IOPS SSD1500 IOPS SSD
ノードの最小要件

推奨スペックはもう少し高くなります。

ノードの推奨要件Peer ノードAPI ノードデュアル&投票ノード
CPU4 コア8 コア8 コア
RAM16GB32GB32GB
ディスクサイズ500 GB750 GB750 GB
ディスク速度1500 IOPS SSD1500 IOPS SSD1500 IOPS SSD
ノードの推奨要件

さくらのVPSにおけるプランの選択肢は8G, 16G, 32Gの3つです。

Symbolハーベスト向け、さくらのVPSのプラン
さくらのVPSのプラン

将来性を考えるのであれば、推奨スペックを満たす方が好ましいですが、料金は非常に高くなります。コストパフォーマンス的には16Gがおすすめです。

OSはubuntu server 20.04で解説していますが、他の物でも構いません。なんでもインストールできます。

さくらのVPSには2週間の無料お試し期間があります。気になる人は一度試してみてください。

公式サイトはこちら

ポートの解放

Symbolノードの構築を始める前に以下のポートの解放を設定します。

サーバー契約がまだの場合は下記記事を参考にしてください。

開放するポート番号は次の通りです。

ポート番号説明
80http通信
443https通信
3000REST ゲートウェイが使用する
3001ゲートウェイのHTTPSモードで使用
7900ノード間の通信

さくらのVPSのコントロールパネルにアクセスして、グローバルネットワーク > パケットフィルターで設定できます。

さくらのVPS ポートの解放設定

さくらのVPS:パケットフィルター

Symbolノードの構築方法

サーバーが準備できた後は実際にSymbolノードを構築していきます。

Symbolノードのネットワーク環境を構築するには、次のツールが必要になります。

  • node.js(バージョン12以上)
  • docker
  • docker-compose

それぞれのインストール方法を解説していきます。

  1. nvmのインストール
  2. Node.jsのインストール
  3. dockerのインストール
  4. docker-composeのインストール
  5. symbol-bootstrapのインストール

サーバーに接続してログインする

まずサーバーに接続してください。

Windowsの場合、コマンドプロンプトWindows PowerShellを開いて次のように打ち込みます。

ssh ユーザー名@サーバーのIPアドレス

さくらのVPSでUbuntuをインストールした場合、ユーザー名はubuntuです。IPアドレスはサーバーのコントロールパネルで確認できます。

パスワードを入力すればログインできます。

Linuxではパスワードを打ち込んでも表示されませんが、入力自体はされています。

ログイン後、作業前にUbuntuのパッケージ管理ツールを更新しておきます。

sudo apt update
sudo apt upgrade

サーバー操作は基本的にコマンドラインで実行します。もしファイル操作が面倒と感じる人はFTPソフトを利用してください。GUIでサーバーのファイルを操作できます。

nvmのインストール

nvmnode.jsのパッケージ管理ツールです。Symbolではnode.jsnvmでインストールすることが推奨されています。

次のコマンドでnvmをインストールします。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

インストール後一度ログアウト。

exit

再度ログインしてインストールされたか確認。

command -v nvm

nvmと表示されればインストール完了です。

Node.jsのインストール

次にnode.jsをインストールします。

インストール可能なnode.jsのリストを表示してバージョンを確認します。

nvm ls-remote

> ~
v16.13.0 (LTS: Gallium)
v16.13.1 (LTS: Gallium)
v16.13.2 (LTS: Gallium)
v16.14.0 (LTS: Gallium)
v16.14.1 (LTS: Gallium)
v16.15.0 (Latest LTS: Gallium)

~

Latest LTSのバージョンを選んでnode.jsをインストールします。

nvm install 16.15.0

現在選択されているnode.jsのバージョン確認。

nvm current

> v16.14.2

npmをアップデートしておきます。

$ npm update -g npm

dockerのインストール

dockerは「コンテナ仮想化」と呼ばれるプラットフォームで、ノードの実行環境を提供してくれます。dockerがなければノードは動きません。

dockerはSymbolノード構築において非常に重要なアプリケーションです。

まずは、aptがHTTPSを通してリポジトリを使用するためのパッケージを揃えます。

sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release

次にdockerインストールのリポジトリを、ubuntu公式 → dockerに変更します。これは古いバージョンのdockerを避けるためです。

docker公式GPGキーを追加。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

リポジトリのセットアップ。

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

dockerリポジトリからインストールするようになっているか確認。

sudo apt update
apt policy docker-ce

> Version table:
5:20.10.14~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
5:20.10.13~3-0~ubuntu-focal 500
500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages

ダウンロード先がdocker.comになっていれば、dockerをインストール。

sudo apt install docker-ce

一般ユーザーがdockerコマンドを実行できるように、ユーザーをdockerグループに追加。

sudo usermod -aG docker ユーザー名

バージョンの確認。

docker -v

> Docker version 20.10.16

docker-composeのインストール

docker-composeは複数のdockerイメージをまとめて起動するツールです。コンテナの起動コードを簡素化できるメリットがあります。

次のコマンドでv1.29.2インストールします。

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

2022年5月時点でdocker-composeの最新バージョン2.5.0ですが、エラーが発生して動きません。そのため過去バージョンの1.29.2を使用しています。

docker-composeのパーミッションを変更して実行権限を追加。

sudo chmod +x /usr/local/bin/docker-compose

バージョンの確認。

docker-compose --version

> docker-compose version 1.29.2

symbol-bootstrapのインストール

symbol-bootstrapは、Symbolノードの構築・設定・管理維持を行うツールです。

# インストールするディレクトリに移動
cd
# symbol-bootstrap のインストール
npm install -g symbol-bootstrap

インストール後、symbol-bootstrapの動作環境を満たしているか確認します。

symbol-bootstrap verify

> info OS: Linux – 5.4.0-107-generic – linux
info NodeVersion – OK! – 16.14.2
info Docker Version – OK! – 20.10.14
info Docker Compose Version – OK! – 1.29.2
info Docker Run Test – OK! – Command ‘docker run hello-world’ executed!
info Sudo User Test – OK! – Your are not the sudo user!

エラーが出力されなければ大丈夫です。

symbol-bootstrapを使ったノード構築

ノード構築時の独自設定を行うカスタムプリセットmy-preset.ymlを作成します。ファイル名は何でもOKです。

nano my-preset.yml

編集画面が開くので任意の設定を追加してください。

以下は設定例です。

my-preset.yml

nodes:
    -
        host: #ドメイン(例: example.com)
        friendlyName: #ノード名
        maxUnlockedAccounts: 15 #デリゲート用アカウントの最大数
        minFeeMultiplier: 100 # ノードの手数料係数
        beneficiaryAddress: # ハーベスト報酬を受け取るアカウントのアドレス
        mainPrivateKey: #メインアカウントの秘密鍵

hostには独自ドメインが使用できます。空欄にした場合はIPアドレスが使用されます。

既にメインアカウントを持っている場合は、mainPrivateKeyにアカウントの秘密鍵を記載してください。

mainPrivateKeyを空欄にすると新しいアカウントが作成されます。

メインアカウントは自動的にハーベストが有効になります。ノードはこのアカウントのインポータンスを使用してハーベストを行います。

beneficiaryAddressは記載しなければ自動的にメインアカウントが適用されます。

記載した場合、アドレスを入力しなければnullが設定されてノード報酬を徴収しなくなります。(委任者が100%のハーベスト報酬を得る)

harvestBeneficiaryPercentageは本来、ノード手数料を調整するパラメータのはずですが現状では利用できません。設定するとノードが正常に機能しなくなります。

設定できるプロパティは公式ドキュメントを参照してください。

カスタムプリセットに秘密鍵を記載する場合は十分注意してください。ymlファイルはsymbol-bootstrap encryptで暗号化できます。

カスタムプリセット作成後はノードを生成します。

ノードのセットアップにはsymbol-bootstrap configコマンドを使用します。

利用目的に合わせて以下どちらかのコマンドを実行してください。実際の運用ではmainnetを使用します。

# テストネットワーク用ノードの作成
symbol-bootstrap config -p testnet -a dual -c my-preset.yml
# メインネットワーク用ノードの作成
symbol-bootstrap config -p mainnet -a dual -c my-preset.yml

-pはプリセット(testnet, mainnet)、-aはアセンブリ(peer, api, dual)を指定します。

-cをつけるとカスタムプリセットを読み込んでノードを作成します。先ほど作成した設定ファイルを指定してください。

詳しい設定方法については、Symbol公式ドキュメントが参考になります。

コマンドを実行すると次のように表示されます。

Enter the password used 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!

PrivateKeyを暗号化するためのパスワードを入力してください。パスワードは何でもかまいませんが、ノード操作の様々な場面で必要になります。

次に起動用のdocker-compose.ymlを作成します。

# docker-compose.ymlの作成
symbol-bootstrap compose

これでノードの準備が整いました。実際に動くか試してみてください。

ノードの起動・停止コマンドは次の通りです。

# ノードの起動
symbol-bootstrap run -d
# ノードの停止
symbol-bootstrap stop

-dをつけることによってバックグラウンドで処理を行います。(ログを表示させない)

ノードが起動しているかどうかはSymbol Block Explorerで確認できます。

Symbol ノードの分布

ノードがハーベストを行うための設定

ノードは起動するだけではハーベストを実行できません。ネットワークにアナウンスして登録する必要があります。

Symbol Bootstrap はデフォルトで リモートハーベスティング を有効にした Peer ノードを作成しますが、 AccountKeyLinkTransaction と VrfKeyLinkTransaction をネットワークにアナウンスして登録する必要があります。

ハーベスティングの有効化

以下のコマンドでハーベスティングを有効にします。

symbol-bootstrap link

このコマンドにはトランザクション手数料(約0.05XYM)が必要です。

Your account does not have enough XYMと表示される場合は、メインアカウントに資金(XYM)を追加してください。

testnetの場合は、Symbol Faucetから資金を追加できます。

Symbol Faucetで資金(XYM)を追加する

資金を追加するとアカウントがSymbol Block Explorerに表示されます。

#Symbol Block Explorer

# testnet
https://testnet.symbol.fyi/accounts/アカウントアドレス
# mainnet
https://symbol.fyi/accounts/アカウントアドレス

ハーベスティングを有効にした後は、ノードを運用して実際にハーベストが行われているか確認してください。最低でもメインアカウントに10,000XYMが必要です。

symbol-bootstrap linkでハーベスティングを有効化できないとき

XYMを追加しているにもかかわらず、symbol-bootstrap linkでエラーが起こるときは次の理由が考えられます。

  • その時点でノードがまだ起動していない
  • APIノードではない

大抵の場合、ノードが停止しているのが原因です

ノード起動直後はブロック高が低いのでSymbolネットワークはそのノードを使いません。ブロック高が上昇するまで待ってください。

これには数時間かかる可能性があります。

ブロック高は次のコマンドで確認できます。

curl http://localhost:3000/chain/info

> {“height”:”1139670″,”scoreHigh”:”6″….

heightの部分がブロック高です。現行のブロック高に追いつくまで待ってください。

別の方法として、–useKnownRestGatewaysパラメタをつけて他のノードを選択する方法もあります。

symbol-bootstrap link --useKnownRestGateways

完了するとAggregateTransaction(Complete)と表示されます。

ハーベストが有効になっているか確認する

上で述べた通り、ノードはメインアカウントのインポータンスを利用してハーベストを行います。

ハーベストの状態はSymbol Walletハーベストで確認できます。

メインアカウントのハーベスト状況は「ACTIVE(有効)」と表示されます。

ハーベストの状態:有効

心配な人は下記記事の方法でハーベストが有効化されているか確認してください。

独自ドメインのSymbolノードを作成したいとき

独自ドメインを利用するメリットは大きいです。

独自ドメインを使用すれば、印象に残りやすくなり他のノードと差別化できます

ノード一覧を見ていて「似たような名前ばかり」だと思った人は独自ドメインを使用しましょう。独自ドメインは非常に目に留まりやすいです。

サーバーを移行する場合でも独自ドメインを持っていれば問題なく引っ越しできます。

まずは独自ドメインを取得してください。料金の安いスタードメインがおすすめです。

公式サイトはこちら

ノードURLに独自ドメインを使うには、カスタムプリセットhostに独自ドメインを設定します。

my-preset.yml

nodes:
    -
        host: #ドメイン(例: example.com)
        friendlyName: #ノード名
        maxUnlockedAccounts: 15 #デリゲート用アカウントの最大数
        minFeeMultiplier: 100 # ノードの手数料係数
        beneficiaryAddress: # ハーベスト報酬を受け取るアカウントのアドレス
        mainPrivateKey: #メインアカウントの秘密鍵
httpsProxies:
    -
        excludeDockerService: false

excludeDockerService: falseはHTTPS通信のための設定です。

後はsymbol-bootstrap configでカスタムプリセットを読み込めば、独自ドメインのノードが完成します。

DNSレコードの編集を忘れずに行ってください。

DNSレコードの編集

独自ドメインを使うにはもう1つDNSレコードの設定が必要です。

DNSレコードを編集することで、ドメインがどのIPアドレスに向かうかを設定できます。今回ではさくらのVPSで契約したサーバーのIPアドレスに向かうように設定します。

DNSレコードはドメインの管理画面で編集できます。

以下はスタードメインの例です。

管理画面にログインしてスタードメイン管理 > 管理ドメイン一覧 > ドメイン管理ツール

スターサーバーのドメイン管理ツール

DNSレコードの編集をクリック。

DNSレコードの編集1

レコード追加タブをクリック。

DNSレコードの編集2
  • ホスト名:サブドメインでない場合は空欄にする
  • タイプ:IPv4の場合はA(IPアドレス)、IPv6の場合はAAAA(IPv6アドレス)に設定
  • コンテンツ:IPアドレスを入力する(今回はさくらのVPSのサーバーIP)

コンテンツにはドメインと関連付けるIPアドレスを入力してください。

さくらのVPSのサーバーIPはコントロールパネルで確認できます。

確認画面をクリックして確定するで追加します。

以下ではIPv4IPv6両方設定していますが、さくらのVPSではデフォルトでIPv6が無効化されています。

IPv4だけ設定すればOKです。

DNSレコードの編集3

これでドメイン名でサーバーにアクセスできるようになります。

反映には少し時間がかかります。アクセスできない場合は待ってみてください。

Symbolノードの作成方法まとめ

さくらのVPSを利用したSymbolノードの構築方法を紹介しました。

以下まとめです。

  • ノードを運営すればより多くのハーベスト報酬を獲得できる
  • Symbolノードを構築しなくてもハーベストは可能
  • しかし、他人のノードを利用すると手数料を取られる
  • ノードの構築にはサーバーが必要。おすすめは「さくらのVPS」
  • 独自ドメインのノードを作成することも可能
  • 独自ドメインのノードは目立ちやすい
  • ドメイン取得は「スタードメイン」がおすすめ