共识算法的目的
- 共识算法的目的
- 利用区块链构造去中心化的账本,首先需要解决如何实现不同节点上账本一致性和正确性
- 这就需要借鉴传统的分布式系统中的一致性算法,确定网络中选择记账节点的机制,以及如何保障账本数据的一致性和正确性
- 区块链解决了在不可信信道上传输可信信息、价值转移的问题,儿共识机制解决了区块链如何在分布式尝尽夏大程一致性问题。
- 区块链的伟大之处就是它的共识机制在去中心化的思想上解决了节点间互相信任的问题
- 区块链能在众多节点达到一种较为平衡的状态也是因为共识机制。
- 密码学占据了区块链的半壁江山,属于区块链的骨骼,而共识机制是保障区块链系统不断运行下去的关键。
- 引入新的共识机制
- 当分布式思想被提出来时,人们就开始根据FLP定理和CAP定理设计共识算法
- FLP定理规定:“在网络可靠、存在节点失效的异步模型系统中,不存在解决一致性问题的确定性算法”
- 吧FLP的设定放松一些,寻求有解的反感
- 由社会与学和博弈论得到启发,引入新机制
- 激励机制
- 在拜占庭将军问题中给忠诚将军奖励。背叛将军发现背叛行为没有收益,人为每一个节点的行为是由吉利机制决定的;
- 引入博弈论概念,人为每一个节点的行为时有激励机制决定的;
- 引入社会学概念,人为理性的人都是逐利的,每个节点都有最大户自己的利益倾向,如果激励机制设置得当,大部分忽而短板都会遵守规则,成为公正的节点。
- 随机性
- 在传统的中心化系统中,决定下一步行动由权威大的将军做决定。在去中心化的系统中,提出在所有将军冢,随机指定一名将军做决定。这就是决定谁有记账权
- 根据每个节点的计算力来决定。谁的算力强,谁可获得记账权,在拜占庭将军问题中就是指挥权。这就是比特币系统中用的PoW共识机制。
- 根据每个节点具有的资源来决定。谁投入的资源多,谁就可以获得记账权。这就是POS共识机制。
- 激励机制
- 共识算法的假设条件
- 在实际情况下,根据不同的假设条件,有很多不同的共识算法被设计出来,这些算法各有优势和局限。算法的假设条件有以下几种情况:
- 故障模型:非拜占庭故障/拜占庭故障
- 通信类型:同步/异步
- 通信网络连接:节点间直连数
- 信息发送者身份:实名/匿名
- 通信通道稳定新:通道可靠/不可靠
- 消息认证性:认证消息/非认证消息- 在区块链网络中,由于应用场景的不同,所这几的目标各异,不同的区块链系统采用了不同的共识机制
- 共识算法及其代表作品(包括新的共识算法+传统一致性算法)
- PoW
- 比特币
- 莱特币
- 以太坊(Frontier、Homestead、Metropolis)阶段
- PoS
- 以点点币PPC和以太坊(Serenity)阶段
- DPoS
- BitShare比特股
- PBFT
- Hyperledger Fabric(联盟链为代表)
- Paxos
- ZooKeeper
- Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
- Raft
- ETCD
- ETCD是一个高可用的兼职存储系统,主要用于共享配置和服务发现。ETCD时有CoreOS开发并维护的,灵感来自于ZooKeeper,他是用Go语言表写,并通过Raft一致性算法以保证强一致性。