无法添加以太坊同行。对等列表为空

时间:2016-10-30 12:20:09

标签: ethereum

我正在尝试建立一个私有的以太坊网络。我在两个不同端口的同一台机器(Windows 7)中启动了两个节点。

我无法将一个节点添加为另一个节点的对等节点。到目前为止我所做的就是这个。

启动具有相同网络ID,不同数据目录和不同端口的两个节点。

找到一个节点的节点地址。

ng-value="true"

将节点添加到另一个对等方。

> admin.nodeInfo.enode
"enode://5d272e8bee6d29dfff6313999a4a2c3d8109ae6f3eb103480f4536c0542549b9fa12a8d8ae5ebee9c4db55cab553693b04eedbc9b29f35bbc0af1956231b42b4@0.0.0.0:30303"

但是,如果我检查第二个对等体的对等体信息,则表明它没有任何对等体。

> admin.addPeer("enode://5d272e8bee6d29dfff6313999a4a2c3d8109ae6f3eb103480f4536c0542549b9fa12a8d8ae5ebee9c4db55cab553693b04eedbc9b29f35bbc0af1956231b42b4@192.168.1.5:30303")

true

此外,我尝试通过向> admin.peers [] 添加节点地址,将第一个对等体添加为第二个节点的静态对等体,但仍然data/static-nodes.json返回一个空列表。

有谁知道如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

有许多原因可能导致节点无法同步。

系统时钟不同步

最常见但难以找到的原因之一是设备的系统时钟不同步。即使时钟仅相差12秒,节点也不会同步。

来自https://github.com/ethereum/wiki/wiki/Mining

  

难度动态调整,以便平均每12秒由整个网络产生一个块(即12秒块时间)。这种心跳基本上突出了系统状态的同步,并保证除非攻击者拥有超过一半的网络挖掘能力(所谓的51%攻击),否则维持分支(允许双重花费)或重写历史是不可能的。

可以通过在所有设备上使用相同的NTP服务器(最好是地理位置靠近网络)来解决问题。

未匹配的网络ID

通过在命令行上使用--networkid 12345选项,网络的网络ID设置为12345。请确保所有节点之间的设置相同,并且该值是随机正无符号32位数(即1~2147483647)。不要使用12345,因为可能有太多人使用它。

防火墙未正确配置

以太坊默认使用TCP UDP端口30303进行相互通信。请确保 30303/TCP 30303/UDP未被设备上的防火墙阻止。

答案 1 :(得分:0)

上一个答案中缺少的另一个选项,就是genesis.json:它应该在所有节点上都相同。

答案 2 :(得分:0)

如其他答案所述,有一些问题可能导致它。 可能是您只配置一个端口而不是两个端口。你需要设置端口和rpcport。 也需要启用或禁用Ipc路径--ipcpath或--ipcdisable。

问题很可能在于您初始化节点的方式,这是我的经验。

除此之外,请确保使用两者中相同的成因块

{
 "alloc": {},
 "coinbase"   : "0x0000000000000000000000000000000000000000",
 "difficulty" : "0x20000",
 "extraData"  : "",
 "gasLimit"   : "0x2fefd8",
 "nonce"      : "0x0000000000000042",
 "mixhash"    : 
 "0x0000000000000000000000000000000000000000000000000000000000000000",
 "parentHash" : 
 "0x0000000000000000000000000000000000000000000000000000000000000000",
 "timestamp"  : "0x00"

}

您可能还想使用discport指定UDP端口,如下所示,如下所示,并使用--bootnodes参数。引导程序的说明位于我链接的以下两个资源中。

    >admin.addPeer("enode://90b7cbbaee94ab6e5bc7c5e8080bf8e2dfed5047b7c19ac61ee82511bef40faf9be2066258228ce7a71ab97b508dbef3c8f50fcf31dedfd43f2f0abd7f618db9@172.129.23.46:30303?discport=0")
true

这两个步骤可以比较初始化。

https://github.com/ethereum/go-ethereum/wiki/Setting-up-private-network-or-local-cluster https://ethereum.stackexchange.com/questions/13547/how-to-set-up-a-private-network-and-connect-peers-in-geth/15638

答案 3 :(得分:0)

geth --datadir datadir2 **--networkid 123456** --rpc --rpcport "8549"  --rpccorsdomain "*"  --port 30304 --nodiscover --rpcapi="admin,db,eth,debug,miner,net,shh,txpool,personal,web3"
两个节点中的

networkid应该相同。这是123456。尝试在另一个节点中使用相同的网络ID,然后在该节点中向上进行。