监控节点
以下是将新节点添加到网络中的一些场景,混合了不同的选项,例如共识算法、许可和发现。
您可以在 quorum-examples 存储库中找到运行示例所需的资源。
通过 git 查看存储库或以其他方式下载本地计算机的所有资源以进行操作。
示例 : 使用 docker-compose 作为容器定义。 如果您通过复制所描述的命令进行操作,那么为 Docker Compose 设置项目名称很重要,或者记住更改目录的前缀。
有关更多详细信息,请参阅 Docker documentation 。
要设置项目名称,请运行以下命令
具有发现功能的非许可IBFT
一个使用 IBFT 的示例,无需许可,并通过引导节点启用发现。
该网络没有静态对等点; bootnodes enode://ac6b1096ca56b9f6d004b779ae3728bf83f8e22453404cc3cef16a3d9b96608bc67c4b30db88e0a5a6c6390213f7acbe1153ff6d23ce57380104288ae19373ef@172.16.239.11:21000
节点 1 将转发它知道的所有节点(在这种情况下,每个人)的详细信息,然后它们将启动自己的连接。
1. 建立一个由 6 个节点组成的初始网络。
确保删除所有旧网络:
调出 6 个节点:
2.发送公共交易并检查它是否已铸造。
1. 调出最后一个节点。 该节点也将其引导节点设置为节点 1 ,因此在启动时将尝试仅与节点 1 建立连接。 在此之后,节点 1 将共享它知道的节点,然后节点 7 可以启动与这些对等方的连接。
2.让我们检查节点是否同步。 如果是,它们将具有相似的块号,这对于本示例来说已经足够了; 存在其他选项来判断节点是否在同一条链上,例如匹配 block hashes 。
获取节点 1 的最新区块号
获取节点 7 的最新区块号
3.我们可以检查我们之前发送的交易和合约现在是否存在于节点 7 上。
4.为了确保我们有两种方式的通信,让我们从节点 7 向网络发送一个交易。
5.最后,我们可以检查交易是否被铸造以及合约是否在每个节点上执行。
检查节点 1
检查节点 7
就是这样。 您部署了一个工作的 6 节点网络,然后添加了第 7 个节点; 这第 7 个节点能够读取现有的公共数据并部署自己的交易和合约供其他人查看!
非许可 Raft的禁用发现
此示例演练向 Raft 网络添加新节点的过程。
该网络没有以太坊点对点层的许可,仅根据节点 static-nodes.json 文件中列出的人员进行连接。
1. 建立一个由 6 个节点组成的初始网络。
确保删除所有旧网络
调出 6 个节点
2.发送公共交易并检查它是否已铸造。
发送交易
检索合约的价值
您创建了一个交易,在本例中使用 hash 0xd1bf0c15546802e5a121f79d0d8e6f0fa45d4961ef8ab9598885d28084cfa909 ,然后检索其值,该值设置为 42 。
3. 您需要在加入之前将新的 peer 添加到 Raft 网络中,否则现有节点将拒绝它从 Raft 通信层; 我们还需要知道新节点应该加入什么 ID 。
添加新节点
返回值是新节点的 Raft ID 。 当节点第一次加入网络时,它会需要这个 ID 号。 如果丢失,您可以通过在现有节点上运行 raft.cluster 命令来查看完整网络,包括 ID 。
1. 调出最后一个节点。 在这里,我们将新创建的 ID 号作为标志传递到节点 7 的启动中。这让节点知道不要从 static-nodes.json 的内容中引导新网络,但是要连接到现有节点,需要获取任何引导程序信息。
2. 让我们检查节点是否同步。 您可以通过查看您是否拥有之前在合约上查看过的节点 7 来完成。
获取节点 7 上的合约值
3. 为了确保您有两种方式的通信,让我们从节点 7 向网络发送一个交易。
4. 最后,您可以检查交易是否被铸造以及合约是否在每个节点上执行。
检查节点 1
检查节点 7
就是这样。 您部署了一个工作的 6 节点网络,然后添加了第 7 个节点; 这第 7 个节点能够读取现有的公共数据并部署自己的交易和合约供其他人查看!
许可 Raft的禁用发现
此示例演练向 Raft 网络添加新节点的过程。
该网络确实为以太坊点对点层启用了许可; 这意味着对于任何以太坊任务,例如同步初始区块链或传播交易,节点必须出现在其他节点的 permissioned-nodes.json 文件中。
1. 建立一个由 6 个节点组成的初始网络。 确保删除所有旧网络
调出 6 个节点
2. 发送公共交易并检查它是否已铸造。
发送交易
检索合约的价值
你创建了一个交易,在本例中使用了 hash 0xd1bf0c15546802e5a121f79d0d8e6f0fa45d4961ef8ab9598885d28084cfa909 ,然後检索其值,该值设置为 42 。
3. 你需要加入之前将新节点添加到 Raft 网络中,否则已经存在的节点将被拒绝来自 Raft 通信层;你还需要知道新节点应该加入什么 ID 。
添加新节点
返回值是新节点的 Raft ID 。
当节点第一次加入网络时,它会需要这个 ID 号。
如果丢失,您始终可以通过在现有节点上运行 raft.cluster 命令来查看完整网络,包括 ID 。
1. 调出最后一个节点。 在这里,您将新创建的 ID 号作为标志传递到节点 7 的启动中。这让节点知道不要从 static-nodes.json 的内容引导新网络,但要连接到现有 节点,需要获取任何引导信息。
启动节点 7
2. 让我们检查节点是否同步。您可以通过查看您是否之前在节点 7 上查看过的合约来完成。
获取节点 7 上的合约值
这里的值是 0 ,不是预期的 42 !
节点 7 无法同步的其他部分链,因为网络中的等方拒绝允许节点 7 的连接,因为它在 permissioned-nodes.json 文件中丟失。
这会影响到 Raft 节点 7 已经同步了,它仍然可以接收新的层;如果它允许,因为它是 Raft 端口的朋友,所以在 Raft 端会获得。
1. 让我们更新节点 1 上的许可节点列表,这将允许节点 7 跟它连接。
2. 节点 7 现在应该通过节点 1 同步。看看您是否可以看到您之前制定的协议。
3. 为了确保您有两种方式的通信,让我们从节点 7 向网络发送一个交易。
4. 最后,你可以检查交易是否被选中以及是否在关键节点上执行。
检查节点 1
检查节点 7
您开发了一个工作的 6 个节点网络,然后添加了第 7 个节点;第 7 个节点能够读取现有的公共数据并开发自己的交易和合约供人查看其他!
添加注册交易管理器
是向已有网络添加了新的 Tessera 实例的简单示例。为简单起见,省略了添加 GoQuorum 节点的步骤,变量 IBFT 示例中遵循的步骤。 在这里,添加了一个 Tessera 节点,但没有指定任何发现选项 ,这表明没有使用白名单,也没有发现发现 IP 。
1. 启动最初的 6 节点网络。
确保删除所有旧网络
调出 6 个节点
2.您可以通过从节点 1 向节点 6 发送私有私有交易来验证是否可以发送私有交易。您还可以看到,由于节点 7 尚不存在,因此您无法向其发送私有交易。
从节点 1 向节点 6 发送私有交易
在节点 7 上发送私有交易
3. 让我们先启动节点 7 ,然后您可以检查正在发生的事情和使用的配置。 启动节点 7
最后一个命令将输出 Tessera 7 的配置。
你可以看到未可见的白名单,发现可以指定,因此默认可以,并且你有一个开始的对等节点,即可以节点 1
这就是连接到现有网络所需的内容。 启动后不久, Tessera 将请求所有节点 1 对等点,然后将记录它们以供自己使用。从那时起,所有节点都将知道节点 7 并可以向 其发送私有交易。
1. 试吧!从节点 1 向新添加的节点 7 发送一个智能交易。
从节点 1 向节点 7 发送交易
你成功了! Tessera 7 已被网络接受,并且可以与其他现有的节点进行交互。