I am trying to setup a private ethereum network. I started two nodes in the same machine (Windows 7) in two different ports.
I am unable to add one node as the peer of the other node. What I have done so far is this.
Start two nodes with same network id, different data dirs, and different ports.
Find the node address of one node.
> admin.nodeInfo.enode
"enode://5d272e8bee6d29dfff6313999a4a2c3d8109ae6f3eb103480f4536c0542549b9fa12a8d8ae5ebee9c4db55cab553693b04eedbc9b29f35bbc0af1956231b42b4@0.0.0.0:30303"
Add the node to the other peer.
> admin.addPeer("enode://5d272e8bee6d29dfff6313999a4a2c3d8109ae6f3eb103480f4536c0542549b9fa12a8d8ae5ebee9c4db55cab553693b04eedbc9b29f35bbc0af1956231b42b4@192.168.1.5:30303")
true
But, if I check peer information of the second peer, it shows that it doesn't have any peers.
> admin.peers
[]
Also, I tried to add the first peer as a static peer for the second node by adding node address to data/static-nodes.json
, but still admin.peers
returns an empty list.
Does anyone know how to fix this?
There are many reasons which could prevent the nodes to get sync-ed.
One of the most common but difficult-to-find reasons is that the system clocks of the devices do not sync. The nodes do not sync even if the clocks are differ by just 12 seconds.
From https://github.com/ethereum/wiki/wiki/Mining :
The difficulty dynamically adjusts so that on average one block is produced by the entire network every 12 seconds (ie., 12 s block time). This heartbeat basically punctuates the synchronisation of system state and guarantees that maintaining a fork (to allow double spend) or rewriting history is impossible unless the attacker possesses more than half of the network mining power (so called 51% attack).
The problem could be solved by using the same NTP server (preferably geographically close to the network) on all devices.
By using the --networkid 12345
option on the command line, the network ID of the network is set to 12345
. Please make sure that the settings are the same among all nodes, and that the value is a random positive unsigned 32-bit number (ie. 1 ~ 2147483647). Do not use 12345
, since there may be too many people using it.
Ethereum uses TCP and UDP ports 30303
by default to communicate with each other. Please make sure that both 30303/TCP
and 30303/UDP
are not blocked by the firewall on the device.
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