共识算法详解
共识算法的结果,确定一个在一段时间内拥有记账权的唯一节点
共识算法的假设条件有以下几种,
- 故障模型: 非拜占庭故障/拜占庭故障
- 通信模型: 同步/异步
- 通信网络连接: 节点间直连数
- 信息发送者身份: 实名/匿名
- 通信通道稳定性: 通道可靠/不可靠
- 消息认证性: 认证消息/非认证消息
由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。一般来说,私有链和联盟链对一致性、正确性要求更高,一般采用强一致性的共识算法。公有链对一致性和正确性通常没法做到百分之百,通常采用最终一致性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" 转载请保留原文链接及作者。