LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > PDX节点加入共识委员会算法规则详解

PDX节点加入共识委员会算法规则详解

2019-12-19 PDX公有链 来源:区块链网络

最近的测试网超级节点启动计划已经告一段落了,挖矿奖励还在持续兑换!加入共识委员会的人数与日俱增。那么如何加入共识委员会,共识委员又是如何选举的呢?

PDX共识委员会使用PDX共识机制,“区块生产者”进入共识委员会的战役是忙碌的,现在PDX共识委员已经涌入了很多重量级玩家,共识委员将对整个系统有相当大的影响,也可以从自己的生产服务中获益,共识委员也可能会进一步推动PDX成为最受欢迎的公有链。

共识委员主要负责以下事务:

收集网络里的交易;

验证交易并把交易打包到区块;

广播区块给其他节点,在通过验证后将区块添加到自己本地区块链上。

共识委员有什么收益:

成为共识委员获得的直接收益来自区块生产奖励,可以理解为系统中的矿工。

共识委员=挖矿权+挖矿奖励+手续费收入。

加入共识委员会首先要了解共识委员的算法规则,PDX将为您全方位解析。

区块链的验证存储

Normal块是PDX节点产生的最普遍的块,遵循正常的区块链存储流程,例如甲乙双方均有块1的状态,甲用块1解析出块2并发送给了邻居乙,乙要信任这个块首先需要验证甲发的块2是否真实才可进行存储广播,于是乙将自己的块1和甲发来的块2累加的状态去验证块2的真实性,若算出的哈希值一致那么块2就是真实的。

甲将块2发送给邻居乙只是给乙一个条件输入,输出结果由乙自己进行计算,如果结果即出块哈希值相同,乙将会存储并进行全网的P2P广播,若不同,则不会存储,这就是普通Normal块的存储规则。

Normal块的存储流程如下图:

PDX节点加入共识委员会算法规则详解

按照这样的一个逻辑往下生成块2、3、4块,虽然出块的节点可能不一样,但是所有人都可以这样验证。接受到信息的人经过检验一致后会进行P2P广播,通过P2P广播接受到信息的所有人,都需要再计算一遍,必须全部一致才会被储存,如果有一人算出的结果不一致就不会被储存。

如果按照这样的一个逻辑往下生成块3、4、5、6一直的往下验证,但是这只是目前普通normal块的计算,如果存到第5块的时候,会出现一个断言的状态assertion,此时一个节点都有5个状态到一个分界值CFD,会把5个统一成assertion块、commit块、normal块分为三种块(5也可以=N)。

PDX共识点在于当存储到块5的时候,会进入一个临界值CFD的断沿状态,将5个Normal块状态打包成一个assertion块,如图所示:

PDX节点加入共识委员会算法规则详解

当到达临界值CFD(1~5)的块的哈希打包起来,打包成一个assertion块,然后把assertion发送给出commit块的出块的master,那么到5的时候已经知道下一个commit的节点了,甲会把assertion发送给乙,乙会通过大家发过来的assertion进行计算。

举例说明:甲有一个assertion ,乙也有一个assertion,甲发送给乙一个,乙就有两个assertion了,甲的asssertion是12345,乙的asssertion也是12345,两个是一样的,这个时候乙会进行判断看标准的块哈希值是什么,要是一样的乙会把12345给确定好,确定好之后会打包commit块里,打包好之后乙在发送给甲,甲会根据commit块的12345,来纠正本地里的12345,甲会判断两者是否一样,一致就不需要纠正了。

节点加入委员会算法规则详情如下图:

PDX节点加入共识委员会算法规则详解

Master节点进行commit块打包规则

1.收集assertion并且验证签名;

节点每次发送assertion 会有一个签名,先验证签名用来证明是节点发出的不会被更改。

2.过滤出委员会中节点的assertion;

3.计算标准BlockPath(统计委员会节点的存块情况,多数共识,计算标准BlockPath);

4.根据assertion数量判断链的状态(如果assertion数量小于当前委员会数量的2/3,当前链变为岛屿状态);

大陆状态:节点不可更改。

岛屿状态:共识人数不够,可篡改,有可能被回滚。

5.统计当前链的assertion总数(相当于链的节点参与度,用于同步时比较);

6.更新节点活跃度;

7.判断节点发送assertion的数量;

8.判断节点N个区间内的assertion数量;

9.给符合要求并且质押的节点活跃证明;

10.过滤双签;

11.撒销不符合要求的节点的活跃度证明;

12.根据节点活跃度计算委员会增减;

13.检查节点活跃度证明;

14.有证明的如果不在委员会中加入预备委员会列表;

15.没有证明的节点,如果在委员会中,加入失格委员会列表;

16.对失格委员会列表中的节点进行惩罚;

17.签名区块并且广播给所有节点。

注意:commit块打包时会根据委员会assertion的数量来判断链的状态,必须搜集到共识委员会中2/3以上数量的assertion才是正常,否则当前链就会变成岛屿状态。

验证commit块规则

1.验证commit块Rank和签名(验证数据没有被更改);

2.验证commit块中assertion的签名,得到assertion地址,用本地节点存的委员会查看地址是否合法;

3.验证assertion总数,标准blockPath、链状态;

4.存块上链(后面验证如果出错,会被回滚);

5.验证活跃度,用本地数据重新计算一边活跃度然后和commit块中活跃度进行对比,对比成功更新本地活跃度,出错回滚;

6.验证预备委员会列表和失格委员会列表,出错回滚;

7.查看是否是更新委员会的高度,更新完后(根据预备委员会列表和失格委员会列表),计算下次更新高度;

8.根据标准BlockPath验证本地区块。

注意:所有验证都是通过节点本地的数据,依据其它节点输入的条件,把所有的条件计算完毕后会得到一个结果,将计算结果进行对比,如果一致进行存储及广播。

怎么进入共识委员会?

根据节点的活跃度计算委员会增减,检查活跃度证明,根据活跃度证明来判断节点是否有资格进入共识委员会。

加入或被剔除共识委员会有以下四种情况:

PDX节点加入共识委员会算法规则详解

①有活跃度证明,已进入共识委员会

②有活跃度证明,未进共识委员会

③无活跃度证明,已进入共识委员会

④无活跃度证明,未进入共识委员会

1.如果有活跃度证明但是没有在委员会里,会被列入预备委员会列表,当系统更新之后,系统会随机选择有活跃度证明的节点进入共识委员会;

2.如果没有活跃度证明的节点在委员会里,会失去在共识委员会的资格,被列入失格委员会列表中,当系统更新之后,这些节点会被剔除共识委员会并且扣除10%的质押金额;

3.如果有足够的活跃度证明,并且已进入共识委员会,那么会一直是共识委员会成员;

4.如果无活跃度证明,也未进入共识委员会,那么这些节点依然游离在共识委员会之外;

注:剔除规则

1.每个commit块均会审核,在审核块之前的10个commit块区间中如果存在三分之一或以上的assertion没发送就会被剔除委员会;

2.节点作恶,发送无效的块,双签等;

3.被t除的节点会扣除质押金的10%,需要再次质押,才能加入委员会进行挖矿。

如何增加活跃度证明?

系统自动统计每个节点发送assertion的数量,节点每发送一个assertion就会累计一点活跃度,系统计算当前链的节点参与度,进行同步比较,更新节点活跃度。

—-

编译者/作者:PDX公有链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...