就像军迷们喜欢看武器装备的各种参数一样,jan 的这篇文章无疑提供了非常友好的“性能参数”。我也尝试着给这个分析框架做一点添砖加瓦的小事,根据这个框架分析一下 algorand。
algorand 是 Micali 提出的一种结合 VRF 和 BFT 的共识算法
- 从进入方式上看,参与者持有一定比例的代币就能获得相应概率的参与共识的机会。
- 从出块选择上看,algorand 是一种 PoS 算法,通过 VRF 算法为每一轮共识随机选择一组共识节点。
- 从共识方式上看,algorand 在每一轮共识中实际上运行的是 BFT 算法,需要 1 到多轮共识过程完成给定区块的共识。
- 从退出方式上看,参与者离线或者不再持有任何代币即会失去参与共识的机会。
- 从一致性和活性上看,algorand 对恶意节点的容忍比例与共识委员会的期望大小有关,委员会期望大小越大,对恶意节点的容忍比例就越高,按照论文的计算,在委员会期望大小为 2000 的时候,能容忍恶意节点持有不超过 20% 的代币。
- 从延迟上看,algorand 的延迟为中,实际情况甚至可能是高。由于 algorand 实际上是在公网环境运行 BFT 算法,共识节点众多(委员会期望大小甚至设定为 2000,而对应的实际物理节点数量在初期可能并不多,但是随着代币的分散度增加,物理节点数量可能也会非常多),由于对节点在线要求高且公网的网络情况复杂很可能导致区块普遍需要多轮共识过程。
- 从带宽效率上看,algorand 的带宽效率为中甚至低。因为 algorand 需要额外传输共识过程中必要的投票,而这些投票消息的复杂度与共识物理节点的数量成平方的关系。
- 从节点数量上看,algorand 的节点数量为中。algorand 虽然在共识委员会的期望大小为 2000, 但是实际上掌握大量代币的物理节点可以同时扮演多个共识节点,以至于实际上真正参与共识的物理节点并不会非常多。而且,由于 BFT 的消息复杂度和物理节点数量成平方的关系,实际上 BFT 能够支持的物理节点不会特别多。