首页 > 代码库 > 区块链上的共识机制

区块链上的共识机制

前言

区块链上的共识机制有多种,没有一种共识机制是完美无缺的,同时也意味着没有一种共识机制是适合所有应用场景的。

PoW:Proof of Work,工作量证明

依赖机器进行数学运算来获取记账权,资源消耗相比其他共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错1。

优缺点2:

  • 优点:完全去中心化,节点自由进出;
  • 缺点:目前bitcoin已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全;挖矿造成大量的资源浪费;共识达成的周期较长。

使用PoW的项目:

  • 比特币
  • 以太坊前三个阶段:即Frontier(前沿)、Homestead(家园)、Metropolis(大都会)。第四个阶段,即Serenity(宁静),将采用PoS机制。

PoS:Proof of Stake,权益证明

Proof of Stake由Quantum Mechanic 2011年在bitcointalk首先提出,后经Peercoin和NXT以不同思路实现3。

主要思想是节点记账权的获得难度与节点持有的权益成反比,相对于PoW,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。该共识机制容错性和PoW相同4。它是Pow的一种升级共识机制,根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度5。

优缺点678:

  • 优点:在一定程度上缩短了共识达成的时间;不再需要大量消耗能源挖矿。
  • 缺点:还是需要挖矿,本质上没有解决商业应用的痛点;所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。例如,以太坊的DAO攻击事件造成以太坊硬分叉,而ETC由此事件出现,事实上证明了此次硬分叉的失败。

Proof of Stake - 股权证明 系列1中对PoS有以下描述:

在POW中,一个用户可能拿1000美元来买计算机,加入网络来挖矿产生新区块,从而得到奖励。而在POS中,用户可以拿1000美元购买等价值的代币,把这些代币当作押金放入POS机制中,这样用户就有机会产生新块而得到奖励。

总体上说,POS算法如下所示。存在一个持币人的集合,他们把手中的代币放入POS机制中,这样他们就变成验证者。假设在区块链最前面一个区块(区块链中最新的块),这时POS算法在这些验证者中随机选取一个(选择验证者的权重依据他们投入的代币多少,比如一个投入押金为10000代币的验证者被选择的概率是一个投入1000代币验证者的10倍),给他们权利产生下一个区块。如果在一定时间内,这个验证者没有产生一个区块,则选出第二个验证者来代替来产生新区块。与POW一样,以最长的链为准。

有什么好处?

简而言之:

不再需要为了安全产生区块而大量消耗电能。
由于不再需要大量能耗,通过发行新币以激励参与者继续参与网络的压力会下降。理论上负总发行量甚至成为可能,由于一部分交易费“被烧”掉因此货币供应随着时间减少。

有可能通过“合作博弈论”减少自私挖矿攻击遭成的系统弱点,虽然POW在一定程度上也可以做到这一点。

随着规模经济(指扩大生产规模引起经济效益增加的现象)的消失,中心化所带来的风险减小了。价值一千万美元的代笔带来的回报不多不少是价值一百万美元代币的10倍,不会有人因为负担得起大规模生产工具得到不成比例的额外回报。

有关PoS的资料:

  • Proof of Stake - 股权证明 系列1
  • Proof of Stake - 股权证明 系列2:这两篇文章都是以太坊爱好者网站翻译的文章,里面简要介绍的PoS,没有介绍技术细节。

DPoS:Delegate Proof of Stake,股份授权证明

BitShares社区首先提出了DPoS机制9。

与PoS的主要区别在于节点选举若干代理人,由代理人验证和记账。其合规监管、性能、资源消耗和容错性与PoS相似10。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账11。

DPoS的工作原理为12:

去中心化表示每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的。其挑战是通过及时而高效的方法达到51%批准。为达到这个目标,每个股东可以将其投票权授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块含有100股作为交易费,一名代表将获得1股作为报酬。

网络延迟有可能使某些代表没能及时广播他们的区块,而这将导致区块链分叉。然而,这不太可能发生,因为制造区块的代表可以与制造前后区块的代表建立直接连接。建立这种与你之后的代表(也许也包括其后的那名代表)的直接连接是为了确保你能得到报酬。

该模式可以每30秒产生一个新区块,并且在正常的网络条件下区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。

成为代表:

成为一名代表,你必须在网络上注册你的公钥,然后分配到一个32位的特有标识符。然后该标识符会被每笔交易数据的“头部”引用。

授权选票:

