共识算法
区块链架构是一种分布 式的架构。其部署模式有公共链、联盟链、私有链三 种,对应的是去中心化分布式系统、部分去中心化分 布式系统和弱中心分布式系统。 分布式系统中,多个主机通过异步通信方式组成 网络集群。在这样的一个异步系统中,需要主机之间 进行状态复制,以保证每个主机达成一致的状态共 识。然而,异步系统中,可能出现无法通信的故障主 机,而主机的性能可能下降,网络可能拥塞,这些可 能导致错误信息在系统内传播。因此需要在默认不可 靠的异步网络中定义容错协议,以确保各主机达成安 全可靠的状态共识。 利用区块链构造基于互联网的去中心化账本,需 要解决的首要问题是如何实现不同账本节点上的账本 数据的一致性和正确性。这就需要借鉴已有的在分布 式系统中实现状态共识的算法,确定网络中选择记账 节点的机制,以及如何保障账本数据在全网中形成正 确、一致的共识。 在20世纪80年代出现的分布式系统共识算法,是 区块链共识算法的基础。我们下面从基本的拜占庭容 错技术入手,逐步介绍适合于私有链/联盟链和公共 链的共识算法。
学习资料
Code your own blockchain in less than 200 lines of Go!
PoW
PoS
Code your own Proof of Stake blockchain in Go!
DPos
《Nodejs开发加密货币》之二十四:DPOS机制(分布式共识算法)
https://www.jianshu.com/p/f99e8fe57c9a
https://steemit.com/dpos/@dantheman/dpos-consensus-algorithm-this-missing-white-paper
https://www.jianshu.com/p/3d9c751b2ac8
PBFT
Paxos 算法
Raft
https://juejin.im/post/5ac1e9adf265da23906c2dc8
https://github.com/linkwk7