首页 文章

最近签署的Clique POA必须等待其他人

提问于
浏览
1

这是我第一次这样做,希望有人能理解我的语法和问题 . 我使用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()

Screenshot for both nodes

以下是创建节点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 回答

  • 0

    我以前遇到过同样的问题 . 我的解决方案是终止节点2,然后再次运行它 .

  • 0

    node1通过admin.addPeer()添加node2的enode地址

  • 0

    使用bootnodes帮助对等可能是个好主意 . (在开始使用它之前,我对这个想法有点怀疑,但它大大减少了出错的可能性,因为你可以通过它监视所有节点的活动) . 它非常易于使用,并且易于使用 .

    无论如何,关于你的问题:他们肯定在不同的网络上(看他们都在密封第二块,因此它们在不同的网络上) . 检查端口和rpcport是否不同,networkid是否相同 .

    我总是首先检查的一些一般想法如下:

    • 网络上的不同节点将始终具有不同的端口和rpcport .

    • Bootnodes用作不同网络上对等体的附着节点(如果需要,甚至可以用于相同的节点) . 因此,最好知道托管bootnode的机器的IP地址,并在添加的对等体上调用Geth时引用它 .

    • Genesis文件应该始终相同,即使在不同的节点上也是如此 . 您可以在Genesis文件中声明所有签名者,甚至在其他计算机上旋转节点之前,或者之后添加投票 .

    • 所有对等节点的网络ID也相同!


    此外,我并不是说挑剔,但我们可以使用适当的语言,而不是混淆不同的共识协议 . 虽然Geth命令是相同的( mine ),但在PoA共识中没有这样的挖掘概念 . 这些块是铸造的,因此签名节点(由Genesis块确定或之后投票的授权节点)仅收集待处理的事务,验证它们并密封新块,将其广播给其他节点 . 此外,Clique不使用投票系统,我们的同事Marcos在上面说过,就像BFT协议一样 . Clique使用纯粹的PoA,签名者密封块并将其添加到链中 .

    很高兴进一步讨论,因为我非常热衷于这些应用程序!

    敬请关注!

    干杯,

相关问题