算法和共识协议

2020-10-18 09:33:21

Algorand区块链使用去中心化拜占庭协议协议,该协议利用纯风险证明(Pure POS)。这意味着,只要绝大多数股权掌握在非恶意用户手中,它就可以容忍恶意用户,在没有中央权威的情况下达成共识。该协议速度非常快,每个节点只需要最小的计算能力,从而使其能够高效地完成事务。

在详细介绍该协议之前,我们先讨论一下Algorand使用的两个函数概念。这是协议的简化版本,涵盖了理想条件。有关所有技术细节,请参阅白皮书或源代码。

最近,我们发布了实现可验证随机函数(VRF)的源代码。VRF获取密钥和值,并生成伪随机输出,并提供任何人都可以用来验证结果的证明。VRF的功能类似于彩票,用于选择领导人提出一个区块和委员会成员对一个区块进行投票。当为帐户执行此VRF输出时,它用于从二项分布中采样,以模拟用户帐户中每个算法的调用。帐户中的算法越多,该帐户被选中的机会就越大--就好像帐户中的每个算法都参与了自己的彩票。此方法确保用户不会因为创建多个帐户而获得任何好处。

用户帐户必须联机才能参与协商一致协议。为了减少风险,在线用户不使用他们的消费密钥(即,他们用来签署交易的密钥)来达成共识。取而代之的是,用户生成并注册特定轮次的参与密钥。它还生成一组临时密钥,每轮一个,用参与密钥对这些密钥签名,然后删除参与密钥。每个临时密钥用于签署相应轮次的消息,并且在轮次结束后被删除。使用参与密钥确保用户的令牌是安全的,即使他们的参与节点受到危害。在使用参与密钥和临时密钥后将其删除,可确保区块链是前向安全的,并且不会受到使用旧密钥对旧块的攻击。

共识是指选择块并将其写入区块链的方式。Algorand使用上面描述的VRF来选择领导者来为给定回合提出块。当向区块链提出区块提案时,会选择一个选民委员会对区块提案进行投票。如果绝对多数的选票来自诚实的参与者,那么这个区块就可以被证明。这个算法之所以成为纯粹的赌注证明,是因为用户是根据他们账户中的算法数量来选择委员会成员的。委员会由伪随机选择的账户组成,投票权取决于他们在网上的股份。这就好像每个令牌都得到了VRF的执行。拥有更多令牌的用户可能会被选择更多。对于委员会成员身份,这意味着较高的股份帐户很可能比具有较少令牌的选定帐户拥有更多的选票。使用随机选择的委员会允许协议仍然具有良好的性能,同时允许网络中的任何人参与。

共识需要三个步骤来提出、确认和将区块写入区块链。这些步骤是:1)提议,2)软投票,3)认证投票。下面将对每种情况进行说明,假设理想情况是没有恶意用户且网络未分区(即没有网络因技术问题或DDoS攻击而关闭)。请注意,所有消息都使用用户的参与密钥进行加密签名,并且在这些步骤中使用VRF验证委员会成员身份。

在数据块建议阶段,选择客户向网络建议新数据块。此阶段开始于网络中的每个节点循环通过其具有有效参与密钥的每个在线帐户,运行Algorand的VRF以确定是否选择该帐户来建议块。VRF的作用类似于加权彩票,在这种情况下,账户在线参与的算法数量决定了账户被选中的机会。一旦VRF选择了帐户,节点就会将建议块与VRF输出一起传播,从而证明该帐户是有效的提出者。然后,我们从“提议”步骤转到“软投票”步骤。

此阶段的目的是将提案数量过滤到1个,从而确保只有一个模块获得认证。网络中的每个节点将从其他节点获得许多建议消息。节点将验证消息的签名,然后使用VRF证明验证选择。接下来,该节点将比较来自每个经过验证的获胜者的VRF证明的散列,以确定哪个是最低的,并且将仅传播具有最低VRF散列的块建议。此过程将持续固定的时间。

然后,每个节点将为其管理的每个参与账户运行VRF,以查看它们是否已被选中参与软投票委员会。如果选择任何帐户,它将根据帐户拥有的ALGO数量进行加权投票,这些投票将传播到网络。这些投票将用于在超时时计算的最低VRF块建议,并且将与VRF证明一起发送到其他节点。

流程中的每一步都会选出一个新的委员会,每一步都有不同的委员会规模。这个委员会的规模是用ALGOS来量化的。进入下一步需要法定人数,而且必须是预期委员会规模的一定百分比。这些投票将从网络上的其他节点接收,每个节点将在添加到计票之前验证委员会成员资格VRF证明。一旦达到软投票的法定人数,处理将转到“验证投票”步骤。

一个新的委员会检查在软投票阶段投票表决的整体提案是否存在超支、重复支出或任何其他问题。如果有效,新的委员会将再次投票认证该区块。这是以与软投票类似的方式来完成的,在软投票中,每个节点迭代其管理的帐户以选择一个委员会并发送投票。这些投票由每个节点收集和验证,直到达到法定人数,从而触发轮次结束,并提示节点为块创建证书并将其写入分类帐。在这一点上,新的一轮被启动,这一过程重新开始。

如果在某个超时之前没有达到认证委员会投票的法定人数,则网络将进入恢复模式。