如何理解HyperLegerFabric共识机制
这篇文章将为大家详细讲解有关如何理解HyperLeger Fabric共识机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
按需网站建设可以根据自己的需求进行定制,成都做网站、成都网站建设构思过程中功能建设理应排到主要部位公司成都做网站、成都网站建设的运用实际效果公司网站制作网站建立与制做的实际意义
HyperLeger Fabric开发(四)——HyperLeger Fabric共识机制
一、Fabric共识过程
1、Fabric共识过程
Fabric区块链的网络节点本质上是互相复制的状态机,节点之间需要保持相同的账本状态。为了实现分布式节点的一致性,各个节点需要通过共识过程,对账本状态的变化达成一致性的认同。
Fabric区块链的共识过程包括3个阶段:背书、排序和校验。
2、背书
在背书(endorsement)阶段中,背书节点对客户端发来的交易提案进行合法性校验,然后模拟执行链码得到交易结果,最后根据设定的背书逻辑判断是否支持该交易提案。如果背书逻辑决定支持交易提案,会把交易提案签名后发回给客户端。
客户端通常需要根据链码的背书策略,向一个或者多个成员的背书节点发出背书请求。背书策略会定义需要哪些节点背书交易才有效,例如需要5个成员的背书节点中至少3个同意;或者某个特殊身份的成员支持等。客户端只有在收集足够多的背书节点的交易提案签名,交易才能被视为有效。
3、排序
排序(ordering)阶段就是由排序服务对交易进行排序,确定交易之间的时序关系。排序服务把一段时间内收到的交易进行排序,然后把排序后的批量交易打包成数据块(区块),再把区块广播给通道中的成员。采用排序共识方式,各个成员收到的是一组发生顺序相同的交易,从而保证了所有节点的数据一致性。
Fabric 1.0中的排序服务支持可插拔的架构,除了提供的SOLO和Kafka 模式外,用户可以添加第三方的排序服务。SOLO是单机模式,仅适合开发测试中使用。Kafka模式是基于Kafka开源的分布式数据流平台,具有高扩展性和容错能力,适合用在生产系统。Kafka模式只提供了CFT类型的容错能力,即仅可对节点的一般故障失效容错,缺乏对节点故意作恶的行为进行容错的能力。
排序服务是共识机制中重要的一环,所有交易都要通过排序服务的排序才可以达成全网共识,因此排序服务要避免成为网络上的性能瓶颈。
4、校验
校验(Validation)阶段是确认节点对排序后的交易进行一系列的检验,包括交易数据的完整性检查、是否重复交易、背书签名是否符合背书策略的要求、交易的读写集是否符合多版本并发控制MVCC(Multiversion Concurrency Control)的校验等。当交易通过了所有校验后,将被标注为合法并写入账本中。因为所有的确认节点都按照相同的顺序检验交易,并且把合法的交易依次写入账本中,因此不同确认节点的状态能够始终保持一致。
二、Fabric共识机制
1、Fabric共识模式
在所有Peer节点中,交易信息必须按照一致的顺序写入账本(区块链的一致性基本原则)。例如,比特币通过POW机制竞争记账权,由最先完成数学难题的节点获取记账权并生成区块,决定本区块中的信息顺序,并广播给全网所有节点,以此来达成账本的共识。而Hyperledger Fabric采用了更加灵活、高效的共识算法,以适应企业场景下对高TPS的要求。目前,Hyperledger Fabric有三种交易排序算法:Solo、Kafka、SBFT。
Solo:只有一个排序服务节点负责接收交易信息并排序,是最简单的一种排序算法,一般用于开发测试环境中。Solo共识模式属于中心化的处理方式,不支持拜占庭容错。
Kafka:Kafka是Apache的一个开源项目,主要提供分布式的消息处理/分发服务,每个Kafka集群由多个服务节点组成。Hyperledger Fabric利用Kafka对交易信息进行排序处理,提供高吞吐、低延时的处理能力,并且在集群内部支持节点故障容错,但不支持拜占庭容错。
SBFT:简单拜占庭算法,支持拜占庭容错的可靠排序算法,包括容忍节点故障以及一定数量的恶意节点。目前,Hyperledger Fabric社区正在开发SBFT算法。
2、Solo共识模式
Solo共识模式指网络环境中只有一个排序节点,从Peer节点发送来的消息由一个排序节点进行排序和产生区块;由于排序服务只有一个排序节点为所有Peer节点服务,没有高可用性和可扩展性,不适合用于生产环境,通常用于开发和测试环境。Solo共识模式调用时序图如下:
Solo共识模式调用过程说明:
A、Peer节点通过gPRC连接排序服务,连接成功后,发送交易信息。
B、排序服务通过Recv接口,监听Peer节点发送过来的信息,收到信息后进行数据区块处理。
C、排序服务根据收到的消息生成数据区块,并将数据区块写入账本(Ledger)中,返回处理信息。
D、Peer节点通过deliver接口,获取排序服务生成的区块数据。
3、Kafka共识模式
共识集群由多个排序服务节点(OSN)和一个Kafka集群组成。排序节点之间不直接通信,仅仅与Kafka集群通信。
在排序节点的实现里,通道(Channel)在Kafka中是以主题topic的形式隔离。
每个排序节点内部,针对每个通道都会建立与Kafka集群对应topic的生产者及消费者。生产者将排序节点收到的交易发送到Kafka集群进行排序,在生产的同时,消费者也同步消费排序后的交易。
关于如何理解HyperLeger Fabric共识机制就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
分享标题:如何理解HyperLegerFabric共识机制
文章地址:http://pwwzsj.com/article/goeedp.html