7

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

geth personal.unlockAccount(eth.coinbase)

geth eth.defaultAccount = eth.coinbase

geth miner.start()

两个节点的屏幕截图

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

  1. geth --datadir "文件夹" 初始化 "genesis.json"
  2. geth --datadir "文件夹" --networkid [网络提供] --nodiscover
  3. 单独的控制台 - geth attach ipc:\.\pipe\geth.ipc
  4. admin.addPeer(节点2的enode)

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

  1. geth --datadir "文件夹" 初始化 "genesis.json"
  2. geth --datadir "文件夹" --networkid [网络提供] --nodiscover
  3. 单独的控制台 - geth attach ipc:\.\pipe\geth.ipc
  4. 获取 enode admin.nodeInfo.enode 并在节点 1 中使用 admin.addPeer

检查签名者 - clique.getSigners - 两个帐户都出现

检查两个节点的对等节点 - admin.peers - 都可以

然后我都使用下面的代码

geth personal.unlockAccount(eth.coinbase)

geth eth.defaultAccount = eth.coinbase

geth miner.start()

4

3 回答 3

3

我以前也有同样的问题。我的解决方案是终止节点 2,然后再次运行它。

于 2018-05-18T02:06:33.810 回答
2

使用引导节点来帮助对等互连可能是一个好主意。(在开始使用它之前,我也对这个想法持怀疑态度,但它大大减少了出错的机会,因为您可以通过它监控所有节点的活动)。它非常易于使用且易于扩展。

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

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

  • 网络上的不同节点总是有不同的端口rpcports
  • Bootnodes 充当不同网络上的对等点的连接节点(如果您愿意,甚至可以在同一个网络上)。因此,最好知道托管引导节点的机器的 IP 地址,并在添加的对等点上调用Geth时引用它。
  • Genesis 文件应该始终相同,即使跨不同节点也是如此。您可以在 Genesis 文件中声明所有签名者,甚至在其他机器上旋转节点之前,或者在之后添加他们投票。
  • 所有对等节点的网络ID 也相同!

此外,我并不是要挑剔,只是为了我们可以使用适当的语言,而不会对不同的共识协议感到困惑。虽然Geth命令是一样的(mine),但在 PoA 共识上并没有这样的挖矿概念。块是铸造的,因此签名节点(由创世块确定或之后投票选出的权威节点)只收集待处理的交易,验证它们,然后密封一个新块,将其广播给其他节点。此外,Clique 不使用投票系统和我们的同事 Marcos 上面所说的,如 BFT 协议。Clique 使用纯粹的 PoA,其中签名者密封块并将它们添加到链中。

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

敬请关注!

干杯,

于 2018-10-23T13:50:04.420 回答
0

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

于 2018-06-26T06:51:30.723 回答