工作量证明机制:系统中节点通过计算一个问题(比如符合条件的hash值),并给出符合要求的答案。最先得出结果的节点就可以获得记账权以及适当的奖励,bictoin、LTC等货币型区块链就应用POW机制。一般发布代币可以采用此机制。
股权证明机制:2012 年时 Sunny King 提出 。系统通过计算每个节点持有加密货币的数量和时间,来决定谁拥有记账权,并赋予相应的利息。
代理权益证明机制:是Pos的改进,也是一种基于投票的公式机制。与Pos不同的是,记账节点是通过其他节点投票选出的。一旦选出的节点不能完成任务,则其他节点会选出另外的节点替代它。EOS、LBTC、TRON等采用此机制。
重要性证明机制:使用账户重要性评分来分配记账权的概率。
参与度证明机制:结合了DPOS与POI的思想。
实用拜占庭机制:来源于拜占庭将军问题。以状态机运作,包括节点状态,消息状态, 由主节点带领大家统一步调处理消息,而消息能否继续迁移到下一个状态,则通过多少节点达成一致来决定。Fabric采用PBFT算法。
过程:
pre-prepare : 主节点参与把request分配一个唯一的编号 request-number n, 并把request跟n一起组成pre-prepare消息广播给所有成员(backup节点)
prepare : 所有成员(backup节点),收到pre-prepare消息, 依靠签名字段检查消息是否来源于主节点,确认无误,将request编号和本节点签名组成prepare消息,广播给其他所有成员,表示自己认可这请求编号和准备好了。
Commit :所有节点,若收到的prepare消息,依靠签名检查是否正确,若prepare消息数量超过全部节点数量的3分之二, 则认为系统达成一致认可该请求和请求编号,对所有节点广播commit消息,表示该节点可以进行request的业务。
Reply : 所有节点, 若收到commit消息,依靠签名检查消息是否正确,若commit的消息数量超过所有节点的3分之一,则完成request要求的业务,并构建reply消息,直接回复给client。Client根据是否收到超过3分之1个节点的正确回复,判断系统是否完成了请求request。
参考:http://www.luyixian.cn/news_show_258898.aspx
https://blog.csdn.net/zhj_fly/article/details/80302922
注意:只能用于私有链或者联盟链,需要对节点的加入进行权限控制;不能用于公有链,因为公有链中所有节点都可以随意加入退出,无法抵挡女巫攻击(sybil attack)。
授权拜占庭容错:这种机制是用权益来选出记账人,然后记账人之间通过拜占庭容错算法达成共识,是一种通过代理投票来实现大规模节点参与共识的拜占庭容错共识机制,最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。NEO采用此机制。
相对于PBFT,DBFT主要做了以下改进:
1)将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;
2)将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;
3)为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);
4)在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。
参考:https://zhidao.baidu.com/question/923891766954547699.html
1990年Leslie Lamport在论文《The Part-time Parliament》中提出Paxos共识算法,在工程角度实现了一种最大保障分布式系统一致性的机制。Paxos算法被广泛应用在Chubby、ZooKeeper中。
问题是指分布式的系统中存在故障(crash fault),但不存在恶意(corrupt)节点的场景(即可能消息丢失/重复,但无错误消息)下的共识达成问题。
参考:https://www.cnblogs.com/dennyzhangdd/p/6781688.html
基于传统的成熟的分布式一致性技术(Pasox、Raft),加上数据验证机制。不需要加密货币也可以工作,实现秒级共识验证。但是其去中心化程度相对较低,更适合多方参与的多中心商业模式。