我有一个脚本来设置一个geth节点,这个节点在大多数时候对我都很好。(过去2-3周一直在使用)。我经常使用它在不同的坞实例上设置多个geth实例。
然而,今天,当我在不同的docker实例上创建一些节点(所有节点都运行在同一个框上)时,我看到了一些问题。首先,当我使用admin.addPeer()时,两个节点无法相互交谈。采矿也不起作用。在调查中,我发现创建的所有节点都具有相同的enode id。
这是一个双关问题--第一次看到它。我没有改变我的脚本或如何启动多个geth实例。我能做些什么来阻止这一切吗?我尝试过使用引导节点,如下所示-
bootnode -genkey boot.key
bootnode -nodekey boot.key
INFO [10-11|08:51:32.325] UDP listener up self=enode://e3e9eec5fad93a169f7667905733d831f9e6c9ad233fcf2430dd65d8822c688310784f1b3c8bba38e1037bab1916b1e755124ff6973d752fed8912c6e2ba2569@[::]:30301我希望在做geth引导节点时会看到上面的id。
然而,我看到了完全不同的东西。
任何建议。
谢谢!
发布于 2018-10-11 13:22:49
enode是根据nodekey值计算的。如果您的所有节点都引用相同的datadir,或者通过复制数据dir引导多个实例,那么它们将具有相同的enode ID。
删除默认位于datadir/geth/nodekey的~/.ethereum/geth/nodekey文件,然后重新启动节点。它们将生成新的随机密钥,并获得不同的enode ID。
https://ethereum.stackexchange.com/questions/60394
复制相似问题