学习
实践
活动
专区
工具
TVP
写文章

浅说共识算法POW、POS和DPOS

【从0到1的成长之路】

拜占庭故事和POW工作量证明

在古代有个墙高濠深,楼宇森严的强大城邦拜占庭城。在它的高墙之内有着琳琅满目,数不胜数的金银财宝。而环绕着它的有十个城邦,虽然他们也很富饶,然而跟拜占庭城相比就显得微不足道了。这十个邻居都觊觎拜占庭城的财富,并想占为己有。然而拜占庭城实体太过强大,唯有六个或者六个以上城邦一起联手才能打败它。但是由于历史原因这十个城邦皆有世仇,谁也不相信谁,他们之间是零和博弈。

然而对财宝的渴望让他们决定打破局面,联合六个以上邻居一起进攻拜占庭城。要怎么联合起来配合作战呢,所有头头聚在一起成立一个联合作战指挥部?那是不可能的,在互不信任的条件下唯有待在自己城邦里才是最安全的。唯一途径是通过骑马在他们之间传递信息。他们可以在任意时间以任意频率派出任意数量的信使到任意的对方。每条信息都包含类似如下的内容:“我将在第四天的6点钟进攻,你愿意加入吗?”如果收信人同意了,他们就会在原信上附上一份签了名、盖了图章的回应,然后把这份盖章验证了的信息的拷贝再次发送给九个邻居,要求他们也如此这样做。通过在原始信息链上盖上他们所有十个人的图章,让他们在时间上达成共识。最后的结果是,会有一个盖有十个同意在同一时间进攻图章的完整信息链,当然可能还会有一些因为没有盖全图章而被抛弃了的不完整的信息链。但是,问题在于如果每个城邦向其他九个城邦派出一名信使,或者说就是十个城邦都派出了九名信使,也就是在任何一个时间有总计90次的传输,并且每个城市分别收到九个信息,可能每一封都写着不同的进攻时间。除此以外部分城邦会答应多个的攻击时间,故意背叛发起人,所以这些叛徒会选择向其他城邦广播超过一条的信息链。这个系统迅速变质成不可信的信息和攻击时间相互矛盾的纠结体。

这个故事就如同区块链共享账本的更新一样,每个节点都能选择同意别的节点发起的信息请求并验证后传递,当然,他们也可以选择不同意或者自己再重新发起一个信息给其他节点请求同意。整个网络需要达到的最终目的就是共同同意某一个信息并将它更新到共享账本上,但从拜占庭问题上来看这似乎极度困难。于是区块链通过一种共识机制来解决这个问题,在比特币的区块链中所使用的共识机制是工作量证明(PoW)。

工作量证明实际上就是为信息的传递加入了成本,从而降低信息传递的速率,并加入一个随机元素以保证一个时间段内只有一个城邦或者节点可以有权进行信息广播。这个随机元素就是让节点去计算一个随机哈希算法,它唯一做的事情就是获得一些输入数据然后进行计算并得到一串64位的随机数字和字母的字符串,虽然用现在的计算机能轻易的计算出来,但是只有一个前13个字符是0的哈希值结果可以被比特币区块链系统接受成为工作量证明。就像这个:0000000000000000028ca6ba75ab59da9f0c0ca78c79c84557c03251f0889972 其他的数字都是无效的。这个过程大概是10分钟。而先计算出来的机器会把结果跟它之前接收到的信息放在一起。并向网络中的其他机器广播出去。其他网络中的机器接收到并验证通过了这个13个0的哈希值和附着在上面的信息(哈希算法的反向验证有效值的速度远远快于计算出它),一个新的区块就产生了,它们就会停止自己当下的计算,使用新的区块内的信息更新它们的共享账本或者说区块链拷贝,然后把新更新的账本作为下一个哈希算法的输入,再次开始计算哈希值。如此这般,网络持续同步着,所有网络上的计算机都使用着同一版本的总账。这个计算哈希值的过程就是挖矿,比特币就是对先计算出正确数值的奖励,矿机性能越好,挖矿的时间越长,获得的奖励也就越多。

然而由于比特币生产方式的POW需要10分钟的时间延迟,以及,联合起来的矿池共同发起51%攻击的威胁,大量的电力能源消耗,为了创造出更为经济、安全的解决方式,PoS与DPoS被进一步讨论。

POS权益证明

