回看共识层进化规律,“POS+”也许是公链后期发展的出路

转载
2095 天前
16558
星球日报

来源:星球日报     分析师:李雪婷     编辑:郝方舟


编者按:再过不到 10 小时(倒计时在此),以太坊将于 7280000 区块高度上激活君士坦丁堡/圣彼得堡网络升级。这次升级无疑是区块链世界近期最为关注的事件,它不仅牵动着数字货币市场背后的巨额利益,也是公链技术探索的又一个里程碑。带领区块链进入“2.0 时代”、并已“走过长路”的以太坊经由本次分叉,将进一步从 PoW 共识机制过渡向 PoS 共识机制。Odaily星球日报研究院希望从共识机制的角度,带大家稍微回首下历史,总结共识层的进化规律,着重比较主流的 PoW 和 POS 的变种(或称其为 PoS+),并阐述为什么我们认为 “ POS+ ”混合共识机制会是公链后期发展的一个出路。 


区块链是一种去中心化的分布式账本系统,由于点对点网络下存在较高的网络延迟,各个节点所观察到的交易事务先后顺序不可能完全一致。因此,区块链系统需要设计一种机制对在一定的时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。共识机制在去中心化的思想上解决了节点间互相信任的难题,使得区块链在信息传输的过程同时可以完成价值转移。

但是,在一个去中心化的系统里,要达成一致性算法并非易事。中本聪提出了基于 PoW ( Proof of Work,工作量证明 ) 的共识机制,可以说是迄今为止最安全可靠的公有链共识算法。后来,又陆续出现了 PoS( Proof of Stake,权益证明 )机制,以及 PoS 机制的一些变种,如 DPoS(Delegated Proof of Stake,委托权益证明 )机制等。这些共识机制各有优势,但也都被证实有其不足之处。

也因如此,在区块链领域,人们从未停止过对更优共识机制的探索和创新,如下图所示。


PoW 问题凸显

PoW(工作量证明),是一种按劳分配模式,即矿工凭借工作量的大小,来争取记账的权利,工作量越大对应矿工的算力越大,矿工获得记账权的概率越大。

