共识算法详解

共识算法的结果,确定一个在一段时间内拥有记账权的唯一节点

共识算法的假设条件有以下几种,

  1. 故障模型: 非拜占庭故障/拜占庭故障
  2. 通信模型: 同步/异步
  3. 通信网络连接: 节点间直连数
  4. 信息发送者身份: 实名/匿名
  5. 通信通道稳定性: 通道可靠/不可靠
  6. 消息认证性: 认证消息/非认证消息

由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。一般来说,私有链和联盟链对一致性、正确性要求更高,一般采用强一致性的共识算法。公有链对一致性和正确性通常没法做到百分之百,通常采用最终一致性Eventual Consistency的共识算法。

拜占庭容错技术

拜占庭将军问题

拜占庭容错系统

实用的拜占庭容错系统

Raft协议

Raft基础
leader选举
记账过程

PoW

一句话解释,根据投入的算力来选择记账节点

会导致算力浪费

穷举法找到一个符合要求的哈希值。

工作量证明函数

区块

难度值

PoW的过程

基于PoW的共识记账

关于比特币PoW能否解决拜占庭将军的问题

PoS

一句话解释,根据拥有的货币数量来算则记账节点

会导致中心化

用户证明拥有某些数量的货币(即对货币的权益)

PoS的应用

点点币结合币龄

随机区块选择

NXT和blackcoin采用随机方法预测下一合法区块,使用公式查找与权益大小结合的最小哈希值

基于权益速度的选择

Reddcoin引入权益速度证明,即鼓励钱币的流动而非囤积。通过给币龄引入指数衰减函数,使得币龄不会超过2币月

DPoS

股份授权证明机制 Delegated Proof of Stake,期望通过引入一个技术民主层来减少中心化的负面影响

持股人投票选出见证人。见证人按序生成区块。

Ripple共识算法

基于互联网的开源支付协议,可以实现去中心化的货币兑换、支付与清算功能。

参与投票节点的身份是事先知道的,因此算法的效率比PoW高,交易的确认只需要几秒钟。
这点也决定了它只适合权限链。

容忍20%的拜占庭错误

Ripple的网络结构

Ripple共识算法

小蚁共识机制

PoW、PoS、DPoS确定谁有记账权。小蚁侧重于解决如何限制记账人权利的问题。这种记账机制被称为中性记账。记账人只有选择是否参加的权利,而不能改变交易数据,不能认为排除某笔交易,也不能对交易排序。

总结

PoW安全性和公平性强一些。PoS和DPoS更环保高效。

PoW和PoS比较适合公共链环境,PBFT和Raft适合联盟链和私有链的分布式环境。

比特币的PoW机制是一种概念性的拜占庭协议,能在一定程度上解决拜占庭问题,而PoS等其他机制 并没有严格分析其在拜占庭协议方面的属性。

文章标题:共识算法详解

本文作者:Benny

发布时间:2020-06-08, 19:49:33

最后更新:2018-06-29, 18:07:38

原始链接:https://benny233.github.io/2020/06/08/共识算法详解/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录