币圈资讯

BFT vs PoW 谁更先进?区块链共识机制通俗对比

随着PoS、DPoS和PBFT等创新型共识机制作为新的应用层面被开发出来, 人们不禁要问, PoW是否已经过时了。在目前各种创新的共识机制充斥于区块链世界的现状下, PoW是否真的已经不再适用了。它未来的方向在哪里? 我们还需要基于PoW做进一步的优化和创新工作吗。

我们认为, PoW在当前的其他共识机制中, 依然占据着基础或者核心的位置, 其存在的价值是不可被取代的。为什么会持有这样的看法呢? 接下来, 咱们来尝试着深入观察一下, 这些被大家广泛认可的观点之间, 存在着什么样的关联。

分布式共识

咱们回头去看历史, 会发现中本聪弄出来的那个PoW, 其实并不是接着学术圈里关于分布式共识那块研究干下来的, 他最开始也不清楚自己搞出来的这一套方案, 能不能对上某个学术主题的名字, 就是过了后来那阵儿, 大家才开始觉得, 中本聪的PoW, 差不多算是给拜占庭环境下的分布式共识拿出了解决办法, 然后嘛, 我们对PoW这块东西, 才有了个学术上的视角, 才能把PoW研究的那些问题, 跟学术上对分布式共识的研究, 给联系到一起。

大家谈到一个叫FLP不可能定理的东西, 就不能不承认这回事, 这个定理指的是什么, 就是在最简陋的那种叫做异步的模型里, 网络状态是好使的。但是, 它允许那个节点的失效情况出现。哪怕只是一个节点出了毛病。

在这样的情况下, 是不存在有一种确定性的共识算法。这种算法原本是想解决那个一致性问题的。

提出并证明该定理的论文《Impossibility of Distributed Consensus with One Faulty Process》是由 Fischer,Lynch 和 Patterson 三位科学家于1985年发表。

这个定理告诉我们的意思是就是, 我们目前能够做到的那种分布式共识, 肯定是在好几个地方都做了退步和让步。

事实上, 目前确实存在两个可以进行妥协的方向, 其中一个方向是对异步机制进行妥协, 另一个方向是对确定性保障进行妥协。

所谓的对于异步情况进行某种程度的退让行为, 实际上指的是去设置好一个超时时间的处理机制, 同时心里要明确地认识到消息内容是不会出现无限期延长等待时间这一现象的。

像是DLS算法, 也就是大家所知道的在部分同步存在情况下的共识方案这一块的研究成果, 以及PBFT算法, 它全称叫做实用拜占庭容错方法体系, 这两个东西都是归属于这种应对方向的技术解决方案之中的。

再往深处说, DLS那篇论文把巴兹拜庭环境里异步共识的两个核心目标给讲清楚了, 一个是安全性, 也就是大家说的保持一致性, 另一个是活跃性, 这指的是系统的可用性。这两个方案在做出同步假设的时候, 都是偏向于为了保障活跃性而去设定的, 而不是为了确保安全性才去做的同步假设。

这么一来就有个结果, 即如果现实环境根本满足不了那个同步假设的前提条件, 那么受影响的就只是可用性问题罢了, 绝对不涉及一致性出现错误的问题。正是因为基于这个原因, 我们在日常交流里才经常会提到PBFT这样一个事实, 它被称作是一个把一致性放到前面优先保证的共识算法类型。

所谓对确定性进行妥协, 指的就是中本聪所引入的那个全新的世界格局, 在这里面, 确定性的概念不再是非黑即白的绝对状态, 而是表现为一种概率层面的存在。

具体而言, 在这个既定的方向和路径上, 系统通过整合工作量证明机制、设定区块奖励规则以及搭建对等网络架构这三个关键要素, 最终共同努力构建出了一整套在概率意义上具备安全性保障的共识解决方案。

从地图布局的角度去看, 中本聪共识其实就是那些专门研究共识问题的学者们给异步拜占庭问题想出来的不少妥协办法当中的一个。可是, 既然把概率确定性的这个因素给引进来了, 它就不单单是解决了那个传统的异步拜占庭问题。它还顺便搞定了一个更大范围的问题。这具体表现在哪里呢?

就是可以允许数量多得没有边的节点用完全公开的方式参加到系统里来。而且在这种情况下, 任何一个打算参与进来的人, 都压根儿不需要去清楚系统中到底总共有多少个参与者。这么干确实是非常不赖的。恰恰就是这一点, 才是公链这类系统真正要面对的那个真实环境状况。

在具体的实践里面, 那个去妥协于确定性方面的中本聪共识办法, 拿到了一个非常大的成功成效出来。

实际上, 公链共识机制里的创新之处, 基本上也逃脱不了这两个方向中的妥协表现。在下面, 我们将对其中具有代表性的一些内容进行分别介绍。

不同共识的妥协分析

PoS

