图片[1] - 一文让小白读懂的POW和POS概念详解(内含波卡)

POW(Proof-of-work,工作量证明)

工作量证明最早是一个经济学名词,指系统为达到某一目标而设置的度量方法。简单理解就是一份证明,用来确认你做过一定量的工作。早在比特币出现之前就已经有人探索。

哈希运算是一种最常见的工作量证明机制,即通过计算碰撞出符合条件的哈希值来确定系统做过一定的工作量,此外,你也可以利用卷积求导、大质数分解这些复杂的运算来达到工作量证明的目的。

挖矿即找到合适的哈希值,消耗的计算、内存、电力等能源即为工作量。挖矿本质是一个数学计算过程,有一个“难度值”变量在不断变化,以维持BTC网络10分钟出一个块。难度值可调整。

上面这段话可以解释为什么过去有那么多山寨币,因为只需要稍微改一下POW参数就可诞生一种新的出块时间的山寨币,但其本质和BTC并无任何区别(没有任何智能合约应用,没有任何实际拥有),然后大肆宣传欺骗小白。

ETH上的智能合约,也可通过仅修改一些参数值来发行新币,但没给出实际的应用。先发币再说项目,这就是为什么2017 ICO项目,在市场热度下如雨后春笋,但最后落得一地鸡毛。

POS (Proof of Stake)股权证明机制

纯粹的POS已经在市场上被淘汰,不多说。目前留存的都是POS的变种。比较有名的是EOS的DPoS (Delegated Proof of Stake) 授权股权证明机制和Polkadot的NPOS (Nominated Proof of Stake) 提名股权证明机制。都是持币者把自己的币质押给节点,节点负责出块维护网络,如果你投的节点有块被纳入了最终的链上,你就能获得符合投票比例的分红,这个分红相当于比特币网络里的出块奖励。

这和做生意投资很像,有人融资做事,你投,赚了一起按比例分,亏了按比例亏(如果不出块,或者验证了错误的块,网络会没收这个节点的币),也就是在POS里面,正确很重要,认真干活,正确做事才能拿到网络奖励。

两相比较,POW像古时的比武,谁算力大谁就更容易碰出随机值赢得比赛获得奖励。POS则是文明人的游戏规则,大家合作共赢,共享盛宴,不管投给节点的票多还是少,只要是能为网络持续工作的节点,都会获得网络的奖励。

总结:POW机制是干的越多,得到越多;POS机制是持有越多,获得越多。

补充:EOS的DPOS只选取21个大节点,获得多少的网络奖励是由质押币数量多少决定。Polkadot的NPOS有1000个节点,节点胜出是根据质押币数量和币地址分散度共同决定,且只要是有效节点,无论质押币的总数是多少,都会给每个节点发放同等数量的DOT作为奖励。

这说明DPOS容易造成大户联合合作,使网络中心化、内卷化竞争,NPOS则更加去中心化,因为要满足足够多的代币持有者足够地分散,这是一个进步,是一个行业发展合理但又惊喜的进步。

当然无论POW还是POS,其中最重要的因素还是代币的经济价值,经济价值越高需要攻击网络的成本就越高。这个不在这讨论。

POW vs POS

1、公平性

POW公平的把记账权分派给节点,但容易形成算力集中化,财团抱团,个体难参与。POS有很多变种,但波卡的NPOS保证了节点被随机性分散化组合,比POW更加公平。

2、网络性能

比特币和以太坊的拥堵已经有目共睹,但是在区块链逐渐崛起的时代,如果往后需要更多的区块链,怎么保证吞吐量和安全?

(1)吞吐量:

POS系统可容纳的吞吐量比POW链高。

因为POS共识协议并不以浪费一些现实能耗为基础,区块时间和协议就可以更快的发生,这一点的逻辑是:POW面临的挑战的解决方案是不必在确定一个块之前就找到,因此创建一个块的开销可以减少到只需要创建和分发块的成本。

(2)安全性:

POW的安全性靠算力,POS的安全性主要靠代币分散化持有且绑定。

POS系统的安全通过绑定的资产保护,而不是类似POW需要花费很多消耗(花费流动性机会成本以及消耗电力)。POS的工作方式是选择一组具有已知经济身份的验证者,锁定代币,以换取获得“验证”或参与共识过程的权利。如果他们发现执行了错误的程序,就会被惩罚:部分或者全部的锁定代币会被销毁。这对不良行为提供了很好的抑制作用。POW没有类似的奖惩机制,仅仅是损失算力(电力)成本而已。

