よくある質問集 Node編

この記事は仮想通貨コミュニティ、Crypto流星街によって運営されています。
こんにちは、Crypto流星街の0x_Riceです。

こちらでは文字数制限の関係でツイッターには書きづらい内容や、比較的アーカイブする価値のありそうな情報を不定期で投稿できたらいいなと思っています!

ぜひフォローしていただけると嬉しいです!


はじめに

みなさん今日もNodeで消耗していますか?
最近わたしのnoteきっかけでCrypto流星街に遊びにきてくださる方がめちゃくちゃ増えており、嬉しい限りです!
いつもありがとうございます。
当サーバーのNode部屋を見ているとNode初心者の方が果敢にチャレンジしているのをよくお見かけしますが、皆さんお困りごとがある程度似通っているなと感じます。
そこで、よくある質問集を作成することにしました。
お困りの初心者の方は参考にしてみてください!

記事は今後チャンネルの状況を見つつ加筆修正していく予定です。
ご意見あればDiscordで私をメンションいただけると嬉しいです!

Node関係基礎編

Q1.
ノード初心者です。Macしかないのですが、Macでやってしまっても大丈夫でしょうか。
※Windowsユーザーの方はMac、をWindowsに読み替えてください。

A.
Macでやる、というのが「お手持ちのMac上にNodeを展開しようとしている」のか「VPSを借りてMacからVPSにアクセスする」なのかによります。
前者であればセキュリティリスクなどがありますのでお勧めしません。
後者であれば問題ありません。私がオススメしている「Termius」もMac版がありますし、Mac純正の「ターミナル」でもOKです。

Q2.
記事で紹介されているコマンドを入力してもエラーが出てうまくいきません。どうしたらいいですか。

A.
エラーの内容は環境ごとに大きく異なります。なので、上記のような質問だとふわっとしすぎていてお返事がしづらいです。
基本的にエラーコード、というのは「何がダメか」が書かれているため、それがそのまま大きなヒントになります。
Discordで質問する前にまずChatGPTにエラーコードについて質問してみましょう。
その上でDiscordで質問していただくと解決が早いと思います!

ここでおすすめのChatGPTへの質問プロンプト例を紹介します。使ってね。

#作業指示
Linuxで特定のコマンドを実行しようとしましたが、エラーが返ってきました。
・エラーの内容についての解説
・解決方法の提案
をしてください。

#状況
Linuxにxxxというアプリケーションをインストールしようとしている。
「〜〜〜〜」というコマンドを実行したところ、以下のエラーコードが返ってきた。

#エラーコード
(エラー内容を全文丸コピして貼る)

こんなプロンプトを送ると、「現在置かれている状況」と「対処方法」を教えてくれます。
その上で教えてもらった対処方法を実践してみて、うまくいけばよし。またエラーがでるようならそのエラーを追加で質問する。
そういった流れを繰り返していくと、問題の本質に辿り着きやすいです。

Q3.
Shardeumを建てるためにNodeを契約し、運用中です。同じサーバーにElixirも入れちゃっても問題ないのでしょうか。

A.
ぶっちゃけスペックと、案件によります。

まずはスペックについて。
LinuxもWindowsやMacと同じくパソコンです。スペックの低いパソコンで重たい処理をいくつも実行しようとすると、かたまったりしますよね?
それと同じことが起こる可能性があります。
公式のDocsを読むと「要求性能」「最低性能」などの記載があると思いますが、これと自分が契約しているサーバーのスペックを見比べながら慎重に判断しましょう。
Elixirなんかはめちゃ軽いので、正直適当に共存しても問題ないです。

次に案件による、について。
最近のNode案件はDockerを使用しているケースが多いと思いますが、Dockerには「コンテナを起動中は、そのコンテナで使用するポートを占有し続ける」といった特性があります。ポートとはあなたのPC(VPS)とインターネットを繋ぐパケットの通り道のようなものだと思ってください。
例えばDocker コンテナAがポートの100を使うものだとして、Docker コンテナBもポート100を使おうとしている場合、うまくいかない可能性があります。
この場合、Dockerのコンフィグファイルを自分で書き換え、使用するポートを変更して他の共存Nodeと被らない様にする、のような処理が必要になります。
上記をみて「俺にはハードルが高いかもしれん」と思った方は、素直に「1案件1Node」を徹底しましょう。

Q4.
Elixirなどは「Elixir用のディレクトリ」を作るようにDocsで指示がありますが、これは必須でしょうか。ルートディレクトリに全部展開するのではだめでしょうか。

A.
あなたの言うルートディレクトリ、とはおそらく「Root権限でターミナルからログインして最初に辿り着くディレクトリ」のことを言っていますよね?これは厳密にはルートディレクトリではなく「Rootユーザー用のhomeディレクトリ」です。なので厳密にはOKです。(ガチのRootディレクトリに展開するのはだめだよ)
が、管理の問題があるので個人的にはあまりお勧めしません。
例えばElixirディレクトリで作業中に何か問題が起きた際、「Elixir」ディレクトリを消せばもう一度やり直すのは簡単です。
しかし、ディレクトリの中が汚れていると「消さなきゃいけないファイル」などを調べる必要があったりと面倒です。
初心者であればあるほど個別ディレクトリを作成してその中で作業する癖をつけた方がいいです。

ディレクトリ作成のコマンドは

mkdir 名前 