从本质上来说, Pos机制仍然属于PoW范畴, 这代表了对确定性原则做出的一种妥协。而Staking功能则可以被视为参与者需要满足的准入条件, 通过提高这一准入条件的标准, 可以有效减少参与验证节点集合的规模。

将参与者的集合缩小到一定程度之后, 会衍生出两个明显的好处: 第一点好处是, 整个区块链网络的总计算工作量会有所下降, 从而使得系统的能源消耗水平得到降低;第二点好处是, 异步通信网络的整体规模随之变小, 因通信延迟而导致系统出现分区状态的概率也相应减小了, 基于这样的网络特性优势, 技术开发者就可以设定更短的区块生成时间间隔, 以提升交易确认的速度。

这也是为什么PoS会说自己拥有更高的TPS水平, 而且更加节能。

DPoS+PBFT

这种叫做DPoS加上PBFT的技术, 它最根本的原因, 其实说白了就是PBFT, 它是为了能够妥协异步这种情形而存在的。

DPoS的目的是为了在开放的公链参与者中选取一个可以应用PBFT算法的参与者集合, 这个集合需要满足三个条件, 第一, 规模足够小, 如果规模太大了的话, 通信量就会变得巨大;第二, 集合中的总数是确定的, 只有这样才能把这个问题变成一个PBFT算法可以解决的异步共识问题;第三, 其中恶意参与者的个数也就是拜占庭节点的个数要小于1/3。

在那个地方, 那个叫做Staking的机制, 一共发挥了两个方面的作用, 一方面, 是把它当作了一个用来筛选用户的门槛, 另一方面, 又是把它当作一个激励机制, 来把那些搞坏事的节点的数量给降低下来。

Tetris

Tetris是由YeeCo首先提出的那种基于知识推理的共识算法。它在本质上属于BFT这类型, 同时也对异步的情况做了一个妥协的处理。这个Tetris本身是对标准的拜占庭问题给出的解决方案。

它的重点在于性能方面很高, 并且它也已经证明了自己的安全性是站得住脚的。参与这种BFT活动的人员集合, 是通过可插拔的上层协议选出来的。像PoW、DPoS、VRF这些方式都可以被采用来进行选择操作。

Algorand

Algorand这种技术手段在底层逻辑上其实属于那种叫做BFT的类型, 它之所以这么设计, 是因为需要在异步这个条件面前做出一些妥协和让步。Algorand 挑选那些能够运用 BFT(拜占庭容错)算法的参与者集合的方法, 显得既特殊又巧妙。

该方案运用了 VRF(即所谓的可验证随机函数)。这就好比每个参与者都自带一台摇奖机。他们完全不需要同其他参与者进行任何通信, 就可以直接知道自己是否被选中。从表面看, 这种机制非常节能。不过, 在实际操作里面, 仍有不少问题等着人们去解决。第一, 必须给参与者设置一定的门槛。

原因在于, 创建一个可以用来参与网络的私钥, 其成本其实是非常低下的。基于这个实际情况, Algorand 是按照参与者所拥有的余额来给予权重的。第二, 在摇奖环节必须设置中奖的概率。这就要求知道参与者的总数量究竟是多少。要知道这本身就是一个难以解决的共识难题。

针对这种情况, Algorand选择对在线运行的节点实施奖励措施。其目的是竭尽全力使在线余额和系统里面的总余额接近相同的状态。通过这种状态, 就能够反推出参与者的具体数量。这事实上是一个要求全网在线且诚实的拜占庭容错系统, 其余额必须大于2/3。

DAG

关于DAG也就是有向无环图这一点, 不管像IOTA那样拿交易当作图的顶点, 还是像Conflux那样把区块当作图的顶点, 它们依旧是在PoW这个基础之上运行的, 这算是一种对确定性的妥协行为。

如果说以往的那些共识机制主要目的都是在于避免分叉的出现的话, 那么当前这种DAG技术则是要致力于将分叉控制在一个特定的、合理的水平范围里去, 这么做最终能够达到提升整个系统的TPS也就是每秒交易处理量的效果。

从本质上来进行理解的话, DAG仍然属于工作量证明这一类型, 它所做的唯一改动就是把原先那个最长链原则变更成了最难图结构原则而已。

PoW是内核或基础

咱们大致对共识模型做出总结, 具体内容如下图所示:

挖矿算法PoS、DPoS、PBFT创新共识层出,PoW是不是过时了?

所谓的共识机制之间存在的不同, 实际上是说那个从“开放的网络参与者集合”通向“共识”的那条路径发生了变化。

比如, 直接从那个开放的网络参与者集合去到达共识, 这就是所谓的PoW;如果先到达开放的记账参与者集合, 然后再去到达共识, 那么这就是PoS;若是先到达封闭的记账参与者集合, 然后才去到达共识, 那就是X加上BFT的模式, 这里的X需要结合那个封闭的记账参与者集合所采用的某些工具是什么, 这种情况既可以是DPoS这种形式, 也可以是VRF这种技术。

