假设我们有多个节点需要协同处理,我们希望这些节点连接起来,那么就要在启动时告诉该节点其他节点的存在,我们先以2个节点为例
第一个节点正常启动,指定networkid,
./geth --datadir private_data/ --networkid 12345 console
启动后会列出自身节点的标识
INFO [09-29|15:45:33] UDP listener up
self=enode://a7a40b72a2c52cd644a7b9dfaa200a0ce123c60b74a787d30da2a313c8bcddb81d890487504be2eb95ed247909ae2112c48f7f0a86d03a371f8f4548d48acc02@[::]:30303
其他节点启动时,先用相同的创世区块初始化,启动时把第一个节点标示的[::]改为其ip地址,加到bootnodes参数中,注意这里的networkid参数一定要一样,否则无法接入
geth --datadir data --networkid 12345 --bootnodes "enode://1143901514833a0ce3213ed894d138ce9eda5fc7321356b1dc24c1931fa85e2f74b49735949c4bd1952617506e30184e8b3549def73de822475fec02680d1437@[第一个节点的IP]:30303" console
之后我们验证一下,两个节点是否相互连接起来,在第二个节点的console中使用admin.peers,可以看到节点的id和ip,就是第一个节点的信息
遗留问题:节点2在同步节点1的区块信息时,出现“retrieved hash chain is invalid”错误,暂时不知道是什么原因: