技術 ブログ

EthereumおよびBaseノード運用で使うコマンド集



Ethereum・Base共通



①SSHトンネリング

HTTPの場合

フルノードのRPCポートをローカルホストへSSH転送できます。
これにより、ノードの8545ポートをパブリックに開いてなくてもアクセスできるようになります。

$ ssh -f -N -p [フルノードのSSHポート番号] -L 8545:localhost:8545 [フルノードのURLもしくはIP]


SSHトンネリングの確認:ローカルのPCで以下コマンドを打ち、以下のように返ってくればトンネリング成功。

$ curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' localhost:8545
{"jsonrpc":"2.0","id":67,"result":"Geth/v1.13.1-stable-3f40e65c/linux-amd64/go1.21.1"}




Web Socketの場合

フルノードのWeb SocketポートをローカルホストへSSH転送できます。
これにより、ノードの8546ポートをパブリックに開いてなくてもアクセスできるようになります。

$ ssh -f -N -p [フルノードのSSHポート番号] -L 8546:localhost:8546 [フルノードのURLもしくはIP]


SSHトンネリングの確認:ローカルのPCで以下コマンドを打ち、以下のように返ってくればトンネリング成功。

$ wscat -c ws://localhost:8546/ -w 1 -x '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}'
{"jsonrpc":"2.0","id":67,"result":"Geth/v1.13.1-stable-3f40e65c/linux-amd64/go1.21.1"}




Base

①自分のノードの現在のブロック番号の確認

$ date; curl -sX POST -H "Content-Type: application/json"  \
                       -d '{"jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id":1}' \
                        http://localhost:8545/ \
                       | jq -r ".result" | printf "%d\n" $(cat -)




②パブリックノードの現在のブロック番号の確認

$ date; curl -sX POST -H "Content-Type: application/json" \
                       -d '{"jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id":1}' \
                       https://mainnet.base.org/ \
                      | jq -r ".result" | printf "%d\n" $(cat -)


※①と②を比較すると自分のブロック番号がどこまで進んでいるか確認できます。パブリックノードとブロック番号が同じなら同期が完了しています。


③同期までの見積り時間の確認

$ echo Latest synced block behind by: $((($(date +%s)-$( \
     curl -d '{"id":0,"jsonrpc":"2.0","method":"optimism_syncStatus"}' \
     -H "Content-Type: application/json" http://localhost:7545 | \
     jq -r .result.unsafe_l2.timestamp))/60)) minutes


※おおよそ同期するまでに要する時間が分単位で見れます。あまりにも見積り時間が長い場合は、スナップショットが読み込まれていない可能性があります。


④BASEノード(op-gethおよびop-node)のアップグレード

BASEのGtHubリポジトリで不定期に更新されているのでウォッチ設定をしておくことをお勧めします。

GtHubリポジトリが更新されていたら、gitリポジトリの更新をpullしてアップグレードします。

以下、データベースファイルが壊れないように慎重に行う必要があります。

※ストーレージに余裕があるならば、/data以下のファイルを全てバックアップを取ると安全です。

※アップグレード後、状態のスナップショット作成などに時間がかかることがあります。

# コンテナの停止
$ docker-compose stop
# 停止確認
$ docker-compose ps -a
# コンテナの削除
$ docker-compose down
# Baseのgitリポジトリへ移動
$ cd node
# 変更したファイルのコミットをする
$ git status
$ git add [以前変更したファイル]
$ git commit
# 最新のgitリポジトリをダウンロード
$ git pull
# 最新の変更をマージ
$ git merge
# Base側のデフォルト設定を削除し自分のオリジナルの設定項目を残します。
$ vi [コンフリクトしたファイルの修正]
# docker-composeファイルのフォーマット確認
$ docker-compose config
# コンテナの作成および起動
$ docker-compose up -d --build
# ログで起動状況を確認
$ docker-compose logs -f --tail 100

コメント投稿フォーム

メールアドレスが公開されることはありません。 が付いている欄は必須項目です