[区块链从原理到实现] - 区块链中的各种共识算法
[区块链从原理到实现] - 区块链中的各种共识算法
本文将介绍区块链中常用的各种分布式共识算法,对其原理及典型实现做分析。 主要共识算法有:
-
POW BFT PBFT IBFT POS POS DPOS RAFT PAXOS
IBFT
谈到IBFT就不得不提到摩根大通.摩根大通实现了一个基于go-ethereum的区块链,在这个区块链中,摩根替换了共识算法为IBFT(Istanbul BFT),这个IBFT其实就是PBFT,只不过摩根大通把它自己实现的PBFT叫做IBFT,所以IBFT的基本原理与PBFT是一样的,所不同的是,IBFT中把出块和共识的三阶段结合在了一起. 相关链接如下:
-
摩根大通的区块链源代码: IBFT共识算法介绍: IBFT共识中的基本流程也就是下面这个图了: 如果要分析IBFT的具体过程,那么参考上述的摩根区块链中的共识代码. 如果需要具体了解IBFT的运行机制参考上述的IBFT介绍的链接. 后续也会写一个文章专门来分析IBFT的具体执行流程,目前还没有完成.待完成后会把链接添加在此处.
PBFT
- Request:请求端C发送请求到任意一节点,这里是0
- Pre-Prepare:服务端0收到C的请求后进行广播,扩散至123
- Prepare:123,收到后记录并再次广播,1->023,2->013,3因为宕机无法广播
- Commit:0123节点在Prepare阶段,若收到超过一定数量的相同请求,则进入Commit阶段,广播Commit请求
- Reply:0123节点在Commit阶段,若收到超过一定数量的相同请求,则对C进行反馈
根据上述流程,在 N ≥ 3F + 1 的情況下一致性是可能解決,N为总计算机数,F为有问题的计算机总数
DPOS
PoS机制虽然考虑了PoW的不足,但也有缺点:依据权益结余来选择,会导致首富账户的权力更大,有可能支配记账权。股份授权证明机制(Delegated Proof of Stake,DPoS),是对PoW、PoS不足的提出的。下面以比特股为例,理解DPoS的思想。
比特股引入了见证人这个概念,见证人可以生成区块,每一个持有比特股的人都可以投票选举见证人。得到总同意票数中的前NN个(NN通常定义为101)候选者可以当选为见证人,当选见证人的个数需满足:至少一半的参与投票者相信NN已经充分地去中心化。见证人的候选名单每个维护周期(1天)更新一次。见证人然后随机排列,每个见证人按序有2秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一时间片对应的见证人。如果见证人提供的算力不稳定或计算机宕机等,持股人可以随时通过投票更换这些见证人。
可以看到,其核心思想是通过缩小参与核心共识过程的节点数量,以提高共识效率。(这里可以认为选举见证人的过程为非核心共识过程,而见证人按序生成区块可以认为是核心共识过程)
上一篇:
JS实现多线程数据分片下载
下一篇:
为什么Python现在这么火?