建议和反馈

请填写你的反馈内容

从POW到POS看区块链共识的发展

2020-01-14 ·512次阅读 ·读完需要14分钟

共识机制是区块链的灵魂。就像一个国家的法律,维系着区块链世界的正常运作。区块链最早的共识是工作量证明(POW),比特币和以太坊都是采用的工作量证明。现在流行的一个趋势是权益证明(POS)。以太坊2.0就会采用 POS 共识,还有最新的公链如 Tezos,Polkadot,Algorand 等等。权益证明还包括委托权益证明(DPOS),代表公链有EOS。大多其他公链采用的共识都是从 POW 或者 POS 中衍生出来。我们暂时把联盟链共识不放到讨论范畴中,从 POW 到 POS,来研究一下区块链共识的发展。

工作量证明

区块链共识的目的是决定出块权。工作量证明的基本思想就是用算力来决定出块权。如果你能第一个解出 POW 的计算难题,你就可以出块。在每一个时间点,大家都在算题,然后在差不多的时间里,大家把题算出来,再把计算结果发布出去。这其实就是一个投票的过程。发布的块就是投的票。最后被选中的票,就是来自于那个最快算出结果的矿机。至于没有发布块的节点,相当于弃权了。工作量证明的一个最大优点,就是所投的票和投票权是绑定的。而且一旦投票成功以后,即使是投票者本人也修改不了投票的内容。因为一般在出块前,节点就已经打包好一个块,然后才对这个块做工作量证明,做完后马上投出去。这个时候打包的块已经没有办法修改了。

矿机跑一天可以投出很多票,但是不可以把所有的算力集中到一个块上;另一方面,如果想要回滚掉自己出的块,也必须付出和回滚别人的块时所需的同等的算力。这是不可能的,所以 POW 共识是非常安全的。

基于POW机制去做共识算法的最主要缺点就是延迟比较高,因为我们把交易打包到区块以后,还要完成一个工作量证明,这个区块才能称为候选区块。工作量证明的时间还不能设得特别短,否则容易分叉。于是,至少从打包好区块到做完区块的工作量证明这一段时间内,交易是能被确认的。

工作量证明的时间为什么不能设置太短?因为在网络条件一定的情况下,广播速度是有限制的。如果出块速度设置得比广播速度快,使得节点在收到别人新出的块之前,自己就挖到了,这样就会出现分叉。如果这个差距比较大的话,分叉就会特别多。分叉多会降低安全性。我们说对比特币的攻击需要51%的算力。这个前提是大家都集中在同一条链上。好人有49%,坏人要有51%就能攻击。但如果真的出现频繁分叉的情况,比如说我在分叉A上有30%的算力,在分叉B上有40%的算力。这个时候坏人想把分叉B给回滚改到分叉A,只需要11%算力就可以。只要比全世界的诚实的算力最多的两个分叉之间的差稍微多一点,攻击者就可以让最长链在这两个上面分支上跳来跳去。大大降低安全性。

POW 机制另一个被人诟病的点就是能耗特别高,不环保。因为哈希运算耗电。所以,要想让区块链支持大规模的商用,POW 需要改变。所以,就有了 POS。

权益证明

权益证明基本的思想是:把持有的币做质押,来获取记账权和投票权。投票权和持币的数量是成正比的,一币一票。钱越多,投票的权力就越大。

跟 POW 不知道有多少矿机参与挖矿不同,POS 协议必须知道所有共识参与者的数量和它们的持币量,然后去分配打包权和投票权。另外在 POW 里面,打包权和投票权是一起的,但是在 POS 里,这两者是可以分开的。分配完打包权以后,拿到打包权的人就有资格出一个候选区块。这个区块里面包含要处理的交易,并且有他自己的签名。候选区块并不意味着就会被马上加入共识,在广播候选区块以后还需要由那些有投票权的人去投票。如果能得到多数票的支持,候选区块就会最终被加入共识,变成一个有效的区块。当然投票的过程我们可以用很多方式执行,比较常见的就是用少数服从多数的共识算法。因为现在我们知道一共有多少人有资格投票、一共有多少票,所以用这个共识算法我们很容易算出来多数,比如超过1/2或者2/3。

在去中心化机制中,我们需要选举谁负责打包,谁负责投票。有时候为了效率,大家会先选出一个比较小的委员会,然后由他们负责投票。这样的委员会通常是随机选取的,而且为了公平性还要经常轮换。或者还可以用代理权益证明的 DPOS 机制,选取相对固定的委员会负责打包和投票。这样虽然损失一些去中心化程度,但是可以大大提高效率。

在 POS 系统中,如果检测到有参与者违反了 POS 共识的协议,比如一票多投,或者放弃投票,就可以对他们做出一些惩罚。凡是对系统的安全性造成影响的行为都应该收到惩罚。

权益证明的优缺点

相对 POW,权益证明有哪些优点呢。

