Article / 文章中心

超级账本(Hyperledger Fabric)共识

发布时间:2022-03-02 点击数:485

由于fabric是分布式的系统,因此需要共识机制来保障各个节点以相同的顺序状态保存账本,达成一致性。fabric 广义的共识机制为三个阶段:交易背书,交易排序,交易验证。而有些认为“交易排序”是属于共识,在当前fabric1.4版本中,存在三种共识机制,分别是solo,kafka,etcdraft。交易排序图:

排序节点收到该交易以后会按照通道进行拆分,拆分以后再进行排序,也就是说排序并不是全局排序,而是按照每一个通道单独排序,最后分别组装成区块发往主节点,通道之间是相互隔离的,它们并不会知道彼此的存在,但是每一个组织的节点都可以订阅多个通道。

Solo共识模式:指网络环境中只有一个排序节点,从Peer节点发送来的消息由一个排序节点进行排序和产生区块,由于排序服务只有一个排序节点为所有Peer节点服务,没有高可用性和可扩展性,不适合用于生产环境,通常用于开发和测试环境。

Kafka 共识模式:对所有交易信息进行排序(如果系统存在多个channel,则对每个channel分别排序)。Kafka是一个分布式的流式信息处理平台,目标是为实时数据提供统一的、高吞吐、低延迟的性能。

Etcdraft 共识模式:它是一种基于 etcd 的崩溃容错(CFT)排序服务。遵循 “领导者和追随者” 模型,其中领导者在通道中的orderer节点之间动态选出,该领导者将消息复制到跟随者节点。由于系统可以承受节点(包括领导节点)的丢失,只要剩下大多数排序节点(即所谓的“仲裁”),Raft就被称为“崩溃容错”(CFT)。换句话说,如果一个通道中有三个节点,它可以承受一个节点的丢失(剩下两个节点)。