仮想通貨のハーベストという言葉を聞いたことがあるでしょうか? XYMハーベストとはSymbolネットワーク貢献の見返りに暗号通貨XYMを受け取ることです。放っておくだけで収益が発生します。XYM(シンボル)ハーベストの始め方を解説します。
- Symbolノード構築の参考文献
- Symbolノードとハーベスティング
- VPSサーバーを用意する(さくらのVPS)
- ポートの解放
- Symbolノードの構築方法
- サーバーに接続してログインする
- nvmのインストール
- Node.jsのインストール
- dockerのインストール
- docker-composeのインストール
- symbol-bootstrapのインストール
- symbol-bootstrapを使ったノード構築
- ノードがハーベストを行うための設定
- symbol-bootstrap linkでハーベスティングを有効化できないとき
- ハーベストが有効になっているか確認する
- 独自ドメインのSymbolノードを作成したいとき
- DNSレコードの編集
- Symbolノードの作成方法まとめ
暗号通貨XYMのプラットフォームであるSymbol。
ノードを構築すればSymbolのネットワークプラットフォームに貢献し、より効率的にハーベストを行うことができます。
この記事では、さくらのVPSを利用してSymbolのノードを構築する手順とハーベスティングの方法について解説します。
さくらのVPSを利用すれば、独自ドメインを使ったハーベストノードも作成可能です。
Symbolノード構築の参考文献
主に自分用です。
私がノードを構築する際に参考にしたページをまとめています。ノードの設定やSymbol Bootstrapの使い方について詳しく知りたい人は参考にしてください。
Symbol Documentation
Github
docker
Symbol testnet
Symbolノードとハーベスティング
Symbolは、暗号通貨XYMのプラットフォームの名称です。
ノードは暗号通貨においてキーとなる「ブロックチェーン」の作業要員です。ノードのネットワークがブロックチェーンプラットフォームを構成します。
ノードは取引(トランザクション)の承認作業の見返りに手数料を獲得します。Symbolではこれをハーベスティングと呼んでいます。
ハーベスト自体はノードを持っていなくても可能です。
しかし他人のノードを利用するとその分手数料を取られます。
逆に言えば、自分でノードを運営すれば多くの手数料を得られるわけです。
より収益性の高いハーベストを行ために自分自身のノードを構築しましょう。
VPSサーバーを用意する(さくらのVPS)
サーバーでも自宅PCでも構いませんが、ノードの構築にはそれなりのスペックを持ったマシンが必要になります。
今回はさくらのVPSを利用します。
さくらのVPS は、サーバー通信事業の大手「さくらインターネット」が運営する仮想専用サーバーです。
ノードの構築ではAllnodesが有名ですが、Allnodesはスペックが不明でホスト名もallnodesのサブドメインになります。ノード名も「Allnodes0000」のようになるので、他と同じようなノードが乱立してしまい目立ちません。
特にスペックはハーベスト効率に影響するため非常に重要です。
ブロックチェーンノードの実行は、ディスクスペース、メモリ、および CPU 要件の点で 非常に要求が厳しい です。 以下の最小要件 を満たさない場合、ネットワークの残りの部分に追いつくのに苦労するノードが生成されます。グローバルブロックチェーンは影響を受けませんが、ノードがノード報酬を収集する資格があることはめったにありません。
ハードウェア要件 – Symbol Documentation
その点でさくらのVPSは、
サーバースペックが明確に表記されており、ノードの将来性を心配する必要はありません。独自ドメインも使用できますしノード名も自由に設定可能です。
Symbolノード構築に必要な最小要件は次の通りです。
ノードの最小要件 | Peer ノード | API ノード | デュアル&投票ノード |
---|---|---|---|
CPU | 2 コア | 4 コア | 4 コア |
RAM | 8GB | 16GB | 16GB |
ディスクサイズ | 500 GB | 750 GB | 750 GB |
ディスク速度 | 1500 IOPS SSD | 1500 IOPS SSD | 1500 IOPS SSD |
推奨スペックはもう少し高くなります。
ノードの推奨要件 | Peer ノード | API ノード | デュアル&投票ノード |
---|---|---|---|
CPU | 4 コア | 8 コア | 8 コア |
RAM | 16GB | 32GB | 32GB |
ディスクサイズ | 500 GB | 750 GB | 750 GB |
ディスク速度 | 1500 IOPS SSD | 1500 IOPS SSD | 1500 IOPS SSD |
さくらのVPSにおけるプランの選択肢は8G, 16G, 32Gの3つです。
将来性を考えるのであれば、推奨スペックを満たす方が好ましいですが、料金は非常に高くなります。コストパフォーマンス的には16Gがおすすめです。
OSはubuntu server 20.04で解説していますが、他の物でも構いません。なんでもインストールできます。
さくらのVPSには2週間の無料お試し期間があります。気になる人は一度試してみてください。
公式サイトはこちら
ポートの解放
Symbolノードの構築を始める前に以下のポートの解放を設定します。
サーバー契約がまだの場合は下記記事を参考にしてください。
VPS(バーチャル・プライベート・サーバー)、仮想専用サーバー。VPSはマルチプレイゲーム用サーバーや暗号通貨のノード構築に適しています。さくらのVPSの申し込み方法と無料お試し期間の内容、ポートの開放方法について解説します。
開放するポート番号は次の通りです。
ポート番号 | 説明 |
---|---|
80 | http通信 |
443 | https通信 |
3000 | REST ゲートウェイが使用する |
3001 | ゲートウェイのHTTPSモードで使用 |
7900 | ノード間の通信 |
さくらのVPSのコントロールパネルにアクセスして、グローバルネットワーク > パケットフィルターで設定できます。
Symbolノードの構築方法
サーバーが準備できた後は実際にSymbolノードを構築していきます。
Symbolノードのネットワーク環境を構築するには、次のツールが必要になります。
- node.js(バージョン12以上)
- docker
- docker-compose
それぞれのインストール方法を解説していきます。
- nvmのインストール
- Node.jsのインストール
- dockerのインストール
- docker-composeのインストール
- symbol-bootstrapのインストール
サーバーに接続してログインする
まずサーバーに接続してください。
Windowsの場合、コマンドプロンプトやWindows PowerShellを開いて次のように打ち込みます。
ssh ユーザー名@サーバーのIPアドレス
さくらのVPSでUbuntuをインストールした場合、ユーザー名はubuntuです。IPアドレスはサーバーのコントロールパネルで確認できます。
パスワードを入力すればログインできます。
Linuxではパスワードを打ち込んでも表示されませんが、入力自体はされています。
ログイン後、作業前にUbuntuのパッケージ管理ツールを更新しておきます。
sudo apt update
sudo apt upgrade
サーバー操作は基本的にコマンドラインで実行します。もしファイル操作が面倒と感じる人はFTPソフトを利用してください。GUIでサーバーのファイルを操作できます。
nvmのインストール
nvmはnode.jsのパッケージ管理ツールです。Symbolではnode.jsはnvmでインストールすることが推奨されています。
次のコマンドで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で確認できます。
- https://testnet.symbol.fyi/nodes
- https://symbol.fyi/nodes (Mainnetではすぐに反映されないので注意)
ノードがハーベストを行うための設定
ノードは起動するだけではハーベストを実行できません。ネットワークにアナウンスして登録する必要があります。
Symbol Bootstrap はデフォルトで リモートハーベスティング を有効にした Peer ノードを作成しますが、 AccountKeyLinkTransaction と VrfKeyLinkTransaction をネットワークにアナウンスして登録する必要があります。
ハーベスティングの有効化
以下のコマンドでハーベスティングを有効にします。
symbol-bootstrap link
このコマンドにはトランザクション手数料(約0.05XYM)が必要です。
Your account does not have enough XYMと表示される場合は、メインアカウントに資金(XYM)を追加してください。
testnetの場合は、Symbol Faucetから資金を追加できます。
資金を追加するとアカウントが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のハーベストが本当に有効化されているか、進行中のまま止まっていなか不安ではないでしょうか? Symbolハーベストが有効化されているかはっきりと確認する方法を解説します。XYMのハーベストが委任できないときにも有効です。
独自ドメインの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レコードの編集をクリック。
レコード追加タブをクリック。
- ホスト名:サブドメインでない場合は空欄にする
- タイプ:IPv4の場合はA(IPアドレス)、IPv6の場合はAAAA(IPv6アドレス)に設定
- コンテンツ:IPアドレスを入力する(今回はさくらのVPSのサーバーIP)
コンテンツにはドメインと関連付けるIPアドレスを入力してください。
さくらのVPSのサーバーIPはコントロールパネルで確認できます。
確認画面をクリックして確定するで追加します。
以下ではIPv4とIPv6両方設定していますが、さくらのVPSではデフォルトでIPv6が無効化されています。
IPv4だけ設定すればOKです。
これでドメイン名でサーバーにアクセスできるようになります。
反映には少し時間がかかります。アクセスできない場合は待ってみてください。
Symbolノードの作成方法まとめ
さくらのVPSを利用したSymbolノードの構築方法を紹介しました。
以下まとめです。
- ノードを運営すればより多くのハーベスト報酬を獲得できる
- Symbolノードを構築しなくてもハーベストは可能
- しかし、他人のノードを利用すると手数料を取られる
- ノードの構築にはサーバーが必要。おすすめは「さくらのVPS」
- 独自ドメインのノードを作成することも可能
- 独自ドメインのノードは目立ちやすい
- ドメイン取得は「スタードメイン」がおすすめ