Devモードで立ち上げたgeth(go-ethereum)にBlockscout(explorer)を繋げる
さて、前回の続きです。
ノードを立ち上げたのでexplorerで表示してみます。ツール
今回はBlockscoutと呼ばれるOpen sourceのexplorerを使います。
clone & build up
コレに沿って立ち上げてみます。
clone
git clone git@github.com:blockscout/blockscout.git
cd blockscout/docker-compose
portのマッピング
一つ修正します。
docker-compose.yml
frontend:
depends_on:
- backend
extends:
file: ./services/frontend.yml
service: frontend
ports:
- "3000:3000"
build & up
結構時間かかります。
docker-compose up --build
or
docker compose up --build
立ち上がりますが、これだとコネクションエラーがでるのでgethの立ち上げ方を変更します。
backend | {"time":"2024-10-06T05:46:56.032Z","severity":"error","message":"connection_refused","metadata":{"fetcher":"pending_transaction"}}
gethの立ち上げ(devモード)
apiにtxpool,debugを追加しBlockscoutがトランザクションを追跡できるようにします。
./build/bin/geth --dev --http --http.addr "0.0.0.0" --http.port 8545 --http.api eth,web3,net,txpool,debug --http.corsdomain "*" --ws --ws.port 8546 --http.vhosts="*" --verbosity 4
txpool
Ethereumノード内で保留中のトランザクションにアクセスするためのAPIです。トランザクションプールは、まだブロックに含まれていないトランザクションを管理します。
以下のようなコマンドがあります:
-
txpool.content
トランザクションプール内の全トランザクションを表示します。pending(保留中)とqueued(キューに入っている)トランザクションに分類されます。 -
txpool.inspect
トランザクションプール内のトランザクションを見やすく表示します。アカウントごとに分類して、各トランザクションの詳細を確認できます。 -
txpool.status
トランザクションプールのステータスを確認します。保留中とキューに入っているトランザクションの数を示します。
debug
Ethereumノードやスマートコントラクトの動作を詳細に調査するためのAPIです。特に開発者やノードオペレーターがトラブルシューティングやパフォーマンス解析を行う際に使われます。
主なコマンドには次のようなものがあります:
-
debug.traceTransaction
指定したトランザクションの実行経過を詳細に表示します。ガスの使用状況や、実行されたオペコード、エラーの有無などを確認できます。 -
debug.traceBlockByNumber
指定したブロック番号に対応するブロック内のすべてのトランザクションの実行経過を表示します。 -
debug.storageRangeAt
特定のトランザクション実行時点でのストレージスロットの状態を取得します。これにより、スマートコントラクトの内部状態を分析することが可能です。 -
debug.setHead
ブロックチェーンの進行を任意のブロック番号まで巻き戻します。このコマンドはテストやデバッグに役立ちます。 -
debug.getBadBlocks
不正なブロックの情報を取得します。この情報は、ブロックが拒否された理由などを含みます。
※eth,web3,netは前の記事を参照。
Blockscoutの確認
上記でgethを立ち上げ直しBlockscoutのログを見ると同期できていることがわかります。
backend | {"time":"2024-10-06T05:51:26.227Z","severity":"info","message":"Start sanitizing of empty blocks. Batch size is 100","metadata":{"fetcher":"empty_blocks_to_refetch"}}
backend | {"time":"2024-10-06T05:51:26.240Z","severity":"info","message":"Batch of empty blocks is sanitized","metadata":{"fetcher":"empty_blocks_to_refetch"}}
backend | {"time":"2024-10-06T05:51:27.212Z","severity":"info","message":"URL \"http://host.docker.internal:8545/\" is available now","metadata":{}}
backend | {"time":"2024-10-06T05:51:30.233Z","severity":"info","message":"Index already caught up.","metadata":{"fetcher":"block_catchup","last_block_number":null,"first_block_number":null,"missing_block_count":0,"shrunk":false}}
backend | {"time":"2024-10-06T05:51:30.233Z","severity":"info","message":"Checking if index needs to catch up in 25000ms.","metadata":{"fetcher":"block_catchup"}}
backend | {"time":"2024-10-06T05:51:36.241Z","severity":"info","message":"Start sanitizing of empty blocks. Batch size is 100","metadata":{"fetcher":"empty_blocks_to_refetch"}}
backend | {"time":"2024-10-06T05:51:36.309Z","severity":"info","message":"Batch of empty blocks is sanitized","metadata":{"fetcher":"empty_blocks_to_refetch"}}
ローカルのフロントエンドにアクセスしてみます。
http://localhost:3000/txs
確認できたので問題なさそうです。
最後に
一部のコンテナが立ち上がってないのですが動きました。。
詳細は別途調べようと思います。
Discussion