一、引言
区块链系统构成:数据层、网络层、共识层、激励层、合约层。
共识层作用:系统中的数据由所有节点独立存储,由共识层来协调保证分布式网络中各节点数据记录一致性。
1. 特点
(1)一致性
一致性是指所有诚实节点保存的区块链前缀部分完全相同。
(2)有效性
有效性是指由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块中。
二、共识算法
分布式系统中,多个节点通过异步通信方式组成网络集群,节点之间进行状态复制,以保证每个节点达成一致的状态共识。
1. 工作量证明(PoW,Proof of Work)
在基于工作量证明构建的区块链网络中,节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。
特点:(1)完全去中心化,节点可以自由进出;
(2)PoW 达成共识的周期过长,导致每秒仅仅只能做几笔交易(比特币每秒只能做 7 笔交易),不适合商业应用
2.权益证明(PoS,Proof of Stake)
权益证明用来解决工作量证明计算浪费的问题,它不要求证明者完成一定数量的计算工作,而是要求证明者对某些数量的加密货币展示所有权。
特点:(1)PoS 把PoW 由算力决定记账权变成由币龄来决定记账权。持有币数占系统总币数的百分比 ( 包括占有币数所持有的时间 ),决 定着获得本次记账权的概率。这就导致了拥有数字货币多的的人(节点),获得记账权的机率更大,容易产生垄断,产生算力攻击。
改进:当一个新区块产生时,检测产生新区块的地址的平均权益比例和记账比例,如果记账比例高于平均权益比例,则新区块被认为无效,采用上述方法解决了权益证明中存在的算力攻击问题,自动调整记账冗余度(专利:CN106548397A)。
(2)依据权益结余来选择,整体上还是会导致首富账户的权力更大,有可能支配记账权。
3.授权权益证明(DPoS,delegated proof of stake)
DPoS 尝试解决 PoW 以及 PoS 存在问题的同时,还通过民主方式去中心化以抵消中心化的负面效应。
在DPoS 中,持有者对于记账者拥有选举权,任何试图对系统不利或者作恶的人都随时可能被持有者投票出局。
方案:(1)DPoS 基于轮转记账子协议投票选择出特定参与者,并在等概率轮转时产生新区块,该方案中依靠全网参与者的投票,规避了代币集中的风险(专利:CN107341660 A)。
(2)通过设置每一周期新的共识节点生成节点信息表格,让具有较高的抵押权益值的共识节点更多地参与到共识过程中,这些节点值得信赖,降低了错误几率(专利:CN108648076 A)。
特点:DPoS 可以大大缩小参与验证和记账节点的数量,从而达到秒级的共识验证。然而,DPoS 仍然不能解决区块链在商业中的应用问题,因为没能摆脱对代币的依赖,而多数商业应用中不需要代币存在。
4.实用拜占庭容错(PBFT,Practical Byzantine fault tolerance)
BFT 是分布式计算领域的容错技术,它不依赖于代币工作,区块链共识和 BFT 实现相似,参与共识记账的每一个节点相当于拜占庭节点,节点之间进行消息传递,发生故障节点被称为拜占庭节点。
PBFT 以计算为基础,没有代币奖励。由链上所有人参与投票,少于(N-1)/3 个节点反对时就获得公示信息的权利。在实现 PBFT 共识过程中,如果一个节点宕机重连,那么其共识模块的内部变量与系统当前值不一致,导致当前节点无法参与共识。
5.Raft 共识
6.混合证明
(1)改进的拜占庭容错+Raft算法
在网络环境良好的时候自动采用共识效率高可以检测到异常节点的第一类共识算法 ( 例如 Paxos 算法、Raft 算法 ),当发现恶意节点或者节点错误的时候,可以自动切换到以支持解决拜占庭容错的第二类共识算法(例如拜占庭容错算法、实用拜占庭容错算法)。
(2)权益证明+改进的拜占庭容错
使用 PoS 共识方法的区块链中,引入保证金机制,用户只有在缴纳保证金后才能成为Validator 进行投票,结合了 PoS 和 PBFT 的优势,既能够保证区块链既拥有较高的效率,也能保证节点不容易作恶,且每个区块都是合法的。
每个Validator持有一定的股权Stake,Validator包括诚实的Validator和非诚实的Validator,Validator的数量为3f+1,其中f为正整数。
三、共识流程预处理
1. 业务请求
区块链节点在收到业务请求后进行预处理,得到预处理块,在共识校验中可直接捞取预处理块并广播给共识网络进行共识校验,简化共识校验阶段的过程(专利:CN107196900A)。
2. 业务提交
通过在区块链节点中设置多个服务器,将预处理块通过服务器发送至共识网络的其他区块链节点中,只要有一个服务器可用,即能保证该区块链节点可用,提高了共识的效率和稳定性(专利:CN107395659A)。
3. 业务分发
在确定获取到的预处理块通过共识后,可启动对下一次待共识的预处理块进行共识,通过并行的方式对已通过共识的预处理块中包含的业务数据进行数据处理,从而提升系统的业务数据处理效率(专利:CN107402824A)。
4. 业务校验
在已达成一定数量共识的条件下,确定已处于共识阶段的子集合的数量,当已处于共识阶段的子集合的数量小于共识网络的预设并发数时,向共识网络发起对新的子集合的共识提议,使得新的子集合进入共识阶段进行共识请求的处理,有利于提高对共识请求的处理效率(专利:CN107528882A)。