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

时间:2018-05-01 07:30:44

标签: ethereum go-ethereum

这是我第一次这样做,希望有人能理解我的语法和问题。 我使用puppeth创建了2个节点,并为我的私有以太坊选择了Clique。两个节点都是缩放器(使用 clique.getSigners()在两个节点上进行验证)并且两者都可以看到彼此为对等(使用 admin.peers 进行验证)。当我开始使用下面的代码挖掘两个节点时,两个节点都停留在最近签名,必须等待其他节点

geth personal.unlockAccount(eth.coinbase)

geth eth.defaultAccount = eth.coinbase

geth miner.start()

Screenshot for both nodes

以下是创建节点1的步骤(已经使用puppeth创建了genesis)

  1. geth --datadir"文件夹" init" genesis.json"
  2. geth --datadir"文件夹“--networkid [提供的网络] -nodiscover
  3. 单独的控制台 - geth attach ipc:\。\ pipe \ geth.ipc
  4. admin.addPeer(节点2的enode)
  5. 以下是创建节点2的步骤(已经使用puppeth创建了genesis)

    1. geth --datadir"文件夹" init" genesis.json"
    2. geth --datadir"文件夹“--networkid [提供的网络] -nodiscover
    3. 单独的控制台 - geth attach ipc:\。\ pipe \ geth.ipc
    4. 获取enode admin.nodeInfo.enode并在节点1中使用admin.addPeer
    5. 检查签名者 - clique.getSigners - 两个帐户都显示

      检查两个节点的同行 - admin.peers - 两者都没关系

      然后我的两个使用下面的代码

      geth personal.unlockAccount(eth.coinbase)

      geth eth.defaultAccount = eth.coinbase

      geth miner.start()

3 个答案:

答案 0 :(得分:1)

使用bootnodes帮助对等可能是一个好主意。 (在开始使用它之前,我也对此想法持怀疑态度,但是它可以大大减少出现问题的机会,因为您可以通过它监视所有节点的活动)。它真的很容易使用,并且易于扩展。

无论如何,关于您的问题:它们肯定在不同的网络上(请参阅它们都密封第二块,因此它们在不同的网络上)。检查 port rpcport 是否不同, networkid 是否相同。

我经常首先检查的一些一般想法如下:

  • 网络上的不同节点将始终具有不同的端口 rpcports
  • Bootnode充当不同网络(甚至需要在同一网络上)上的对等节点的附件节点。因此,最好是知道托管引导节点的计算机的IP地址,并在添加的对等方上调用 Geth 时引用它。
  • 即使在不同节点上,Genesis文件也应始终相同。您甚至可以在Genesis文件中声明所有签名者,甚至在其他计算机上旋转节点之前,也可以在之后对其进行投票。
  • 所有对等节点也
  • 相同的 networkid

此外,我并不是说要挑剔,而是让我们可以使用适当的语言,并且不会在不同的共识协议中感到困惑。尽管 Geth 命令是相同的( mine ),但根据PoA共识,没有这样的挖掘概念。这些区块是铸造的,因此签名节点(由Genesis区块确定或随后投票的授权节点)仅收集待处理的交易,验证它们并密封新的区块,然后将其广播给其他节点。而且,Clique不像BFT协议那样使用投票系统,我们的同事Marcos也在上面说过。 Clique使用纯粹的PoA,签字人将封条封锁并添加到链中。

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

敬请期待!

干杯

答案 1 :(得分:0)

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

答案 2 :(得分:0)

node1通过admin.addPeer()添加node2节点地址