每个钱包有一个参数设置窗口,在该窗口里用户可以选择一个或更多的代表,并将其分级。一经设定,用户所做的每笔交易将把选票从“输入代表”转移至“输出代表”。一般情况下,用户不会创建特别以投票为目的的交易,因为那将耗费他们一笔交易费。但在紧急情况下,某些用户可能觉得通过支付费用这一更积极的方式来改变他们的投票是值得的。

保持代表诚实:

每个钱包将显示一个状态指示器,让用户知道他们的代表表现如何。如果他们错过了太多的区块,那么系统将会推荐用户去换一个新的代表。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一个新代表。

抵抗攻击:
在抵抗攻击上,因为前100名代表所获得的权力权是相同的,每名代表都有一份相等的投票权。因此,无法通过获得超过1%的选票而将权力集中到一个单一代表上。因为只有100名代表,可以想象一个攻击者对每名轮到生产区块的代表依次进行拒绝服务攻击。幸运的是,由于事实上每名代表的标识是其公钥而非IP地址,这种特定攻击的威胁很容易被减轻。这将使确定DDOS攻击目标更为困难。而代表之间的潜在直接连接,将使妨碍他们生产区块变得更为困难。

优缺点13:

  • 优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
  • 缺点:整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的。

DPoS的相关资料:

  • 浅谈区块链共识机制与分布式一致性算法:这篇文章主要介绍了一些传统分布式共识算法和DPoS白皮书。

Casper:投注共识

这是一种以太坊下一代的共识机制,属于PoS。Casper的共识是按块达成的而不是像PoS那样按链达成的14。

为了防止验证人在不同的世界中提供不同的投注,我们还有一个简单严格的条款:如果你有两次投注序号一样,或者说你提交了一个无法让Casper合约处理的投注,你将失去所有保证金15。从这一点我们可以看出,Casper与传统的PoS不同的是Casper有惩罚机制,这样非法节点通过恶意攻击网络不仅得不到交易费,而且还面临着保证金被没收的风险。

Casper协议下的验证人需要完成出块和投注两个活动。具体如下16:

出块是一个独立于其它所有事件而发生的过程:验证人收集交易,当轮到他们的出块时间时,他们就制造一个区块,签名,然后发送到网络上。投注的过程更为复杂一些。目前Casper默认的验证人策略被设计为模仿传统的拜占庭容错共识:观察其他的验证人如何投注,取33%处的值,向0或者1进一步移动。

而客户端的确认当前状态的过程如下所示17:

一开始先下载所有的区块和投注,然后用上面的算法来形成自己的意见,但是不公布意见。它只要简单的按顺序在每个高度进行观察,如果一个块的概率高于0.5就处理它,否则就跳过它。在处理所有的区块之后得到的状态就可以显示为区块链的“当前状态”。客户端还可以给出对于“最终确定”的主观看法:当高度k之前的每个块,意见要么高于99.999%或者低于0.001%,那么客户端就可以认为前k个块已经最终确定。

有关Casper的资料:

  • 理解 Serenity - 第二部分: Casper:这篇文章是翻译自以太坊的博客,里面详细描述了casper的工作原理是什么。同时由于这个是以太坊官方描述,因此,如果想要深入了解Casper,那么这篇文章是必读的。
  • 以太坊紫皮书(中文版):紫皮书发布于2016年在上海举办的以太坊第二届开发者大会。里面详细介绍了以太坊下一代PoS共识机制的相关设想。也可以看紫皮书英文版:Ethereum 2.0 Mauve Paper。

Ripple Consensus:瑞波共识机制

瑞波币的共识算法如下18:

瑞波共识算法,使一组节点能够基于特殊节点列表达成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由51%的该俱乐部会员投票通过。共识遵循这核心成员的51%权力,外部人员则没有影响力。由于该俱乐部由“中心化”开始,它将一直是“中心化的”,而如果它开始腐化,股东们什么也做不了。与比特币及点点币一样,瑞波系统将股东们与其投票权隔开,并因此比其他系统更中心化。

Pool验证池

基于传统的分布式一致性技术,加上数据验证机制;是目前行业链大范围在使用的共识机制。布比特有的?

优缺点19:

  • 优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。
  • 缺点:去中心化程度不如bictoin;更适合多方参与的多中心商业模式。

PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错

在分布式计算上,不同的计算机透过讯息交换,尝试达成共识;但有时候,系统上协调计算机(Coordinator / Commander)或成员计算机 (Member /Lieutanent)可能因系统错误并交换错的讯息,导致影响最终的系统一致性。拜占庭将军问题就根据错误计算机的数量,寻找可能的解决办法,这无法找到一个绝对的答案,但只可以用来验证一个机制的有效程度20。

