Algorand算法实现(一)
判断节点是potential leader的条件:
H(Sig(r, 1, Br-1)) <= 1 / size(PKr-k)
size(PKr-k)为第r-k轮中网络中参与区块共识的公钥个数(也就是钱包的数目)
verifier的选择
定义回看参数k,概率p
输入参数:(r, s, Br-1): 其中r为第r轮,s为第s步,Br-1为上一轮的Q值
判断方法:对于i,如果 H(Sig(r, s, Br-1))< p,则i为verifier
Br的计算
如果leader_r存在而且在给定的时间内发布了对应的credential:
Br = H(Sigleader_r(Br-1), r-1),即首先用leader对于Br-1的签名,再对签名和r-1计算哈希
否则: Br = H(Br-1, r-1),即对Br-1和r-1计算哈希
Gossip通讯协议
共识算法BA*(轮循批量共识)
参数种子生成算法(VRF)
Algorand的测试情况
MIT计算机科学和人工智能实验室对Algorand进行了模拟测试[Gilad, Yossi, Rotem Hemo, Silvio Micali, Georgios Vlachos, and Nickolai Zeldovich, 2017, “Algorand: Scaling Byzantine Agreements for Cryptocurrencies”. 本节引用的图均来自这篇文章。他们的测试在亚马逊云上进行,使用了1000台EC2虚拟机,发现:
第一,Algorand能在1分钟内确认交易,而且确认交易的时间随着用户数量的增加,变化不大。
第二,将用户数固定在5万,测试不同区块大小对通量(throughput,可以用产生一个区块的平均耗时来衡量)的影响。可以看出,区块越大,构建区块的耗时越长,但对拜占庭协议BA*的运行时间影响不大。