Watch-only模式的共识节点

正如可以在网络教程中验证的那样,NEO网络以完全分布式的方式运行,如上图所示,摘自Medium文章:

转发交易,直至达到共识节点(绿色)

绿色框代表共识,可出现在节点池中。消息全部广播给相邻节点(最好的情况下)。具有特殊功能的节点可以设计为仅监控来自共识节点的P2P消息,可以访问NeoCompiler Eco共享私有链来查看相关信息。

仅限监视节点的信息

在这个图中,该Watch-Only节点还具有RPC功能。值得注意的是,节点可以具有其他特性并整理任意管理该客户端的节点所需的信息,如教程中所强调的那样。

dBFT 场景

为了举例说明一些可能的共识场景,考虑以下角色:

dBFT共识节点角色

通过使用这7个共识节点并结合他们的优点,我们会给出一些例子让读者了解dBFT机制的工作原理:

创世块

创世块创建了3个交易,其中原生资产NEO和GAS在该块中注册并创建,并转移到当前验证人的账户中(由这7个角色组成的多签名账户);

情况 1 (正常运行)

情况 2 (议长故障)

情况 3 (提交之后发生故障)

需要注意的是,3个故障节点个数是f+1,这会阻止网络的运行。另一方面,应该注意的是,没有检测到真正的拜占庭行为,这只是延迟和连接的问题。从这个意义上来说,由于部分同步协议,消息有时会达到这些节点.

情况 4 (议长节点出现拜占庭)

一个由4个节点组成的共识

正如你可能知道的那样,NEO区块链2.x中的地址由21(表示“向计算栈推送34个字节”)、 公钥和ac(操作码,用于调用一个脚本来对地址见证人执行验证)组成。

建议读者看看以下文章:

让我们考虑具有以下公钥的节点(21 + rootOfPubKey + ac):

可以使用以下脚本来创建一个多方签名账户:

532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae

解读为:53(签名个数)+21 +02 ... 6e +21 + 02 ... 62 +21 + 02 ... c2 +21+03 ... 99 +54(公钥所有者个数)+ae

我们选择这4个节点作为验证人节点,下面的脚本将为每个区块提供签名,地址如下:AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU。后者可以通过将该脚本转换为“大端存储的脚本哈希”然后再进行base-58编码来获取。如果读者想要试着转换格式的话,我们建议访问NeoCompiler-Eco

multisig 3/4

scripthash to address base58

一个简单的单节点共识

让我们以前面描述的第一个节点(N1)为例,通过将5354转换为4f,来创建一个包含1个所有者和1个签名者的多签名账户。

512102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc251ae

后者将产生以下地址:AbU69m8WUZJSWanfr1Cy66cpEcsmMcX7BR

返回目录