而拜占庭问题的可能解决方法为21:

在 N ≥ 3F + 1 的情况下一致性是可能解决。其中,N为计算机总数,F为有问题计算机总数。信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。

最早由 Castro 和 Liskov 在 1999 年提出的 Practical Byzantine Fault Tolerant(PBFT)是第一个得到广泛应用的 BFT 算法。只要系统中有2/3的节点是正常工作的,则可以保证一致性22。

PBFT算法的总体过程如下23:

  1. 客户端向主节点发送请求调用服务操作:

    • 客户端c向主节点发送

dBFT:delegated BFT,授权拜占庭容错

2016年4月,小蚁发布共识算法白皮书,描述了一种通用的共识机制模块dBFT(delegated BFT),提出了一种改进的拜占庭容错算法,使其能够适用于区块链系统24。dBFT算法在PBFT基础上进行了改进25:

  • 将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;
  • 将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;
  • 为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);
  • 在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。

优点26:

  • 专业化的记账人;
  • 可以容忍任何类型的错误;
  • 记账由多人协同完成,每一个区块都有最终性,不会分叉;
  • 算法的可靠性有严格的数学证明;

缺点27:

  • 当有1/3或以上记账人停止工作后,系统将无法提供服务;
  • 当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;
  • 以上总结来说,dBFT机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。

有关dBFT的资料:

  • 一种用于区块链的拜占庭容错算法:这个是小蚁官方发布的关于dBFT算法的文档,里面详细介绍了dBFT算法的过程。

PoET:Proof of Elapsed Time,消逝时间量证明

它是由英特尔构建在可信执行环境的一种彩票协议28。

Quorum Voting:仲裁投票

它采用了瑞波和恒星的共识协议,用来解决需立即交易定局的需求29。

Paxos

这是一种传统的分布式一致性算法。

是一种基于选举领导者的共识机制,领导者节点拥有绝对权限,并允许强监管节点参与,性能高,资源消耗低。所有节点一般有线下准入机制,但选举过程中不允许有作恶节点,不具备容错性30。

有关Paxos的资料:

  • 维基百科-Paxos算法
  • 知乎-如何浅显易懂地解说 Paxos 的算法?

Raft

这是一种传统的分布式一致性算法。

Raft相关资料:

  • The Raft Consensus Algorithm:Raft算法简介。
  • The Secret Lives of Data:这个是Raft算法动态演示,通过简单的动画将Raft的技术原理演示出来,非常值得一看。

  1. 中国区块链技术应用发展白皮书(2016) ?
  2. 知乎-区块链上的共识机制 ?
  3. 共识算法,区块链的引擎 ?
  4. 中国区块链技术应用发展白皮书(2016) ?
  5. 知乎-区块链上的共识机制 ?
  6. 知乎-区块链上的共识机制 ?
  7. 区块链项目的共识之路 ?
  8. 为什么说小蚁是中国唯一发布共识机制的技术领跑者? ?
  9. 共识算法,区块链的引擎 ?
  10. 中国区块链技术应用发展白皮书(2016) ?
  11. 知乎-区块链上的共识机制 ?
  12. 浅谈区块链共识机制与分布式一致性算法 ?
  13. 知乎-区块链上的共识机制 ?
  14. 理解 Serenity - 第二部分: Casper ?
  15. 理解 Serenity - 第二部分: Casper ?
  16. 理解 Serenity - 第二部分: Casper ?
  17. 理解 Serenity - 第二部分: Casper ?
  18. 浅谈区块链共识机制与分布式一致性算法 ?
  19. 知乎-区块链上的共识机制 ?
  20. 维基百科-拜占庭将军问题 ?
  21. 维基百科-拜占庭将军问题 ?
  22. 拜占庭问题与算法 ?
  23. 区块链核心技术:拜占庭共识算法之PBFT ?
  24. 小蚁 ?
  25. Onchain发布小蚁共识算法白皮书 ?
  26. Onchain发布小蚁共识算法白皮书 ?
  27. Onchain发布小蚁共识算法白皮书 ?
  28. 英特尔推出“锯齿湖”(Sawtooth Lake)区块链平台 ?
  29. 英特尔推出“锯齿湖”(Sawtooth Lake)区块链平台 ?
  30. 中国区块链技术应用发展白皮书(2016) ?
<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    区块链上的共识机制