誰でもできるノード構築 ~Shardeumノード編~
本記事ではShardeumのノードを構築する手順を解説します。
ノード構築の事前準備にあたる以下がお済みでない場合は、該当の記事を読んで実施したうえで、本記事の手順を行ってください。
ノード構築の前に
定例の事前確認を行っていきます。
公式ドキュメント
ノード構築にあたる部分は以下から。
ハードウェア要件
ドキュメントに最小の要件が記載されています。
![](https://assets.st-note.com/img/1676734847476-3olNjVf05W.png?width=1200)
基本的にレンタルしたサーバのスペックであれば問題ありませんね。もし筆者が選定したものより下のスペックで契約している場合は、契約情報と照らし合わせて確認してください。
ノード運用の報酬
Shardeumはテストネットでのノード運用に対する報酬を明言していません。
しかし、以下のとおり総供給量の5%をエアドロップと予定されています。
この5%の内訳にノード運用が絡んでくる可能性も0ではないので、トライする価値は僅かながらあるかと思います。
![](https://assets.st-note.com/img/1676734020914-AvJY8mRGut.png?width=1200)
ノードの構築
ノード構築の作業に入っていきます。
システム要件
Shardeumのノードを建てるには以下が必要です。
curlパッケージ
docker(Ver 20.10.12以降)
dockcer compose(Ver 1.29.2以降)
前提ツールのインストール
まずはcurlコマンドが使用可能か確認します。
# curlのバージョン確認
$ curl --version
curlパッケージがインストールされていれば以下のような表示が出ます。
![](https://assets.st-note.com/img/1676735281830-PVek5SkUf7.png?width=1200)
もし表示がされずに「command not found」的なメッセージが出た場合は、curlパッケージをインストールする必要があります。
※上記でVerが表示された場合は、以下コマンドはスキップしてください。
# curlパッケージのインストール
$ sudo apt-get install -y curl
# curlのバージョン確認
$ curl --version # Verが表示されればOK
本シリーズを参考にしてノード構築を行っている場合は、Dockerはインストール済みかと思いますので、念のためVerを確認します。
# DockerのVer確認
$ docker -v
Ver 20.10.12以降であれば条件クリアです。
※docker composeは推奨Verより下のVerになっていますが動作に問題なさそうなので、そのまま進めます(問題が発生すれば修正します)。
![](https://assets.st-note.com/img/1676735621683-t8X5BtX1SO.png)
もしまだDockerをインストールしていない場合は、以下記事を参考にしてインストールしてください。
Shardeumノード構築手順
Tera Termでサーバにログインし、手順に沿ってコマンドを実行していきます。
installerのダウンロード~実行
まずはユーザーディレクトリ配下にShardeum用のディレクトリを生成します。
その後、インストーラーのファイルをダウンロードして実行します。
# homeディレクトリに移動
$ cd
# installerのshファイルをダウンロードして実行
$ curl -O https://gitlab.com/shardeum/validator/dashboard/-/raw/main/installer.sh && chmod +x installer.sh && ./installer.sh
実行した後、いくつかの問いが表示されますので適宜回答していきます。
①「y」を入力してEnterを押下。
![](https://assets.st-note.com/img/1676736739048-zJB8xOZOOn.png?width=1200)
②「y」を入力してEnterを押下。
![](https://assets.st-note.com/img/1676736833576-WhkH3864MM.png)
③ダッシュボードにログインするためのパスワードとなる任意の文字列を入力。
![](https://assets.st-note.com/img/1676737320899-RP7i2Lsdyk.png)
④何も入力せずEnterを押下。
![](https://assets.st-note.com/img/1676737357240-VC8q5RiQ0x.png?width=1200)
⑤何も入力せずEnterを押下。
![](https://assets.st-note.com/img/1676737451546-WEGs5igjDz.png?width=1200)
⑥何も入力せずEnterを押下。
![](https://assets.st-note.com/img/1676737489246-qpzzONFyQm.png?width=1200)
⑦何も入力せずEnterを押下。
![](https://assets.st-note.com/img/1676930809524-2q0IR6HxQf.png)
あとは勝手にインストールが進んでいきますので、完了するまで待ちます。
※installer.shには色々な処理が書かれているため、完了まで少し時間を要する場合があります。基本は放置しておけば完了します。
![](https://assets.st-note.com/img/1676791220540-mhoyCkbCm8.png?width=1200)
![](https://assets.st-note.com/img/1676792213563-hXgUuecJW5.png?width=1200)
installer.shの実行処理が完了すると、shardeumダッシュボードのdockerコンテナが起動した状態になります。
(shファイルでdockerコンテナの起動を含めた色々な処理を済ませてくれるあたり、shardeumの開発チームは親切丁寧ですね!)
![](https://assets.st-note.com/img/1676792390809-R2ENivRJgo.png?width=1200)
バリデータノード起動準備
続いてノードを起動していきます。
# .shardeumディレクトリに移動
$ cd .shardeum
# shファイル実行
$ ./shell.sh
ここでユーザーがnodeに切り替わります。
![](https://assets.st-note.com/img/1676792916706-b7lGoA00MZ.png)
バリデータノード管理用のWebページを起動します。
# ダッシュボードGUI起動
$ operator-cli gui start
起動コマンドが正常に通ったら、実際にWebブラウザでダッシュボードにアクセスします。
以下URLにアクセスしてください。
https://{レンタルサーバのIPアドレス}:8080/
「接続が保護されていません」と表示されますが、無視して接続して大丈夫です。
chromeの場合は赤枠の詳細設定から「~アクセスする」をクリックします。
※この辺はSSL証明書の絡みでこのような表示になります。気になる方は「SSL」や「https通信」などのワードで調べてみてください。
![](https://assets.st-note.com/img/1676793780452-9d6GfsZ25l.png?width=1200)
![](https://assets.st-note.com/img/1676819167448-EtWKUaVD5J.png)
初回のアクセス時はパスワード入力が求められます。
パスワードはinstaller.shを実行した際に入力した任意の文字列です。
![](https://assets.st-note.com/img/1676794278316-9P6YsKxNPo.png?width=1200)
めでたく管理用ダッシュボードが表示できました。
![](https://assets.st-note.com/img/1676794366796-iaMJ4NPl2o.png?width=1200)
バリデータノード起動
メンテナンスメニューを選択し、「Start Node」をクリックします。
![](https://assets.st-note.com/img/1676794764239-fil6llKz47.png?width=1200)
「Loading…」と表示されるので少し待ちます。「Loading」の表示が消えたらブラウザのページを再読み込みします。
するとStatusが「Standby」に切り替わり、「Stop Node」と表示されます。
![](https://assets.st-note.com/img/1676795025864-nmTv2hg1jl.png?width=1200)
このあとの手順で$SHMをステークします。バリデータノードがActive状態になるには、10 $SHMをステークした後に順次自動で追加されるとのこと。
ただし、同時にActiveになれるバリデーターは一定数にかぎられるため、ある程度の待機時間が必要となる場合もあるようです(Standby状態の継続)。
![](https://assets.st-note.com/img/1676795466393-MqISUZruOV.png?width=1200)
なお、ノードの起動/停止は以下のコマンドでも可能です。
# ノードの起動
$ operator-cli start
# ノードの停止
$ operator-cli stop
パフォーマンスの確認
パフォーマンスメニューから構築したノードのパフォーマンスを確認できます。
![](https://assets.st-note.com/img/1676819611130-tP9LwdRBn3.png?width=1200)
詳細ステータスを確認する場合は、CLIでユーザーがnodeになっている状態で以下コマンドを実行します。
$ operator-cli status
以下のような感じで詳細ステータスが表示されます。
![](https://assets.st-note.com/img/1676820157381-mXozM8Bi6Y.png?width=1200)
ノードが意図せず停止したときなどは、上記コマンドで詳細ステータスを確認するようにしましょう。
また、バリデータをリセットする場合は、以下コマンドを実行します。
※必要なときのみ実行します。構築の流れではやる必要はありません。
# バリデータのリストを表示
$ pm2 list
# バリデータのリセット
$ pm2 delete [id] # [id]は上記コマンドで表示された削除対象のIDに置換
ネットワーク追加
バリデータノードにステークするため、ウォレットを接続します。
ウォレットに「Shardeum Sphinx 1.x」のネットワークを追加していない場合は、以下ページから追加してください。
![](https://assets.st-note.com/img/1676821131972-dCssfwyktl.png)
以前の「Shardeum Sphinx 1.0」を設定済みの場合は、一度リセットが必要になります。以下ツイートを参考に実行してください。
Get the full Sphinx experience:
— Shardeum (@shardeum) February 15, 2023
1️⃣ Add Sphinx 1.1 to your MetaMask: https://t.co/NWtm8MlMMw
2️⃣ Claim testnet SHM: https://t.co/sKIGwCqVgA
3️⃣ Run a validator node: https://t.co/6YxIY6e57E
Let's #BuildWeb3 together 💪
Faucet取得
ガス代+ステークするための$SHMを取得します。
FaucetはDisordで請求するのが手っ取り早いです。
以下のチャンネルで/faucetコマンドを使って請求します。
![](https://assets.st-note.com/img/1676821497265-Q26lVsEO77.png)
以下からも請求できます。
ウォレット接続~$SHMステーク
あとはウォレットを接続して$SHMをステークするだけです。
「Connect Wallet」をクリックして接続します。
![](https://assets.st-note.com/img/1676863411158-h6zyZYB4AU.png?width=1200)
接続後、「Add Stake」をクリックします。
![](https://assets.st-note.com/img/1676863485318-yBQ3b2Rwax.png?width=1200)
最低ステーク量は10 $SHMです。
![](https://assets.st-note.com/img/1676863609738-Z7m7Hli98s.png?width=1200)
トランザクションが正常に通ればステーク完了です。
ステーク後は自由に追加・削除できますので、必要に応じて行ってください。
あとは時間を置いて、ノードのステータスが「Active」に変わったことを確認できれば無事完了です。
構築後の操作
コンテナが正常に起動できていれば、ノードの構築は完了です。
ノードは常時稼働させておきますので、このまま作業を終えますので、Tera Termを終了します。
# ログアウト
$ exit # (またはctrl + dを押下)
これにてノード構築の作業は終了です。
補足
Activeにならない場合
Stndbyのまま待機した後、何らかのエラーが発生すると、ステータスが「Stopped」に戻ってしまいます。
以下にいずれかに該当する場合は、それぞれ記載の対処を行ってください。
■シードサーバからのレスポンスがタイムアウト
![](https://assets.st-note.com/img/1676891796733-noki2RQX6f.png)
上図に該当する場合は、シードサーバにリクエストを送信した後のレスポンスが時間内に受信できずにタイムアウトしてしまっています。
基本的にこちら側で対処できることはないので、Shardeumの開発チームが対応してくれるのを待ちます。
このエラーは現在も多くの人の中で発生しており解消に至っていません。
おそらく公式チーム側で何らかの対応が入ると思いますので、一時保留とさせてください。
※公式チームに問い合わせしても明確な回答は無し。
2023/03/24のアプデで解消されてるかも?(確認中)
■バリデータのIPが0.0.0.0になっている
![](https://assets.st-note.com/img/1676891817873-ZIp38J0Sjn.png)
バリデータのIPはinstaller.sh実行時にAutoで割当てされるはずなのですが、上図に該当する場合は、なぜかIPが0.0.0.0になってしまっているようです。
基本的にバリデータにIP:0.0.0.0は使用しないので、適切なIPに振り直す必要があります。
以下の手順を実行してください。
# shファイル実行(※nodeユーザーの状態であればスキップ)
$ cd ~/.shardeum
$ ./shell.sh
# 外部IPを取得~設定
$ curl https://ipinfo.io/ip # IPアドレスが表示されることを確認
$ export APP_IP={上記で表示されたIPアドレス}
# IPの設定確認
$ echo $APP_IP # IPが0.0.0.0ではないことを確認
# ノードの停止~再起動
$ operator-cli stop
$ operator-cli start
起動後は「Standby」状態になりますので、再度時間を置いて「Running」になったか確認しましょう。
後作業の発生
これはPJ側にて何らかの変更があった際に発生する可能性があります。
テストネットが終了すればノードの停止を行う必要がありますし、ノードを構成しているソフトウェアのVerUpが必要であれば、我々の方でノードのVerUp作業をしなければなりません。
これらの情報は、PJ側がTwitterやDiscordでアナウンスしてくれますので、適宜チェックするようにしておきましょう。
ノードのアップデート
公式からノードのアップデートがアナウンスされたら、ノードをアップデートする必要があります。以下の手順に従いコマンドを実行してください。
※アップデートを行う場合は、ノードを停止する前に$SHMをすべてアンステークしてください。
# コンテナ内にいる場合はExit(コンテナ外にいる場合はスキップ)
$ exit
# homeディレクトリに移動
$ cd $HOME
# 最新Verの資産を取得~インストール実行
curl -O https://gitlab.com/shardeum/validator/dashboard/-/raw/main/installer.sh && chmod +x installer.sh && ./installer.sh
# .shardeumディレクトリに移動
$ cd .shardeum
# shファイル実行
$ ./shell.sh
# ダッシュボードGUI起動
$ operator-cli gui start
あとはWebブラウザからダッシュボードにアクセスして、ノードを起動~$SHMをステークしてください。
ノードの停止/リセット
ノードを停める場合は、以下のコマンドを実行します。
関連ディレクトリやinstaller.shまで削除するかは必要に応じて判断してください。
# 停止用shファイル格納ディレクトリに移動
$ cd ~/.shardeum
# コンテナの停止・削除
$ ./cleanup.sh
# homeディレクトリに移動
cd
# .shardeumディレクトリ・installer.shファイル削除
rm -rf .shardeum
rm installer.sh
停止後に再度起動する場合は、「ノード実行」の手順から行ってください。
おわり
以上がShardeumのノード構築手順です。今回もお疲れ様でした。
Shardeumの情報は、以下CryptoTimesさんのまとめ記事をチェックしておきましょう。