JOCへのノード接続
本ドキュメントは、ユーザー環境にGethノードを構築し、Japan Open Chain の Mainnet並びにTestnet へ 接続するまでの手順を記述したものです。 RPC Endpointsを利用し、dAppsの接続をご希望の方はこちらを参照ください。
Tokyo Hardfork により、Testnet は Geth + Consensus Client(Lighthouse)の構成に移行しました。以下の Testnet タブの手順に従ってください。 詳細はTokyo Hardforkをご確認ください。
- Mainnet
- Testnet
JOC Mainnetにノードを接続する
接続までの流れは以下のとおりです。
- 1. 必要なパッケージのインストール
- 2. データディレクトリの作成
- 3. 設定ファイルのダウンロード
- 4. クライアントのインストール
- 5. JWTシークレットの生成
- 6. Gethの初期化
- 7. Gethの起動
- 8. Lighthouseの起動
- 9. 確認
1. 必要なパッケージのインストール
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install -y curl openssl
# Amazon Linux 2023 / RHEL系
sudo dnf install -y curl openssl
2. データディレクトリの作成
sudo mkdir -p /data/ethereum
sudo mkdir -p /data/ethereum/consensus/config
3. 設定ファイルのダウンロード
以下のファイルをダウンロードし、それぞれ所定の場所に配置します。
| File | Link |
|---|---|
genesis.json | 表示 |
config.yaml | 表示 |
genesis.ssz | ダウンロード |
deposit_contract.txt | 表示 |
deposit_contract_block.txt | 表示 |
# genesis.json -> /data/ethereum/genesis.json
# config.yaml -> /data/ethereum/consensus/config/config.yaml
# genesis.ssz -> /data/ethereum/consensus/config/genesis.ssz
# deposit_contract_block.txt -> /data/ethereum/consensus/config/deposit_contract_block.txt
4. クライアントのインストール
Geth(実行クライアント・v1.13.5で動作確認済み):
https://geth.ethereum.org/docs/getting-started/installing-geth
現在、Geth v1.14.0以降はサポートされていません。
Lighthouse(コンセンサスクライアント・v7.0.1で動作確認済み):
https://lighthouse-book.sigmaprime.io/installation.html
5. JWT シークレットの生成
JWTシークレットは、GethとLighthouse間の内部通信を認証するために使用します。最初に一度だけ生成します。
openssl rand -hex 32 | tr -d "\n" > /data/ethereum/jwtsecret
chmod 644 /data/ethereum/jwtsecret
6. Gethの初期化
geth init \
--datadir=/data/ethereum \
/data/ethereum/genesis.json
このコマンドは一度だけ実行してください。
7. Gethの起動
Bootnode一覧は enodes.yaml から取得します。
geth --datadir=/data/ethereum \
--networkid=81 \
--http \
--authrpc.vhosts="*" \
--authrpc.addr=127.0.0.1 \
--authrpc.jwtsecret=/data/ethereum/jwtsecret \
--bootnodes="$BOOTNODES"
8. Lighthouseの起動
Boot ENR一覧は bootstrap_nodes.yaml から取得します。
lighthouse beacon_node \
--datadir=/data/ethereum/consensus \
--http \
--execution-endpoint=http://127.0.0.1:8551 \
--execution-jwt=/data/ethereum/jwtsecret \
--testnet-dir=/data/ethereum/consensus/config \
--boot-nodes="$BOOT_ENRS"
9. 確認
Gethの同期状況を確認します。
curl -s -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
# false → 同期完了
# object → 同期中(currentBlock / highestBlock が表示されます)
Lighthouseの同期状況を確認します。
curl -s http://localhost:5052/eth/v1/node/peer_count
「Looking for peers」のメッセージが続く場合は、正常に接続できていないため、bootnode/ENRの値やファイアウォールの設定(Gethは30303番ポートのTCP+UDP、Lighthouseは9000番ポートのTCP+UDP)をご確認ください。
Explorer
JOC Testnetにノードを接続する
接続までの流れは以下のとおりです。
- 1. 必要なパッケージのインストール
- 2. データディレクトリの作成
- 3. 設定ファイルのダウンロード
- 4. クライアントのインストール
- 5. JWTシークレットの生成
- 6. Gethの初期化
- 7. Gethの起動
- 8. Lighthouseの起動
- 9. 確認
1. 必要なパッケージのインストール
# Ubuntu / Debian
sudo apt-get update
sudo apt-get install -y curl openssl
# Amazon Linux 2023 / RHEL系
sudo dnf install -y curl openssl
2. データディレクトリの作成
sudo mkdir -p /data/ethereum
sudo mkdir -p /data/ethereum/consensus/config
3. 設定ファイルのダウンロード
以下のファイルをダウンロードし、それぞれ所定の場所に配置します。
| File | Link |
|---|---|
genesis.json | 表示 |
config.yaml | 表示 |
genesis.ssz | ダウンロード |
deposit_contract.txt | 表示 |
deposit_contract_block.txt | 表示 |
# genesis.json -> /data/ethereum/genesis.json
# config.yaml -> /data/ethereum/consensus/config/config.yaml
# genesis.ssz -> /data/ethereum/consensus/config/genesis.ssz
# deposit_contract_block.txt -> /data/ethereum/consensus/config/deposit_contract_block.txt
4. クライアントのインストール
Geth(実行クライアント・v1.13.5で動作確認済み):
https://geth.ethereum.org/docs/getting-started/installing-geth
Lighthouse(コンセンサスクライアント・v7.0.1で動作確認済み):
https://lighthouse-book.sigmaprime.io/installation.html
5. JWTシークレットの生成
JWTシークレットは、GethとLighthouse間の内部通信を認証するために使用します。最初に一度だけ生成します。
openssl rand -hex 32 | tr -d "\n" > /data/ethereum/jwtsecret
chmod 644 /data/ethereum/jwtsecret
6. Gethの初期化
geth init \
--datadir=/data/ethereum \
/data/ethereum/genesis.json
このコマンドは一度だけ実行してください。
7. Gethの起動
Bootnode一覧は enodes.yaml から取得します。
geth --datadir=/data/ethereum \
--networkid=361257328 \
--http \
--authrpc.vhosts="*" \
--authrpc.addr=127.0.0.1 \
--authrpc.jwtsecret=/data/ethereum/jwtsecret \
--bootnodes="$BOOTNODES"
8. Lighthouseの起動
Boot ENR一覧は bootstrap_nodes.yaml から取得します。
lighthouse beacon_node \
--datadir=/data/ethereum/consensus \
--http \
--execution-endpoint=http://127.0.0.1:8551 \
--execution-jwt=/data/ethereum/jwtsecret \
--testnet-dir=/data/ethereum/consensus/config \
--boot-nodes="$BOOT_ENRS"
9. 確認
Gethの同期状況を確認します。
curl -s -X POST http://localhost:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
# false → 同期完了
# object → 同期中(currentBlock / highestBlock が表示されます)
Lighthouseの同期状況を確認します。
curl -s http://localhost:5052/eth/v1/node/peer_count
「Looking for peers」のメッセージが続く場合は、正常に接続できていないため、bootnode/ENRの値やファイアウォールの設定(Gethは30303番ポートのTCP+UDP、Lighthouseは9000番ポートのTCP+UDP)をご確認ください。