密码抽签(cryptographic sortition)
密码抽签是Algorand的关键创新,也是其得名的由来,其要点如下。首先,Algorand创建并不断更新一个独立参数,称为“种子”。“种子”参数不仅不可能被“敌对者”预测,也不能被其操纵。
其次,在BA★每次循环中,Algorand基于当前 “种子”参数构建并公布一个随机算法(也被称为“可验证的随机函数”或verifiable random functions,见下文)。该随机算法中的一个关键参数是用户的私钥,这个私钥只有用户本人才知道。
接着,每个用户使用自己的私钥运行系统公布的随机算法,得到自己的凭证(credential)。凭证值满足一定条件的用户就是这一轮的“验证者”(verifiers)。“验证者”组装一个新区块并连同自己的凭证一起对外发出。其中,在第一个子步骤中凭证值最小(按字典方面排序,见下)的那个“验证者”的地位比较特殊,称为“领导者”。
最后,所有“验证者”基于“领导者”组装的新区块运行拜占庭协议BA★。在BA★的每次循环中的每一个子步骤中,被选中的“验证者”都是不同的。这样能有效防止验证权力集中在某些用户手中,避免“敌对者”通过腐化这些用户来攻击
区块链。
从上述过程可以看出,第一,“验证者”在秘密情况下获知自己被选中,但他们只有公布凭证才能证明自己的“验证者”资格。尽管“敌对者”可以瞬间腐化身份公开的“验证者”,但已不能篡改或撤回他们已经对外发出的消息。第二,所有“验证者”公布自己的凭证并进行比较后,才能确定谁是“领导者”,也就是“领导者”可以视为由公共选举产生。第三,随机算法的性质决定了,事先很难判断谁将被选为“验证者”。因此,“验证者”的选择过程很难被操纵或预测。第四,尽管“敌对者”有可能事先安插一些交易来影响当前公共账本,但因为“种子”参数的存在,他仍然不可能通过影响“验证者”(特别是其中的“领导者”)的选择来攻击Algorand。接下来,对密码抽签和拜占庭协议BA★做一个相对技术化的介绍。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。