这是我第一次这样做,希望有人能理解我的语法和问题 . 我使用puppeth创建了2个节点,并为我的私有以太坊选择了Clique . 两个节点都是缩放器(使用 clique.getSigners() 在两个节点上进行验证),并且两者都可以将对方视为对等节点(使用 admin.peers 进行验证) . 当我开始使用下面的代码挖掘两个节点时,两个节点都停留在 Signed recently, must wait for others
geth personal.unlockAccount(eth.coinbase)
geth eth.defaultAccount = eth.coinbase
geth miner.start()
以下是创建节点1的步骤(已经使用puppeth创建了genesis)
-
geth --datadir "folder" init "genesis.json"
-
geth --datadir“folder”--networkid [网络提供] -nodiscover
-
单独的控制台 - geth attach ipc:\ . \ pipe \ geth.ipc
-
admin.addPeer(节点2的enode)
以下是创建节点2的步骤(已经使用puppeth创建了genesis)
-
geth --datadir "folder" init "genesis.json"
-
geth --datadir“folder”--networkid [网络提供] -nodiscover
-
单独的控制台 - geth attach ipc:\ . \ pipe \ geth.ipc
-
获取enode admin.nodeInfo.enode并在节点1中使用admin.addPeer
检查签名者 - clique.getSigners - 两个帐户都出现了
检查两个节点的同行 - admin.peers - 两者都没问题
然后我的两个使用下面的代码
geth personal.unlockAccount(eth.coinbase)
geth eth.defaultAccount = eth.coinbase
geth miner.start()
3 回答
我以前遇到过同样的问题 . 我的解决方案是终止节点2,然后再次运行它 .
node1通过admin.addPeer()添加node2的enode地址
使用bootnodes帮助对等可能是个好主意 . (在开始使用它之前,我对这个想法有点怀疑,但它大大减少了出错的可能性,因为你可以通过它监视所有节点的活动) . 它非常易于使用,并且易于使用 .
无论如何,关于你的问题:他们肯定在不同的网络上(看他们都在密封第二块,因此它们在不同的网络上) . 检查端口和rpcport是否不同,networkid是否相同 .
我总是首先检查的一些一般想法如下:
网络上的不同节点将始终具有不同的端口和rpcport .
Bootnodes用作不同网络上对等体的附着节点(如果需要,甚至可以用于相同的节点) . 因此,最好知道托管bootnode的机器的IP地址,并在添加的对等体上调用Geth时引用它 .
Genesis文件应该始终相同,即使在不同的节点上也是如此 . 您可以在Genesis文件中声明所有签名者,甚至在其他计算机上旋转节点之前,或者之后添加投票 .
所有对等节点的网络ID也相同!
此外,我并不是说挑剔,但我们可以使用适当的语言,而不是混淆不同的共识协议 . 虽然Geth命令是相同的( mine ),但在PoA共识中没有这样的挖掘概念 . 这些块是铸造的,因此签名节点(由Genesis块确定或之后投票的授权节点)仅收集待处理的事务,验证它们并密封新块,将其广播给其他节点 . 此外,Clique不使用投票系统,我们的同事Marcos在上面说过,就像BFT协议一样 . Clique使用纯粹的PoA,签名者密封块并将其添加到链中 .
很高兴进一步讨论,因为我非常热衷于这些应用程序!
敬请关注!
干杯,