です。
作成後にディレクトリに移動するコマンドは

cd 名前

です。

Elixir編

Q1.
Elixirのノードが動いているかどうか不安です。動いているかどうかを確認する方法はありますか。

A.
Dockerの実行ログを出力することで可能です。

docker ps

まずこれを実行し、稼働中のDockerコンテナの一覧を出しましょう。ps コマンドは実行中のプロセスを一覧表示するコマンドです。
するとその中にElixir Validatorみたいな(うろ覚え)コンテナが見つかります。
見つかったらそのコンテナのコンテナIDをコピーしてください。(98fasf73ffみたいな見た目のやつ)

次にログを出力します。

docker logs コンテナID

これでログが正しく出力されていればあなたのElixirノードは動いています。

Q2.
ElixirNodeをアップデートしてくれとDiscordで見かけて試しましたが、コマンドが通りません。

A.
コマンドを打つ前にディレクトリは移動していますか?
noteの記載通りにNodeを建てた場合「elixir」ディレクトリにDockerfileが置いてあるはずです。
基本的にLinuxでは「特定のファイルを実行したりするためには、そのファイルと同じディレクトリにいる必要がある」ということを覚えておきましょう。

移動のコマンドは何だったかな!?
さっき上で紹介してるのであなたならきっと覚えてますよね。それです。

Taiko編

Q1.
Taiko Nodeを建てましたが、同期が安定しません。(完了しません)
(stn statusコマンドでNot syncedと表示される、など)

A.
RPCノードに問題がある可能性があります。
まずは自分のHoleskyノードを疑ってみましょう。
Holeskyノードを自分で建てているのなら、Blockpiに切り替えて同期状況を監視して切り分けをしてみてください。

Taikoのブロック同期について
例えば 今101000/101000 ブロックまでSyncしてたとして
Taikoチェーン側が先にブロック進んで、自分のノードが遅れたら
101000/101200になってNot syncedです
RPCが原因と言ってるのはこれで、ブロックSyncのスピードが遅いRPCだと
ここの乖離が発生しやすいし、当然同期が遅延しているので乖離も埋まりにくいです
Taiko L2 ↔︎ Holesky L1は常に双方向に通信して同期しながら動いており、
自分のTaikoノードはHoleskyを踏み台にしてTaikoチェーンからブロック情報を受け取ってSyncしているようなイメージなので、Holesky側もスピードが求められるというわけです。

Q2.
Holeskyノードを建ててみましたが、RPC Endpointとして機能していなさそうなログを出力します。なぜでしょうか。

A.

パターン1.同期漏れ
Holeskyノードはブロック同期が完了していますか?
チェーンを問わず基本的にフルノードは「これまでのすべてのブロックのデータを保存している」ことが動作の条件です。
したがってブロック同期が完了していないノードはノードとして正常には動作しません。
Holeskyノードは体感初回の起動から24h〜48hくらい同期にかかりますので、辛抱強く待ちましょう。

Holeskyの同期状態は以下の方法で確認可能です。
1.Eth DockerでHoleskyノードを建てた場合
Grafana(ダッシュボードサイト)が確認できるので、そこで自分のノードの現在同期済みのブロックNoを確認しましょう。(Highest blockだったかな、なんかそんなところ)
Holesky Scanで最新のブロックNoを確認して、それと見比べてみましょう。

2.Gethクライアントを自分で起動して建てた場合
まず、Geth.jsファイルに接続します。

geth attach http://localhost:8545/

接続が完了したら以下のコマンドを実行します。以下は同期ステータスを確認するコマンドです。

eth.syncing

何か数字が返ってきたら同期未完了です。進捗状況も表示されますので、自分が今何ブロック目まで同期しているのか確認可能です。
「False」と返ってきた場合、同期は完了済みです。

パターン2.アーカイブモード漏れ
お使いのHoleskyノードはArchive modeがOnになっていますか?
なっていない場合、もしくはした覚えがない場合はこれです。
やり方については使用しているノードや建て方によるので、Docsを参照してください。(流星街anoneさんの記事のやり方で建てた場合はOnのはず)

Q3.
Taikoを建ててブロック同期も完了していますが、Proposeの数字が増えません。

A.
現在(2024年2月19日)TaikoのProverとして公開されているZKPoolのProver Endpointは正常動作していません。動くまで待ちましょう。やれることはないです。

Q4.
Taikoのノードの状況が分かりやすく確認できるサイトなどはありますか?

A.
Dojoというノード状況を可視化できるダッシュボードソフトがあります。これをインストールしましょう。使い方は下記Githubを参照のこと!
ちなみに起動時にdocker compose upではなくdocker compose up -d とすることでバックグラウンドで動作します。

取り急ぎこんなもんでしょうか。
また適宜追加しますので、「すき」を押して保存しておいてもらえると嬉しいです!
それでは皆さんよきNode Lifeを〜!

コミュニティ紹介


Crypto流星街(Crypto Meteor City)は、仮想通貨コミュニティおよび投資グループです。
Crypto流星街は常に新しいコミュニティメンバーを募集しています。
仮想通貨(暗号資産)やNFTについて質問や困ったことがあればお気軽に初心者部屋へお越しください。

Crypto流星街 初心者部屋🔰オープンチャット

Crypto流星街 ディスコードサーバー

Crypto流星街 コミュニティ紹介note


この記事が気に入ったらサポートをしてみませんか?