来源:星球日报分析师:编辑:郝
编者按:再过不到10个小时(倒计时到了),以太坊将在7280000街区的高度激活君士坦丁堡/圣彼得堡网络升级。这一升级无疑是近期区块链世界最受关注的事件。它不仅影响着数字货币市场背后的巨大利益,也标志着公链技术探索的又一个里程碑。带领区块链进入“2.0时代”并“走了很长一段路”的以太坊,将通过这个分叉进一步从PoW共识机制过渡到PoS共识机制。从共识机制的角度,Odaily星球日报研究院希望带你回到下一个历史,总结共识层的演化规律,重点对比主流的PoW和POS变体(或POS),解释为什么我们认为“PoS”混合共识机制会是公链后期发展的一条出路。
区块链是一个去中心化的分布式账本系统。由于对等网络的高网络延迟,每个节点观察到的事务序列不可能完全一致。因此,区块链系统需要设计一种机制来商定在一定时间内发生的交易顺序。这种在一个时间窗口内对交易顺序达成共识的算法被称为“共识机制”。共识机制以去中心化的思想解决了节点间的相互信任问题,使区块链在信息传递的过程中可以同时完成价值传递。
然而,在一个分散的系统中,要实现一致的算法并不容易。中本聪提出了基于PoW(工作证明)的共识机制,可以说是迄今为止最安全可靠的公链共识算法。后来PoS(股权证明)机制相继出现,PoS机制的一些变种,比如DPoS(委托股权证明)机制。这些共识机制各有优势,但都被证明有不足。
正因如此,在区块链领域,人们从未停止探索和创新更好的共识机制,如下图所示。
动力问题突出。
PoW(工作量证明)是一种按劳分配模式,即矿工凭借工作量的大小争取记账权。工作量越大,矿工的计算能力就越大,矿工获得记账权的概率就越大。
PoW共识在比特币中的应用意义重大,也是迄今为止最早、最安全的公链共识算法。然而,战俘共识有明显的缺陷:
资源浪费
PoW共识过程高度依赖区块链网络节点贡献的计算能力,主要用于解决SHA256哈希和随机数搜索,实际上并不产生任何有效的社会价值。随着加密数字货币的日益普及和专业挖矿设备的出现,加密数字货币生态圈在资金和设备方面呈现出明显的“军备竞赛”,逐渐成为高能耗的资金密集型产业,资源消耗问题进一步凸显。根据Digiconomist的数据,如果将比特币视为一个国家,其挖矿用电总量已经超过阿尔及利亚、以色列和希腊,位列全球第45位。
单看以太坊,矿业总用电量超过马其顿、洪都拉斯、安哥拉,年用电量约8.63万亿瓦时,占世界用电量的0.04%。
计算能力的集中
中本聪设计PoW共识机制的前提是计算能力和计算节点的均匀分布。但随着比特币数量的减少,对计算能力的需求更高,人们开始通过联合挖矿来加速获取比特币,从而诞生了矿池挖矿抵抗的新游戏。矿池的出现,一定程度上破坏了比特币等加密数字货币体系的平衡,马太效应逐渐显现。
根据btc.com(统计时间:2019年2月19日)、BTC.com、安特普尔、斯卢什普尔、维亚布茨和BTC的数据。过去一年矿池算力份额排名前五的TOP,占比特币总算力份额的64.6%。理论上,这五个矿池加在一起,确实有能力发动51%的计算攻击。虽然,实际上这些矿掌握全网51%计算能力所需的成本远远超过攻击成功实施后的收益,但51%攻击的安全威胁始终存在,引起了人们对计算能力集中的担忧(后面详述)。
缺乏“最终一致性”
PoW支持分区容错(可以分叉),即放宽了对最终一致性确认的需求(可以回滚),约定大家选择已知最长的链进行确认。在这种情况下,系统的最终确认只存在于概率意义上。
低服务处理性能
虽然PoW共识算法已经投入了大量的能量支持系统,但是这些能量消耗大部分用于工作量证明中的哈希计算,区块链网络处理事务业务的性能很低。比如比特币每秒只能进行1 * 1024 * 1024/250/(10 * 60)=6.99次左右的交易。
PoS的提出和硬币计数的实践
权力问题越来越突出,引发了人们对这一机制的质疑和思考。PoS开始出现。
PoS共识机制起源于矿业中“公地悲剧”的争论。“公地悲剧”是由英国的加勒特哈丁于1968年在文章《The tragedy of the commons》中提出的。他指出,公地作为一种资源,有很多用户。每个使用者都知道资源会因过度使用而枯竭,但他无权阻止他人使用。因此,每个人都倾向于过度使用它,从而加剧了这种情况。
2010年11月,矿业公地的悲剧被范德路易指出,并引起广泛讨论。讨论的焦点是比特币系统需要消耗大量的计算能力来维持系统的安全性和稳定性。但是随着比特币不断被挖出来,区块获得的奖励减少,越来越多的节点会退出系统,攻击成本降低。比特币网络系统会出现“公地悲剧”。
2011年7月,数字货币爱好者量子力学(Quantum Mechanic)在比特币论坛上首次提出了PoS权限证明而非工作证明的概念。权益证明共识机制的概念一经出现就受到了很多人的青睐。人们意识到,权益证明可能是矿业“公地悲剧”的解决之道。
与PoW物理开采不同,PoS共识是整个开采过程将被虚拟化,开采者将被验证者取代。
其操作过程如下:
验证者必须锁定他们拥有的一些令牌作为保证金。
之后,他们将开始验证区块。与此同时,当他们发现一个他们认为可以添加到链中的块时,他们会通过下注来验证它。
如果区块成功上线,验证者将获得与其赌注成比例的奖励。
2012年8月,Sunny King发布Peercoin (PPC),PoS第一次付诸实践。PoS由系统中拥有最高权益但不是最高计算能力的节点获得记账权,其中权益体现为节点对特定金额货币的所有权,称为货币年龄或货币天数。数硬币结合了两种共识算法,PoW和PoS。前期通过PoW挖矿的方式给矿工发放代币。后来随着挖掘难度的增加,系统主要靠PoS共识算法来维护。但在PoS后期,投资者可以通过手中的资金囤积和垄断小币,降低了小币的流动性。
例如,每个硬币每天都有一个1硬币年龄。比如你持有100枚硬币,总共30天,那么此时你的币龄就是3000。当一个新的块被创建时,其他想要获得记账权的节点也需要计算哈希值,而满足条件哈希值的难度与难度值有关,与币龄成反比,即你的币龄越老,获得合格哈希值的概率越大。同时,当你的币龄被清空后,系统会给你相应的“利息”。每清空一次365币龄,就会得到3000 *的利息。
在这之后,PoS衍生出了更多的变体,而每一个变体往往都涉及到区块链token经济模型的变化。比如ReddCoin,Slimcoin等。促进了PoS的发展,还有Casper、Cardano(大毒蛇)、Fractal等。处于PoS研究的前沿,这将在下面详细阐述。
PoS不是一个完美的选择。
客观来说,PoS机制的诞生确实解决了PoW的一些弊端:
1.利用PoS机制开发新区块在一定程度上避免了资源的浪费,系统区块的自动输出缓解了数字资源有限带来的通货紧缩。
2.在POW机制下,矿池可以通过规模经济提高产量,降低长期平均成本。但PoS共识机制削弱了中央矿池对规模经济的需求,计算能力集中垄断的局面也得到缓解,个体竞争力差异相对缩小。
3.就51%攻击而言,PoS共识机制发起一小时攻击的成本远高于PoW共识机制。
以比特币为例。目前比特币的流通供应量为1755.15万BTC。如果共识算法是PoS,51%攻击需要持有8,775,750 BTC,相当于市值34,906,510,958美元,而在PoW的情况下,租用计算能力只需要242,051美元左右。对其他数字货币的POS进行51%攻击的成本和对PoW进行51%攻击一小时的成本对比见上表1。
那么PoS共识机制完善吗?答案是否定的。
第一,PoS本身很难实现。
1)发行1)代币。一开始只有创始块有Token,分散Token的开采权,网络才能成长。但是在当前很多国家禁止ICO的环境下,如何合规均衡的分散Token成为了一个难题。
2)核算节点数量难以确定。大多数PoS依赖于PBFT算法,但是PBFT需要在它能够选择块生产者之前确定节点的数量。但在PoS机制下,节点可以随时参与或退出挖掘,因此没有阈值无法确定选举总数,也无法计算1/2或2/3的通过率。而且计费节点的不确定性会增加网络划分的概率,导致分叉。
此外,PoS系统需要高度安全的网络来抵御各种类型的黑客攻击。目前还没有一个公链被证明有这样的实力,甚至以太坊也经常遭受黑客攻击。
第二,被动进化是意外集权的结果。
对于一个采用PoW共识机制的公链(反ASIC挖掘算法),其阻断性和安全性主要依赖于计算能力的分散性。只要有显卡和网络,任何人都可以成为矿工,降低了用户使用门槛,促进了更多人参与挖矿,实现了早期计算能力的分散。只要超过51%的计算能力来自诚实的矿工,区块链交易就相对安全且不可逆转。
然而,对于一个采用PoS共识机制的公链,在主上线之初,创建块中分发的大部分令牌属于有限数量的项目方和私人投资者。封锁区块链的权利只能由这些玩家决定。如果这些人密谋攻击区块链,他们就能成功地实现双重支出攻击。虽然开发者和投资人的利益在Token的价值中得到了充分的体现,不会为了利益而参与恶意行动,但是PoS公链在主上线后必然会被这些人垄断和支配。更糟糕的是,如果可以获得大量的报酬和交易成本,这些垄断者就会把大量的股份牢牢控制在自己手中,使得PoS公链本质上是一个由巨头控制的网络。
第三,没有利害关系。
在PoW机制中,当区块链分叉时,矿工必须选择一个方向进行开采。在PoS机制下,PoS机矿工为了利润最大化,往往双向挖掘。因为分叉不消耗任何资源。矿工可以在最长的链上采矿,并创建一个只在自己街区采矿的分支。此外,其他验证者也愿意接受分叉。他可以同时在两条链子上“挖矿”,因为在上面“挖矿”没有损失。相反,如果这个链条没有被“开采”在上面,就会遭受损失。因此,即使是诚实的验证者也会倾向于同时在所有链上“挖掘”。虽然他们知道这种尝试会降低整个代币的价值,但他们没有多少钱,他们也不在乎。这就是所谓的公地悲剧。
我们可以这样理解这个名词:主席台上有十个候选人,下面有很多人给这十个候选人投票。投票的话,可以给这个主席台上的十个人每人投一票,也就是一个人投十票,每个人投一票。这样,无论台上哪位候选人成为最后的赢家,你都会受益。
功率位置混合机构更接近理想。
几乎所有的共识机制都有其独特的优势,但也有其劣势。没有一种共识机制能够完美地解决区块链的“不可能三位一体”问题。于是,人们开始思考两种共识是否可以混合,从而整合两种共识的优点,避免一些缺点。所以有一个“混合共识”。在“混合共识”中,PoW PoS混合机制是最流行、最成功的共识算法之一。
2014年4月,Larry Ren在《Reddcoin 白皮书》中提出了Stake Velocity (PoSV)共识机制证明。PoW用于PoSV算法前期分发令牌,PoSV用于后期维护长期网络安全。PoSV将PoS中币龄与时间的线性函数变为指数衰减函数,即币龄增长率随时间递减,最终趋于零。因此,新币的币龄比旧币增长更快,直至达到上限,这在一定程度上缓解了持有人囤积硬币的现象。
2014年5月发布的Slimcoin提出了一种基于PoW和PoS的PoB共识机制。其中,PoW共识用于生成初始令牌供应。随着时间的推移,当区块链网络积累了足够的令牌时,系统将依靠PoB和PoS共识进行共同维护。PoB共识的特点是,矿商通过将他们的Slimcoin发送到一个特定的不可恢复地址(burning)来争夺新区块的记账权。烧币越多,挖新块的概率越高。
2014年12月提出的活动证明共识(PoA)也是基于PoW PoS,PoW挖来的一些代币通过抽奖的方式分配给所有的活动节点,节点拥有的权益与彩票数量即中奖概率成正比。
2015年提出的Casper是以太坊项目第四阶段采用的共识算法,在其路线图中称为Serenity。目前还处于设计、讨论和完善阶段。目前Casper有两个版本,分别是Vitalik Buterin领导的Casper Friendly Finality Gadget(CFFG)和Vlad Zamjir领导的友好幽灵Casper(CBC)。
卡斯帕FFG是一种混合功率PoS一致机制。旨在缓冲股权证明的过渡过程。设计的方式是在普通以太坊版本的工作量证明协议上叠加一个公平性证明协议。尽管块仍将通过工作量证明来挖掘,但每50个块将有一个权限证明检查点(PoS块),这是验证者评估网络中的确定性的地方。Casper CBC协议有一个预测性的安全预测器,它列出了未来除设置错误之外的所有可能的错误,提出了合理的估计。在给定的区间内,其正确性由其构造过程来保证。
卡斯珀FFG是一个PoW PoS共识,而卡斯珀CBC是一个明确的PoS共识。同时,PoS共识的两个主要原则是基于链的PoS和拜占庭容错PoS。CBC是基于链式的PoS设计,而CFFG是两者的结合。
Casper与其他PoS consensus的不同之处在于,Casper实现了一个过程,以便可以惩罚所有恶意因素。
验证者投入一定比例的以太币作为保证金。
然后,他们将开始验证该块。换句话说,当他们发现一个他们认为可以添加到链中的块时,他们会通过下注来验证它。
如果方块被添加到链中,那么验证者将获得与他们的赌注成比例的奖励。
但是,如果一个验证者恶意行为,试图做一些“无关紧要”的事情,他们将立即受到惩罚,他们的所有权益将被切断。
其实以太坊之所以从PoW变成PoS,是出于多方面的考虑。存在性能压力、真实的计算威胁以及来自其他公共链的挑战。但总之,目前以太坊提出的“先过渡到PoW PoS,再彻底抛弃PoW”的路径,也是一种共识机制的创新。
然而,现实情况是,这条道路实施起来相对较慢。这是因为以太坊是一个庞大的社区,改变共识机制使得社区中作为生产者的矿工利益不一致。但在有PoW机制的以太坊里,矿工是区块链的决策者,从PoW直接过渡到PoS是必然的。
总之,以太坊的升级不是技术问题,而是社会各界难以达成共识。如果直接升级做硬叉,可能会造成社群分裂,以太坊上的大部分生态也会分裂。
为什么不直接转换成PoS?Vitalik Burterin的回答简单而直接:
“从PoW机制到PoW PoS交易混合机制,变化很小,可以更快更安全,更有利于用户。因为我们必须避免机制变化带来的危险,所以我们可以进行更大的投资,直到整个系统更加安全。”
Cardano在2017年8月提出的大毒蛇共识(Ouroboros Consensus)是一个基于PoS且有严格安全保障的区块链协议。其特点是用一种新的奖励机制驱动PoS共识过程,使诚实节点的行为构成一个近似的纳什均衡,可以有效抵御分块拦截、自私挖掘等矿工策略行为导致的安全攻击。
综上所述,在一个公链项目的前期,如果使用PoS协议,会带来很多问题,在PoW协议下是可以避免的。使用PoW协议启动主网的区块链,可以实现分散一致,从而避免这些问题。当PoW公链发展了一段时间,股权分布相对分散时,可以选择“PoS”共识机制。