The following docker-compose.yml
is used to start an Ethereum geth
node, which needs to connect to a bootnode in order to access a private Ethereum network.
version: '2'
geth:
image: ethereum/client-go:latest
volumes:
- ./node:/root/.ethereum
- ./files/genesis.json:/root/genesis.json:ro
ports:
- "30303:30303"
- "30303:30303/udp"
- 8543:8545
command: --rpc --rpcaddr 0.0.0.0 --networkid 13377331 --bootnodes="enode://692b8eda368ffc427fc1a047850557536a0ef0bfa3b66f998e03e8b83c3fd8f786e3c2b710a20e2e821a9eff34fc7b34ffa326a8a5fbcf3634b55b44596ada43@159.999.999.999:30303" --nodiscover
However after running docker-compose up
, we see that the chain configuration echoed is the default one, and not the config that the bootnode is using
Initialised chain configuration config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: Engine: ethash}"
Question: Why is geth
not connecting to the bootnode and not using the config that the bootnode has in its genesis.json
?
docker-compose output:
geth_1 | WARN [07-15|00:48:33.310] Sanitizing cache to Go's GC limits provided=1024 updated=666
geth_1 | INFO [07-15|00:48:33.310] Maximum peer count ETH=25 LES=0 total=25
geth_1 | INFO [07-15|00:48:33.317] Starting peer-to-peer node instance=Geth/v1.8.13-unstable-2e0391ea/linux-amd64/go1.10.3
geth_1 | INFO [07-15|00:48:33.317] Allocated cache and file handles database=/root/.ethereum/geth/chaindata cache=499 handles=1024
geth_1 | INFO [07-15|00:48:33.331] Writing default main-net genesis block
geth_1 | INFO [07-15|00:48:33.632] Persisted trie from memory database nodes=12356 size=1.88mB time=84.3549ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
geth_1 | INFO [07-15|00:48:33.636] Initialised chain configuration config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: <nil> Engine: ethash}"
geth_1 | INFO [07-15|00:48:33.636] Disk storage enabled for ethash caches dir=/root/.ethereum/geth/ethash count=3
geth_1 | INFO [07-15|00:48:33.636] Disk storage enabled for ethash DAGs dir=/root/.ethash count=2
geth_1 | INFO [07-15|00:48:33.636] Initialising Ethereum protocol versions="[63 62]" network=1
geth_1 | INFO [07-15|00:48:33.637] Loaded most recent local header number=0 hash=d4e567…cb8fa3 td=17179869184
geth_1 | INFO [07-15|00:48:33.637] Loaded most recent local full block number=0 hash=d4e567…cb8fa3 td=17179869184
geth_1 | INFO [07-15|00:48:33.637] Loaded most recent local fast block number=0 hash=d4e567…cb8fa3 td=17179869184
geth_1 | INFO [07-15|00:48:33.640] Regenerated local transaction journal transactions=0 accounts=0
geth_1 | INFO [07-15|00:48:33.640] Starting P2P networking
geth_1 | INFO [07-15|00:48:33.641] RLPx listener up self="enode://27175216e04387fb93e87a4069021b640fc6f87f985c86940e3297103a2b5e348bdecec4eea98af6ee2f106890fd28b49e1d983b6c5b8ce9ae1571c032bf2d5c@[::]:30303?discport=0"
geth_1 | INFO [07-15|00:48:33.644] IPC endpoint opened url=/root/.ethereum/geth.ipc
geth_1 | INFO [07-15|00:48:33.645] HTTP endpoint opened url=http://0.0.0.0:8545 cors= vhosts=localhost
genesis.json
{
"config": {
"chainId": 13377331,
"homesteadBlock": 1,
"eip150Block": 2,
"eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"eip155Block": 3,
"eip158Block": 3,
"byzantiumBlock": 4,
"clique": {
"period": 15,
"epoch": 30000
}
},
....
It seems that you were using default datadir instead of your private datadir initialized with genesis.json. As the result, geth started as a main network node by using default datadir (see database=/root/.ethereum/geth/chaindata
and versions="[63 62]" network=1
in the output).
To boot up your private node, try the following steps:
Initialize your geth datadir with genesis.json. For example:
geth --datadir path/to/custom/data/folder init genesis.json
Start your geth by using the datadir and networkid. For example:
geth --datadir path/to/custom/data/folder --networkid 13377331
Note that these steps use --datadir
option.
For more information, see the geth wiki.
General notes that might help you with network peering in the future.
Cheers,
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With