破坏POW系统需要掌握51%以上算力,目前,排名前三的矿池算力加在一起已经超过51%,但攻击从未发生过。因为只要发生一次51%的攻击,比特币网络的金字招牌“可信度”就荡然无存,币价跳水,这对靠挖矿获得币而从而获得收益的矿工及其不划算,何必自己砸自己。也就是说攻击的代价会极大可能的高于诚实挖矿,所以都选择不攻击,这是个博弈的问题。(实际高于30%就可以发起攻击,但是高于51%就是铁定会攻击成功)。

传统POS链的共识需要2/3以上的验证者组同意所有发生在layer1上的事务:所有作为链状态机一部分的逻辑都要被认可。即,每个人都需要验证网络所有的信息。然而,验证者可能基于收到异步网络不同的信息,对系统有不同的看法。这让对链最新状态达成一致变得困难。

意思是说,POS的吞吐量更高,更加节能,创建一个区块消耗的时间成本和网络资源成本更低。但是POS需要全网2/3的验证者达成共识才能确定网络的最新状态,验证者们可能收到异步网络的不同信息,对系统的最新状态看法不一致,这就会导致网络的最新状态不容易确认。

这也是波卡极致分片架构设计的考虑点之一:不需要每个节点参与者验证每一笔交易,只需要每个节点参与检查一部分交易即可。每个节点参与者检查交易的某些子集,就使得拜占庭中有了足够的冗余,任意恶意的参与者就无法潜入无效的交易中,至少在没有被发现并受到削减的情况下,这些交易不能被还原,即在那些交易被恢复的情况一定会被发现受到惩罚。

另外,很多人喜欢拿以太坊和波卡做对比,从技术上来说,波卡是更新的一代,自然更高级。但客观的看待以太坊,它在最初创立的时候就想用POS共识,但当时POS共识还不如现在成熟,且POW的可靠性高,所以选择了后者,后者正是由于其对出块的时间的限制,网络转账更可靠,更能减少恶意交易,这和利用POW算法来杜绝垃圾邮件是一个道理。

与此同时,需要注意的是,POW是概率性共识,可能网络中的两个节点同时碰撞出同一个正确的哈希值,这个时候就会出现我们说的硬分岔(概率性终态确定)。

POS的共识,是确定了参与验证的节点集合,这些节点采用的是类PBFT共识,类似于有序轮换者出块。变种的波卡的NPOS是需要首先超过一半的签名才算有效,签名者不可以重复,这保证了每一轮只可能有一个节点获得出块权,是一种确定性的共识 。

由此可见,一般POS的安全性是低于POW的,因为验证人集合已知,而且数量不多,不像POW需要足够算力才能攻击,POS中联合验证人中一定比例的节点作恶就能攻击。那么如何提高POS的安全性呢?

(1)惩罚机制:即消减(slash)或者没收(chill);

(2)与多种算法协作,取长补短:好比波卡的分片和POS结合在一起相互协调,利用架构的交互性,集中资金保护所有链:允许一条平行链的Host可以为很多平行链提供完全的安全保证,而不是部分资金保护部分链,形成资金低效和浪费的状态;甚至不需要所有参与者检查所有的状态转换。同时又结合了随机选举验证者节点组和GRANDP&BABE来保证网络整体运行安全。

综上,在网络性能方面,POS的吞吐量更高,安全性能需要多种算法协作

3、资源利用

POS算法几乎没有资源消耗,唯一消耗的是网络带宽资源。POW挖矿经历了CPU/GPU/ASIC芯片一系列的迭代,这些都是为了更加高效地挖出币,过程中消耗大量电力、算力、以及硬件资源,可以说是资源浪费。但换个角度,POW挖矿形成了一套完整的产业链:水电站、网络、矿机制造等等,只是网络找到合适的哈希值实际上并没有其他的作用,仅仅是挖到了币。

4、去中心化

在波卡的NPOS出现之前,无论是POW还是POS,都会逐渐演化出权利集中的问题。传统POS存在大户互相投票,互相推举为大节点的现象,让老百姓参与的机会少;且由于没有民主公投这样的明确网络问题解决机制,就形成了和POW矿池挖矿类似的价值回路必须要通过外部输入,其安全性不直接与使用者相关,而是要通过大节点或者矿工这类媒介来完成(不过笔者以为挖矿集中化和专业是很正常的事情,天下熙熙皆为利来,天下攘攘皆为利往。只是集中化带来的结果违背了区块链网络初衷)。

综上所述:

POW是靠谁的算力大取胜获得网络奖励,但并不是算力大就一定能获得,且会造成资源浪费;POW虽然网络慢,但是可靠性更高。

POS是靠质押绑定来获得奖励,质押的多获得的多,没有额外的消耗。网络安全性相对更弱,但可通过与其它算法协同合作来提高安全性。