第一个优点:矿工和持币者的动机是一致的。POS 的矿工都必须持币,在整个的生态环境里减少了一个不持币单靠机器来挖矿的角色。在 POW 的社区中,持币者、开发者、以及矿工三方的利益不是完全一致的,经常会有冲突。到了POS 中,至少矿工和有钱人的利益更为一致了。在一定程度上冲突和分歧就减少了。

第二个优点:POS 的延迟可以做得非常低,确认可以非常快。在 POS 系统里,拿到一个交易就可以马上打包,打包以后就可以广播,这个时间是不需要等待的,不像 POW,必须等至少做一次哈希运算的时间。实际上,POS 共识的延迟主要是受限于网络和参与投票的人数。网络越慢,投票的人越多,等待的时间也就越久。

第三个优点:POS 比较环保,因为它不需要用算力做工作量证明。投票实际上就是做个签名,最多再做一些简单的运算,比求解 POW 难题容易多了。所以 POS 节点硬件成本很小,也不耗电。

但是,POS 也有自己的问题。

第一个就是通讯复杂度跟投票的人数相关,而且通常是平方的关系。参与投票的人数越多,通讯越复杂,达成共识需要的时间就越久。不过,现在通过RBFT,BLS签名等技术,可以大大减少投票数量。这个问题基本上算是得到了很好的解决。

还有一个比较本质的问题,就是投票权的决定时间是早于生成候选区块的。POW 是先打包,再投票,最后决定出块权。投出的票就不能改了。在 POS 里,决定投票权和行使投票权是分离的,没有绑定在一起。有区块以前,我们就知道谁有投票权了。所以拿到投票权以后,我可以随便地去投,这就意味着我可以选择的策略空间更大,整个博弈会变得更复杂。通常来说,策略空间大对于安全性是不好的,因为给攻击者留出了更大的操作空间。攻击者如果操作空间大,能干的事儿就很多,想保证安全性也会变得更难。越复杂的系统的安全性越难保证,一方面是分析证明起来会更困难,另一方面是攻击者也更容易在复杂的系统里找到漏洞。所以在 POS 系统里面,有很多种攻击方式,比如无利害攻击、长程攻击等。

几种权益证明

再来简单介绍几个有名的POS共识,主要了解他们的基本原理和各自的差异。

Tendermint

这是跨链平台 Cosmos 采用的共识。可以做为了解 POS 的入门共识。Tendermint 每次由不固定的节点发布新块,然后通过 PBFT 的方式让其他所有节点对区块进行投票验证。超过2/3的赞同票就通过,而且是对区块的终极确认,不像 POW 还要等好几个块。但缺点就是,如果投票通不过,就要一直等着。


评论(0)问答(0)
请先登录或注册

请先登陆或注册

相关推荐

区块链合同存证数据上链,联盟链智能合约系统开发搭建

区块链合同存证数据上链,联盟链智能合约系统开发搭建区块链存证应用系统,区块链智能合约应用开发,企业合同上链存储联盟用应用开发,企业数据上链,企业联盟链搭建,智能合约撰写相关服务找源中瑞科技!您的企业还......
wx13823151761 · 2020-01-15
425阅读 · 0赞赏 · 0问答

工作量证明(PoW)综合指南

工作量证明是包括比特币在内的加密货币用来验证其网络中发生的交易的共识协议。这些网络通常建立在区块链技术之上。  区块链是一个在网络中发生的交易的分散的,值得信赖的台账。交易由独立拥有的计算机......
论坛咸鸟 · 2020-01-15
456阅读 · 0赞赏 · 0问答

区块链共识算法是什么意思

区块链是一种激励性的分布式账本,它使用了多种技术,包括分散式通信协议(低语),存储协议(独立节点)和共识机制。在本指南中,我们将说明不同的区块链共识算法如何工作,它们的收益和风险以及使用每种替代共识机......
区块链网 · 2020-01-15
481阅读 · 0赞赏 · 0问答

PoA网络是什么意思

PoA网络是一个开放源代码项目,旨在作为以太坊的公共侧链,但是,这不仅仅是侧链实现。PoA网络被设计为自己的公共区块链。这意味着它具有自己的共识算法。流行的共识算法是比特币中使用的工作量证明(PoW)......
BTC · 2020-01-14
560阅读 · 0赞赏 · 0问答

工程师眼中的区块链技术

本文是【李先生带你玩CITA】系列技术文章开篇。作者 leeyr 来自于杭州溪塔科技的一名底层区块链工程师,他从自身角度出发分享了对区块链的理解,希望能与大家一起讨论。关注公众号:溪塔科技,回复“交流......
溪塔科技 · 2020-01-09
500阅读 · 0赞赏 · 0问答

1551

LK币

18

粉丝

72

笔记

感谢"区块链网"

这篇精彩的笔记,目前已经帮助

  • 0
  • 0
  • 5
  • 1
  • 2
喜欢0
链客社群 加入

微博进入

商务合作>

广告投放>

公司名称:北京链客行科技有限公司

联系方式:010-67707199

ICP备案号:京ICP备18032136号

Copyright:链客区块链技术问答社区 版权所有

感谢您的提问,问题被社区永久收入以便新人查看。一定要记得采纳最佳答案哦!加油!

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!