本文由币乎社区(bihu.com)内容支持计划奖励。
这篇文章描述领导者的选举过程。
追随中本聪算法
就像前面提到的那样,Cardano SL使用追随中本聪(FTS)算法来选择领导者。每个槽(slot)当前时代(epoch)的领导者在当前时代开始的时候由FTS算法计算得出。所以创世纪块包含了一组领导者的列表。领导者的数量与每个时代的槽数量是一样的,这个数量取决于在配置文件中定义的基本安全参数K
。
FTS使用一个共享种子,该共享种子就是多方计算(MPC)为上个时代计算的结果:在MPC的结果中一些节点揭示它们的种子,这些种子的XOR就被称为共享种子。实际上共享种子就是一个 字节串。
股东被选举为领导者的概率与股东持有的币数量相关。同一个股东可以在一个时代里面被选举为多个槽的领导者。
算法
领导者选举过程的理论方面在白皮书的第11页中讲解了。
节点将所有未花费的输出(utxo
)按照一种确定的方法(按字典)进行排序,所以结果是一对(StakeholderId, Coin)
的有序排列,StakeholderId
是股东的ID(股东的公钥哈希值),Coin
是股东持有币的数量。这里假设utxo
不是空的。
然后节点选择几个在1
和系统中Lovelaces数量之间的随机i
。为了找到第i
个币的拥有者,节点找到最小的x
,使得这个列表中从x
到i
的所有币的总数不小于i
(这样第x
个地址就是第i
个的拥有者)。
结果是一个非空的StakeholderId
序列,也就是被选中的股东们的ID。SlotLeaders
序列保存在节点运行环境中。
由于是P2SH地址,所以节点不知道是谁将要给它们发送基金。因此,P2SH地址可以包含目标地址,该目标地址指示哪些地址应该被视为“拥有”用于FTS目的的基金。
翻译作者: 许莉
原文地址: LEADER SELECTION IN CARDANO SL