早在2011年BTC圈子中就有了对POSC(权益证明)这个概念的讨论。2012年8月,一个化名Sunny King的极客推出了Peercoin(PPC),采用工作量证明机制发行新币,采用权益证明机制维护网络安全。首次将权益证明机制引入了密码学货币。权益证明从诞生之日起,就引起了密码学货币领域的广泛关注,它的发展时时的牵动着密码学爱好者的心弦。

PoS就是一个根据持有货币的量和时间,进行利息发放和区块产生的机制。在权益证明PoS模式下,有一个名词叫币天。例如,每个币每天产生1币天,比如持有100个币,总共持有了30天,那么此时币天就为3000。这个时候,如果发现了一个新PoS区块,币天就会被清空为0。每被清空365币天,将会从区块中获得0.05个币的利息(可理解为年利率5%)。权益证明机制下,只要持有币的人,不论持有的数量多少,都可以挖到数据块,而不用采用任何的矿池导致出块集中;同时,也只有持有币的人,才能够进行挖矿,参与网络安全的维护,不会出现利益错位的问题。

首创POS模式的点点币就是1%的年利率,而且这样的模式使得点点币有一个与比特币完全不同的特点:比特币总量2100万是固定的,但点点币没有固定总量,它会每天保持1%的通胀。

POS权益证明机制,在这6年的锤炼下,正日趋完善,也赢得了市场的广泛支持。至2014年,几乎所有的新币,都引入了权益证明机制来维护网络安全。很多纯工作量证明机制的老币,也纷纷修改协议,“硬分叉”升级为权益证明机制。

首先,权益证明机制下,集中挖矿能力进行网络攻击,要比获得算力困难的多。

其次,由于只有持有货币才能进行权益证明的挖矿,不存在利益错位问题。

最后,权益证明机制维护网络安全的成本远远低于工作量证明机制。

但是POS最大的问题是“富者更富”,在POS体系下,新获得POS的能力受已持有POS的绝对限制。人们普遍认为它是一种不公平的模式。

POS币体系中必须先持有POS币才能获得利息,导致后来者主要依赖于向上家买币,结果就形成金字塔结构。如纯POS未来币(NXT),因为原始股权结构是写入IPO的,而且第一次公开发行没有增发公众股,而是全部存量发行,理论上讲原始股东如果联合起来控制价格是很容易的。事实也是如此其原始股东只有20多个,市场机制没有均衡,卖单价格取决于大股东。

DPOS即授权股权证明

DPOS授权股权证明的过程为:股东可以影响区块(block)由谁来产生。股东如何去影响呢?就是去给代表投票。得票最高的代表在预定的时间将所有合法的交易打包成区块(block),并获得系统奖励。DPOS的优势在于更快的区块确认和可扩展到VISA级别的每秒10000次支付或转账频率,EOS就是采用DPOS证明方式。它在尝试解决比特币采用的传统工作量证明机制(PoW)以及NXT所采用的股份证明机制(PoS)的问题的同时,还能通过实施科技式的民主以抵消中心化所带来的负面效应。

通过引入“受托人”这个角色,DPoS可以降低中心化所带来的负面影响。一共有101位受托人通过网络上的每个人经由每次交易投票产生,他们的工作是签署(生产)区块。通过去中心化的投票过程,DPoS能让网络比别的系统更加民主。与其让我们完成在网络上信任所有人这个不可能完成的任务,不如让DPoS通过技术保护措施来确保那些代表网络来签署区块的人们(受托人)能够正确地工作。除此之外,在每个区块被签署之前,必须先验证前一个区块已经被受信任节点所签署。像DPoS这样的设计,实际上缩减了必须要等待相当数量的未授信节点进行验证后才能够确认交易的时间成本。DPoS能够在单一区块内容纳更多笔交易。这会将加密货币技术带到一个新的层次,使其能够与中心化的结算系统相媲美。

DPoS背后的基本原理

•给持股人一把可以开启他们所持股份对应的表决权的钥匙,而不是给他们一把能挖矿的铲子。

•最大化持股人的赢利。

•最小化维护网络安全的费用。

•最大化网络的效能。

•最小化运行网络的成本(带宽、CPU等)。

以上主要是目前主流的共识算法。 POW,直接让比特币成为了现实,并投入使用。而POS的存在主要是从经济学上的考虑和创新。DPOS,这种不需要消耗太多额外的算力来进行矿池产出物的分配权益方式。但要说能起到替代作用,DPOS来单独替代POW,POS或者POW+POS也不太可能,毕竟存在即合理。每种算法都在特定的时间段中有各自的考虑和意义,无论是技术上,还是业务上。

一起入群交流吧

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312G1O2C000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券