Algorand——随机权益证明共识

#区块链 #教程

简介

今天讲一下algorand。这是我最近几天才新接触到的一个区块链底层技术。其主要贡献在共识算法上。其核心思想比较有新意,在我看来,其思想可能会在区块链的共识算法中,留下重要的一笔。

先简单讲一下背景,algorand的背景相当的雄厚,是MIT机械工程与计算机科学系的Silvio Micali教授为主要作者提出的区块链协议。他的研究领域包括密码学,零知识,伪随机数生成,安全协议和机制设计。1993年获得哥德尔奖,2004年获得了密码学领域的RSA奖,2012年获得图灵奖。这都是计算机领域重量级的大奖,而且获奖方向都是密码学领域。

algorand是由算法的algorithm,和随机的random两个词合成的。顾名思义,就是基于随机算法的区块链协议。因此他提出了其设计目标是,能耗低。民主化。出现分叉的概率低。可扩展性好。

基本机制

algorand中的很多设计与传统的比特币或以太坊的设计比较类似。

就区块链网络来说,任意节点可以随时加入到网络中来,不需要申请,而且对节点数量也没有任何限制。

就交易设计来说,使用电子签名机制,来锁定一定数量的货币。同样需要使用电子签名,从一个公钥转移一定数量的货币到另外一个公钥,并使用对应的私钥进行加密锁定。

就区块设计来说。依旧是将上一个区块的哈希值指针放入当前区块,然后形成当前区块的哈希值,以确保任意前项区块的信息被篡改后,其后续区块会变得无效。

创新做法

其不同点有,要求系统中拥有三分之二的权益的节点是诚实的,诚实被定义为,其行为遵守有关指引。并能完美的发送和接收消息。从这一点要求上就可以猜想出,其使用了拜占庭共识协议。

另外一个显著区别在于,其并没有引入激励机制,甚至可以认为没有原生货币,仅有权益证明。

整个algorand的机制中,最大的创新点就在于共识机制。共识机制的基础算法,非常类似于拜占庭协议。

但其最突出的区别,也是它名字的来源。就是使用随机算法来选择下一批验证者。因此和传统的各种算法相比,最大的区别在于,所有的验证者都是可替换的。

具体做法

每一轮中会创建一个种子参数,而且这个种子参数,是不可能被人预测,当然也就不可能被操纵了。

在这一轮中,它会基于当前的种子参数构建,并公布一个随机算法。这种算法这也被称之为可验证的随机函数,该随机算法中的一个关键参数是用户的私钥,而这个私钥和各个区块链网络一样,都只有用户本人才知道。

接下来每个用户使用自己的私钥运行系统公布的随机算法,得到自己的凭证。

满足一定条件的用户,就是这一轮的验证者,而在这一个步骤当中,一个特殊的凭证获得者就是领导者。

这个随机算法筛选验证者或者领导者的概率,是按照/用户所持有的网络资产权益/决定的。

接下来,所有的验证者加领导者,共同运行拜占庭协议,来创建新的区块。

特点

但他是如何做到,低能耗,民主化,出现分叉可能性小和可扩展性强的呢?

该算法其本质是pos权益证明机制。因此,相比pow工作量证明,可以做到更低的能耗。

该算法设计为公链,因此所有节点可以随时加入退出,做到了民主化。

该算法基础共识方法为拜占庭算法,故出现分叉的几率小。

值得特别提出的,这里所谓的发叉,跟我们一般说的,在区块链升级或改变时做的软分叉硬分叉,并不是同一个概念。无论区块链如何设计,他都不可能防止的了/被人修改共识协议后,进行的硬分叉。其硬分叉后可能形成的就是一个新的货币,对原货币并没有直接影响。因此通常不作讨论。

最后其可拓展性好的特点,主要体现在实现低能耗后,提高交易速度的可能性比较高。

如何防止攻击? 

其实光听完这些,你可能会问,algorand如何防止攻击呢?

我们可以来做一下,一个攻击的演示。

由于每一次的验证者和领导者都是由随机算法通过种子参数计算出来的。而这个种子参数又是不可预测的,也不可被操纵的。因此没有人能够预测出下一轮的验证者和领导者是哪一些节点。

在验证者和领导者在发出共识消息的时候,在这一瞬间。作恶者可能会知道这些信息以及这一轮哪些节点是验证者,然而因为这些信息是不可能撤回的,作恶者并没有机会去,篡改这些信息,或者让贿赂他们,使其撤回自己的信息。

而进入到下一轮验证后,又会有新的一组验证者和领导者担任。

因此想要攻击这个网络,必须是作恶的节点要足够多。这个比例在原论文当中并没有提出。我通过粗略的计算得出,当作恶者拥有整个网络30%的权益的时候。他作恶的成功率大概在4%左右。

总结 

这是一个新兴的方法。而且作者本人就是常年研究密码学和随机数的,因此我们有理由相信其提出的随机数算法,是经得起验证的。在未来,这样的共识方法,很有可能会成为一个新的发展方向。