1703879800
1703879801
1703879802
1703879803
1703879804
在每一个区块上调用getValidators函数,以决定当前列表。转换规则是由实现该方法的合约决定的。
1703879805
1703879806
reporting合约至少应该有如下界面:
1703879807
1703879808
1703879809
1703879810
1703879811
当有善意或者恶意行为时,共识机器分别调用reportBenign和reportMalicious函数。
1703879812
1703879813
创建一个reporting合约的基本示例如下:
1703879814
1703879815
1703879816
1703879817
1703879818
1703879819
1703879820
1703879821
该代码无须解释说明。确保在验证器中,数组用验证器1的第一个地址和验证器2的第一个地址代替这些地址,因为我们将使用那些地址进行验证。现在编译上述合约。
1703879822
1703879823
现在创建规范文件。创建一个叫作spec.json的文件,放入下面的代码:
1703879824
1703879825
1703879826
1703879827
1703879828
1703879829
1703879830
1703879831
上述程序代码的工作原理如下:
1703879832
1703879833
·engine属性用于设置共识协议和协议具体参数。这里的engine是authority-Round,也就是aura。gasLimitBoundDivisor决定gas上限调整,并有通常的以太坊值。在验证器属性中,有一个contract属性,即reporting合约的地址。stepDuration是以秒为单位的区块时间。
1703879834
1703879835
·在params属性中,只有网络ID才是关键;在所有的链中,其他属性都是标准的。
1703879836
1703879837
·genesis属性对于authorityRound共识有一些标准数值。
1703879838
1703879839
·accounts属性用于列出网络中存在的最初账户和合约。前四个是标准以太坊内置合约,使用Solidity合约编写语言应当包括这些。第五个是reporting合约。确保把字节码替换成constructor参数中的字节码。最后一个账户是在验证器1 shell生成的第二个账户。它的用途是向网络提供以太币。用户可以用自己的地址替换它。
1703879840
1703879841
在继续下一步操作之前,创建另一个文件node.pwds,在其中放入所创建的账户的密码。该文件将被验证器用来解锁账户,签署区块。
1703879842
1703879843
3.启动节点
1703879844
1703879845
现在已经具备各种条件启动验证节点了。在第一个shell窗口中,运行如下命令以启动第一个验证节点:
1703879846
1703879847
1703879848
1703879849
[
上一页 ]
[ :1.7038798e+09 ]
[
下一页 ]