PoW 共识在比特币中的应用具有重要意义,也是最早和迄今为止最安全可靠的公有链共识算法。然而,PoW 共识存在明显缺陷:

  • 资源浪费

  • PoW 共识过程高度依赖区块链网络节点贡献的算力,这些算力主要用于解决 SHA256 哈希和随机数搜索,实际上并不产生任何有效际的社会价值。随着加密数字货币的日益普及和专业挖矿设备的出现,加密数字货币生态圈已经在资本和设备方面呈现出明显的“军备竞赛”态势,逐渐成为高能耗的资本密集型行业,进一步凸显了资源消耗问题。根据 Digiconomist 的数据显示,如果把比特币加以太坊看做一个国家,其挖矿消耗的总电量已经超过阿尔及利亚、以色列和希腊等国家,在全球排名第 45 位。



    单看以太坊,其挖矿消耗的总电量超过马其顿、洪都拉斯和安哥拉等国家,每年耗电约 8.63 万亿瓦时,占全世界用电量的 0.04% 。

  • 算力集中

  • 中本聪设计 PoW 共识机制的前提是算力和计算节点的均匀分布。但随着比特币数量减少,对算力的要求则越高,人们开始通过联合挖矿加速比特币的获取,从而催生了矿池挖抗的新玩法。矿池的出现,一定程度上破坏了比特币等加密数字货币体系的平衡,马太效应逐渐显现。

    根据 btc.com 数据显示(统计时间:2019.2.19),过去一年矿池算力份额排名前五位的 BTC.com、AntPool、SlushPool、ViaBTC 和 BTC.TOP,占据比特币总算力份额的数据是 64.6% 。理论上来看,这五大矿池联手,确实具备了发起 51% 算力攻击的能力。虽然实际上,这些矿池为掌握全网 51% 算力所需的成本投入远超成功实施攻击后的收益,但 51% 攻击的安全性威胁始终存在,引发人们对算力集中的担忧(后文详述)。


  • 缺少“最终一致性”

  • PoW 支持分区容忍性(可以分叉),即放宽对最终一致性确认的需求(可以回滚),约定好大家都选择已知最长的链进行确认。在这种情况下,系统的最终确认只是概率意义上的存在。

  • 业务处理性能低下

  • PoW 共识算法虽然投入了大量的能源支持系统的运行,但这些能源消耗绝大部份是用于工作量证明中的哈希运算,区块链网络处理交易业务的性能则非常低,比如比特币每秒只能进行大约 1 * 1024 * 1024 / 250 / (10 * 60 ) = 6.99 笔交易。


    PoS 的提出和点点币的实践

    PoW 问题的逐渐凸显,引发人们对这种机制的质疑和思考。PoS 开始登场。

    PoS 共识机制的提出最早源于人们对挖矿中“公地悲剧”问题的辩论。“公地悲剧”由 1968 年英国加勒特·哈丁教授 ( Garrett Hardin ) 在《The tragedy of the commons》一文中提出。他指出公地作为一项资源,有很多使用者,每个使用者都知道资源将过度使用而枯竭,但并没有权利阻止其他人使用,结果是每个人都倾向于过度使用从而加剧事态的恶化。

    2010 年 11 月,挖矿公地悲剧 ( Disturbingly low future difficulty equilibrium ) 由 Vandroiy 指出并引发广泛讨论。讨论的重点是比特币系统需要消耗大量算力来维持系统的安全性和稳定性,但随着比特币不断被挖出,区块获得的奖励减少,越来越多的节点会退出系统,攻击成本随之降低,比特币网络系统则会出现“公地悲剧”。

    2011 年 7 月,数字货币爱好者 Quantum Mechanic 在比特币论坛首次提出 PoS 权益证明共识机制的概念( Proof of stake instead of proof of work) 。权益证明共识机制概念一经出现便得到很多人的青睐。人们意识到权益证明可能就是挖矿“公地悲剧”的解决方案。

    与 PoW 物理挖矿不同,PoS 共识是将让整个挖矿过程虚拟化,并以验证者取代矿工。

    其运行过程如下:

  • 验证者必须锁定一些他们拥有的token作为保证金。

  • 在此之后,他们将开始验证区块。同时,当他们发现一个他们认为可以被加到链上的区块时,他们会通过下赌注来验证它。

  • 如果该区块成功上链,验证者就将得到一个与他们的赌注成比例的奖励。 


  • 2012 年 8 月,Sunny King 发布点点币(Peercoin,PPC), PoS 首次得到实践。PoS 由系统中具有最高权益而非最高算力的节点获得记账权,其中权益体现为节点对特定数量货币的所有权,称为币龄或币天数 (Coin days)。点点币将 PoW 和 PoS 两种共识算法结合起来,初期采用 PoW 挖矿方式将 Token 分配给矿工,后期随着挖矿难度增加,系统主要由 PoS 共识算法维护。不过,在 PoS 的后期阶段,投资者能够通过手中的资本囤积并垄断点点币,使得点点币的流通性降低。

    举例说明:每个币每天产生1币龄,比如你持有 100 个币,总共持有了 30 天,那么,此时你的币龄就为3000。当一个新的区块产生时,其他想获得记账权的节点也需要计算哈希值,得出满足条件哈希值的难易与难度值有关,这个难度值这里与币龄成反比,即你的币龄越大,得出符合条件的哈希值的概率就越大,同时你的币龄被清空,记账后系统会给予你相应“利息”,你每被清空 365 币龄,获得利息为:3000 * 利率 / 365,点点币的利率为1%,即0.08个币。

    再之后,PoS 衍生出更多变种,每个变种往往会涉及区块链代币经济模型的改动。比如,ReddCoin、Slimcoin 等都推动了 PoS 的发展,处于 PoS 研究前沿的还有以太坊(Casper)、Cardano(Ouroboros)、Fractal 等,下文将会具体阐述。


    PoS 并非完美的替代方案

    客观来讲,PoS 机制的诞生确实解决了 PoW 的部分弊端:

    1. 以 PoS 机制开发新区块在一定程度上避免了资源浪费,同时系统区块的自动产出缓解了由于数字资源有限性而产生的通货紧缩。

    2. PoW 机制下,矿池通过规模经济效应来提高产量,降低长期平均成本。而 PoS 共识机制弱化了中心矿池规模经济的需求,算力集中垄断的情形也得到了缓解,个体竞争力差别相对减小。


    3. 就 51% 攻击而言,PoS 共识机制发起一小时攻击的成本远大于比 PoW 共识机制。


    以比特币为例,目前比特币的流通供给量是 17,551,500 BTC,若该共识算法是 PoS,那对其进行 51% 攻击需要持有 8,775,750 BTC,折合市值 34,906,510,958 美元,而在 PoW 情况下通过租用算力仅需 242,051 美元左右。其他数字货币针对 PoS 51% 攻击所需成本与针对PoW 进行 1 小时的 51% 攻击花费的对比如上表 1 所示。

    那么 PoS 共识机制是完美的吗?答案是 No。

    第一,PoS 本身实现起来比较困难。

    1)Token 发行的问题。一开始的时候,只有创始区块上有 Token,只有将 Token 开采权分散才能让网络壮大。但在目前多国禁止 ICO 的环境下,合规又均衡地分散 Token 成为了一个难题。

    2)确定记账节点数量困难。大部分 PoS 依赖于 PBFT 算法,但是 PBFT 需要确定节点数量,才能选举出区块生产者。而在 PoS 机制下,节点可以随时参与或者退出挖矿,这样无需门槛的后果是选举的总数目无法确定,1/2 或者 2/3 的通过率更是无法测算。不仅如此,记账节点的不确定还会增大网络分区的概率,从而导致分叉。

    此外,一个 PoS 系统需要一个高度安全的网络来抵抗各种类型的黑客攻击,目前并没有一个公链被证明有这样的实力,即使是以太坊也经常发生黑客攻击事件。

    第二,被动演化为非预期的中心化的结果。

    对于一个采用 PoW 共识机制的公有链(反 ASIC 矿机的挖矿算法)来说,它的出块和安全性主要依赖于算力的分散。任何人只要拥有显卡和网络就可以成为矿工,这样降低了用户使用门槛,促进更多人参与挖矿,实现早期算力的分散。只要超过 51% 的算力来自于诚实的矿工,区块链的交易就是相对安全不可逆的。

    然而,对于一个采用 PoS 共识机制的公有链,主网上线伊始,创世块中分配的 Token 绝大多数属于数量有限的项目方和私募投资人。区块链的出块权只能由这些玩家决定。如果这些人合谋对区块链进行攻击,则完全可以成功的实现双花攻击 ( Double spending attack )。尽管开发者和投资人的利益完全体现在 Token 的价值中,出于利益考虑不会参与恶意行动,但 PoS 公链也无可避免的在主网上线后就被这些人垄断和支配。更糟的是,如果出块可以获得大量奖励和交易费用,这些垄断者就会将大量股权牢牢控制在自己的手里,使得 PoS公链成为一个本质上由巨头控制的网络。

    第三,Nothing at Stake 问题。

    在 PoW 机制中,当区块链出现分叉时,矿工必须选择一个方向进行挖矿。而在 PoS 机制下,PoS 矿工往往会两个方向都挖,以争取实现利益最大化。因为分叉并不会消耗任何资源。矿工可以在最长链上挖矿的同时,创造一个只在自己的区块上挖矿的分支。除此之外,其他验证者也乐于接受分叉,他可以同时在两条链上“挖矿”,因为在上面“挖矿”没有任何损失,反而如果不在上面“挖矿”,万一这条链被接收了,就会遭受损失,于是,即便是诚实验证者,他也会倾向于在所有链上同时“挖矿”。尽管他们知道这种尝试会造成整个 Token 的价值降低,但是他们的钱很少,他们并不在乎,这就是所谓的平凡人悲剧(Tragedy of the Commons)。


    我们可以这样理解这个名词:主席台上有十个候选人,下面很多人给这十个候选人投票。如果你投票的话,你可能会对这个主席台上十个人都分别投一票,也就一个人投十票给每个人投上一票。这样,无论台上哪个候选人成为最终的获胜者,你都会得到好处。


    PoW+PoS 混合机制更接近理想

    几乎所有的共识机制都有其独特的优势,但也有其弊端,没有一种共识机制可以完美解决区块链“不可能三角”问题。因此,人们开始思考是否可以将两种共识混合,从而做到融合两种共识的优势,又能规避某些弊端呢?于是就有了“混合共识”。在“混合共识”中,PoW+PoS 混合机制是其中最热门也应用得较为成功的一种共识算法。

    2014 年 4 月,拉里·雷恩 ( Larry Ren ) 在《 Reddcoin 白皮书 》中提出了权益 - 速度证明(Proof of Stake Velocity,PoSV)共识机制。PoSV 算法前期使用 PoW 实现代币分配,后期使用 PoSV 维护网络长期安全。PoSV 将 PoS 中币龄和时间的线性函数修改为指数式衰减函数,即币龄的增长率随时间减少最后趋于零。因此新币的币龄比老币增长地更快,直到达到上限阈值,这在一定程度上缓和了持币者的屯币现象。

    2014 年 5 月发行的 Slimcoin 基于 PoW 和 PoS 提出了燃烧证明 ( Proof of Burn,PoB ) 共识机制。其中,PoW 共识被用来产生初始的代币供应,随着时间增长,区块链网络累积了足够的代币时,系统将依赖 PoB 和 PoS 共识来共同维护。PoB 共识的特色是矿工通过将其持有的 Slimcoin 发送至特定的无法找回的地址 (燃烧) 来竞争新区块的记账权,燃烧的币越多则挖到新区块的概率越高。

    2014 年 12 月提出的行动证明 ( Proof of Activity,PoA ) 共识也是基于 PoW + PoS,其中采用 PoW 挖出的部分代币以抽奖的方式分发给所有活跃节点,而节点拥有的权益与抽奖券的数量即抽中概率成正比。

    2015 年提出的 Casper 是以太坊计划在其路线图中称为宁静 ( Serenity ) 的第四阶段采用的共识算法,尚在设计、讨论和完善阶段。目前 Casper 总共有两个版本,即由 Vitalik Buterin 带领实现的 Casper Friendly Finality Gadget ( CFFG )和 Vlad Zamjir 领导的 Casper the Friendly Ghost ( CBC )。

    Casper FFG 是一个混合 PoW+PoS 共识机制。它是被设计来缓冲权益证明的转变过程的。设计的方式是,一个权益证明协议被叠加在正常的以太坊版工作量证明协议上。虽然区块仍将通过工作量证明来挖出,每 50 个区块就将有一个权益证明检查点( PoS 块),也就是网络中验证者评估确定性(Finality)的地方。Casper CBC 协议中有一个预估安全预言机,在设定提出一个合理估计的错误的例外情况下,列出所有在未来可能发生的错误,在给定区间内,其正确性是由其建构过程来保证。

    Casper FFG 是 PoW +PoS 共识,而 Casper CBC 则是明确的 PoS 共识。同时,PoS 共识的两个主要原理分别是基于链的 PoS 和基于拜占庭容错的 PoS。CBC 是基于链的 PoS 设计,而 CFFG 则是两者的结合。

    Casper 与其他 PoS 共识的不同之处在于: Casper 实施了一个进程,使得它可以惩罚所有的恶意因素。

  • 验证者押下一定比例的他们拥有的以太币作为保证金。       

  • 然后,他们将开始验证区块。也就是说,当他们发现一个可以他们认为可以被加到链上的区块的时候,他们将以通过押下赌注来验证它。       

  • 如果该区块被加到链上,然后验证者们将得到一个跟他们的赌注成比例的奖励。

  • 但是,如果一个验证者采用一种恶意的方式行动、试图做“无利害关系”的事,他们将立即遭到惩罚,他们所有的权益都会被砍掉。

  • 事实上,以太坊之所以从 PoW 转变为 PoS,是出于多方面的考虑。有迫于性能的压力,有真实存在的算力威胁,也有其他公有链竞争的挑战。但总而言之,目前以太坊提出“先过渡到 PoW+PoS,再彻底抛弃 PoW”的路径也是一种共识机制的创新。

    不过现实是,这个路径实施相对缓慢。这是因为以太坊是一个庞大的社区,更改共识机制使得社区中充当生产者的矿工部分利益并不一致,然而 PoW 机制的以太坊中,矿工才是区块链的决策者,从 PoW 直接过渡到 PoS 必然艰难。

    总之,以太坊的升级并不是技术问题,而是社区难以达成共识,如果直接升级做硬分叉,则可能造成社区的分裂,大部分以太坊上的生态也会分裂。

    为什么不直接转换成 PoS? Vitalik Burterin 的回答简明直接:

    “从 PoW 机制转变到 PoW+PoS 交易混合机制,这样做的转变很小,能够更快捷,更安全,相比较而言对用户更有利。因为我们要避免机制转变带来的危险性,等到整个系统更安全以后,才能进行更大的投入。”

    2017 年 8 月 Cardano 提出的 Ouroboros 共识是基于 PoS 且具有严格安全性保障的区块链协议,其特点是运用一种新的奖励机制来驱动 PoS 共识过程,使诚实节点的行为构成一个近似纳什均衡,用来有效地抵御区块截留和自私挖矿等由于矿工的策略性行为而导致的安全攻击。


    综上所述,在一个公链项目的早期阶段,如果使用 PoS 协议会则会带来很多问题,而这些问题在 PoW 协议下是可以避免。去使用 PoW 协议启动主网的区块链则可以实现分散的共识,从而避免这些问题。当 PoW 公链经过一段时间的发展,股权分布相对分散以后,可以选择“ PoS+ ”共识机制。


    参考文献