I created a private ethereuem network using geth, and now I want other machine to join my network, I try this command :

geth --datadir node1/ --syncmode 'full' --port 30304 --rpc --rpcaddr 'localhost' --rpcport 8504 --rpcapi 'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://20c47b4a7bd6d8383f87c1c988e601c7aa27ba7177b25d57e00794d1917c0c992dc37b93dfdf54741633179fd9a96a34fc2687d606ad48e2015ef2d958f3f0fb@' --networkid 1515 -unlock '0x6747efc15a7209763e840c8bbf381b721aeababd' --password node1/password.txt 

But it doesn't sync with others nodes, and when I copy the genesis.json from connected machine and run:

geth --datadir node1/ init genesis.json

than I repeated the first command line it works!

so I want to know why I must have the genesis.json of a network to join it?

1 Answer 1


The genesis file, in effect, describes the state of the network prior to the first block being mined. When a new node wishes to connect to a network, the genesis file helps it determined if the blocks it is being provided with follow from the initial state of the network.

When you run geth without initializing a genesis file first, it assumes that the network is the ethereum mainnet, and generates the chainstate based on the genesis for that (which is built into geth).

Thus, when you try to connect to your existing private network peers, your new node appears to be on a different chain to them, and they will not sync with it.

  • so every time I want to add a new node I have to copy the genesis.json ?
    – maroodb
    Aug 10, 2018 at 10:53
  • 1
    Yes, that's correct. Aug 10, 2018 at 11:11
  • Thanks for the answer but I feel like this is different from what it says in the documentation geth.ethereum.org/docs/interface/private-network where all you have to do is provide a --networkid flag
    – James Daly
    Sep 1, 2020 at 18:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.