验证人选取概率的测试

在PlatON&Alaya中的共识机制中,节点获得记账权(出块)的设计原则是一个在安全性、公平性和去中心化三个维度之间平衡的解决方案。
我们通过可验证随机函数VRF可以使每次记账节点的产生具有随机性,通过累积二项分布函数可以使节点被选中的概率和节点的自身权重成一定的比例关系,而在具体应用时累积二项分布函数会用到一个期望值参数,该参数直接影响选中的概率,暂且称为“基数”,该值为一个整数。本次测试的目的,即为寻找一个合适的“基数”使验证人在实际参与抽样选取过程中抽样结果符合我们设计的预期:即节点累积被选中的次数和节点自身权重的平方根趋近于1

本次测试基于以下场景:

备选节点数:201

共识节点数:43

最低质押量:10W

为模拟现实场景,我们将总权重分为几个不同量级,每个量级的每个备选节点根据总质押量随机分配。
为便于统计不同量级的不同基数对选取概率的影响,每个量级的节点权重数据在本量级内测试时保持不变,不同量级则重新分配。

以下是本次测试的结果,其中:

每个图是不同总权重值,基于不同“基数”对验证人进行50W次抽样选取的结果

横轴:按权重高低排名

纵轴:选中和权重平方根的比

线:不同基数曲线

由以上测试数据可以看出,”基数“30和我们的期望最接近,并且在不同总权重的抽样中表现都是稳定的,因此在PlatON主网中该”基数“被设定位30。

5 个赞

求教:设计预期中,次数与权重平方根的比趋近于1,这个“平方根”的设计是怎么考虑得出的?

考虑到随着质押量的增加,节点权重越来越大,节点之间的权重差会特别大,直接影响了选中概率的差距,因此为了避免权利过于集中,在选取验证人时实际使用的权重都进行开根号,使得权重差距处于合理期间。