大家可能看得出来, 那些五花八门的共识算法实际上并没有变出什么特别新鲜的玩意儿。

只要你的系统允许参与者自由进出, 也就是形成一个所谓的开放参与者集合, 那么要实现共识就非得走这么一条路不可: 也就是要让大家在一种带有概率性质的确定性的基础上, 不断地去叠加、去推进共识的形成。这套玩法说到底就是中本聪共识所采用的模式。

PoW在当前创新共识里的意义有两点, 具体如下。

如果达成共识的情况是, 从一个可以自由加入或退出的参与者集合中来形成共识, 那么这种机制从本质上来说仍然属于中本聪共识, 这也就是之前所提到的关于“PoW(工作量证明)依然是目前其他各种共识方式的内核或者是基础”之中的那个内核所指代的内容。

假如在共识机制里面, 把原本是“开放参与者集合”的状态改成了“封闭参与者集合”, 那这种情况下还是得用得到Staking这个机制, 于是我们就得去问一问, Staking这一套价值共识它到底是从哪儿来的?

其实说到底,它还是从PoW这条链子上传递过来的。这也正是前面那句话里所提到“PoW仍然是目前其他共识的内erng内核或基础”中的那个“基础”。

PoW的本质优势

支持PoW的人提出了许多关于PoW的定性优势, 例子包含自然可信以及纯粹这些方面, 至于能耗这一项话题, 存在一种看法认为它是PoW存在的劣势, 同时也存在另一种看法认为成本层面的代价才是保障安全性的基础所在。

关于我个人认为, 证明工作量机制存在的那些非常核心的优点, 下面来聊一下相关的看法和观点。

共识开放性的极致

PoW是为开放的参与者集合设计的。这种开放性会导致参与者集合出现不稳定的情况。这种不稳定的状况时时刻刻都在挑战共识的达成。这种情况不论出现在早期冷启动阶段, 还是一些其他时候。比如矿池出现了的时候。又比如ASIC矿机出现了的时候。又或者币价出现了起伏波动的时候。再或者是网络难度出现了波动变化的时候。

PoW采取了极致简单的机制来解决开放性问题, 它不需要为任何一个场景、任何一个阶段去打上任何补丁, 也不需要去做任何形式的治理, 它始终是靠其最核心的机制来驱动整个系统运转的, 而且已经经受了时间的考验。

在我们的观念里面, 有的系统是抓住了本质的, 它们很巧妙, 也显得很简单, 并且适应性是极强的。与之形成对比的是, 有的系统则是充斥着补偿机制的, 这些系统会不断地依据环境的变化来进行调整。工作量证明技术就是这样的一种优秀代表, 它属于前者的情况。

PoW属于那种没有许可限制的底层系统。在这样体系下, 任何人都能够在任意时间点将算力投入参与进来, 并且可以和之前已经存在的算力站在完全一样的起跑线上展开直接竞争。

虽然看起来把币存入Staking的行为和投入算力进行计算操作非常相似, 但是因为处在一种博弈的环境下, 只要起点的各种设定参数存在微小的差异, 最后所形成的整体局面就会完全不同。

如果咱们把区块链系统看作是一个特别容易掉进马太效应陷阱的系统, 那么PoW机制里外部实体投入的算力就是这个用来抵消这种效应的重要参数。这一点表现在两个方面。第一, 因为调节机制存在滞后性, 这就让系统进入稳定状态变得更加困难了。第二, 跟Staking比起来, 外部实体的算力更加独立。

在PoW机制里面, 共识优势对业务优势产生的正向反馈是单方向的。而在Staking体系里, 共识优势对业务优势的正向反馈却是双向互动的。

共识安全性的极致

关于共识层面经常提到的一些安全问题, 例如51%攻击或者超过三分之一的拜占庭节点故障, 其实这些情况都是在既定的共识规则框架之内发生的。但区块链系统本质上是建立在物理网络之上的一套运行体系, 所以与在共识规则里面搞破坏相比, 针对物理网络层面的攻击手段, 才是对区块链系统的一种降维打击。

存粹的PoW持有这样一个观点, 觉得一个节点拥有的权重是不应当通过那些虚拟资源来决定的, 比如说什么_Staking_之类的东西, 但是它却必须是由那些实体资源来做出决定的, 这里的体资源说白了就是指算力了。

前者很容易陷入这样一种情况, 那就是虚拟资源在不停地投入, 可是网络节点的规模增长却缺少足够的驱动力去带动它。也就是说, 这个系统的经济规模和它抵挡来自网络威胁的能力是不匹配的。同时, 系统内部也没有那种自发的机制来促使这两种力量达成匹配。

已通过安全认证 已通过安全认证
This is a popup message.
kefuIcon