大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关如何理解HyperLeger Fabric共识机制,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联是专业的兴宁网站建设公司,兴宁接单;提供成都网站制作、成都做网站、外贸营销网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行兴宁网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!HyperLeger Fabric开发(四)——HyperLeger Fabric共识机制一、Fabric共识过程1、Fabric共识过程Fabric区块链的网络节点本质上是互相复制的状态机,节点之间需要保持相同的账本状态。为了实现分布式节点的一致性,各个节点需要通过共识过程,对账本状态的变化达成一致性的认同。
Fabric区块链的共识过程包括3个阶段:背书、排序和校验。
在背书(endorsement)阶段中,背书节点对客户端发来的交易提案进行合法性校验,然后模拟执行链码得到交易结果,最后根据设定的背书逻辑判断是否支持该交易提案。如果背书逻辑决定支持交易提案,会把交易提案签名后发回给客户端。
客户端通常需要根据链码的背书策略,向一个或者多个成员的背书节点发出背书请求。背书策略会定义需要哪些节点背书交易才有效,例如需要5个成员的背书节点中至少3个同意;或者某个特殊身份的成员支持等。客户端只有在收集足够多的背书节点的交易提案签名,交易才能被视为有效。
排序(ordering)阶段就是由排序服务对交易进行排序,确定交易之间的时序关系。排序服务把一段时间内收到的交易进行排序,然后把排序后的批量交易打包成数据块(区块),再把区块广播给通道中的成员。采用排序共识方式,各个成员收到的是一组发生顺序相同的交易,从而保证了所有节点的数据一致性。
Fabric 1.0中的排序服务支持可插拔的架构,除了提供的SOLO和Kafka 模式外,用户可以添加第三方的排序服务。SOLO是单机模式,仅适合开发测试中使用。Kafka模式是基于Kafka开源的分布式数据流平台,具有高扩展性和容错能力,适合用在生产系统。Kafka模式只提供了CFT类型的容错能力,即仅可对节点的一般故障失效容错,缺乏对节点故意作恶的行为进行容错的能力。
排序服务是共识机制中重要的一环,所有交易都要通过排序服务的排序才可以达成全网共识,因此排序服务要避免成为网络上的性能瓶颈。
校验(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算法。
Solo共识模式指网络环境中只有一个排序节点,从Peer节点发送来的消息由一个排序节点进行排序和产生区块;由于排序服务只有一个排序节点为所有Peer节点服务,没有高可用性和可扩展性,不适合用于生产环境,通常用于开发和测试环境。Solo共识模式调用时序图如下:
Solo共识模式调用过程说明:
A、Peer节点通过gPRC连接排序服务,连接成功后,发送交易信息。
B、排序服务通过Recv接口,监听Peer节点发送过来的信息,收到信息后进行数据区块处理。
C、排序服务根据收到的消息生成数据区块,并将数据区块写入账本(Ledger)中,返回处理信息。
D、Peer节点通过deliver接口,获取排序服务生成的区块数据。
共识集群由多个排序服务节点(OSN)和一个Kafka集群组成。排序节点之间不直接通信,仅仅与Kafka集群通信。
在排序节点的实现里,通道(Channel)在Kafka中是以主题topic的形式隔离。
每个排序节点内部,针对每个通道都会建立与Kafka集群对应topic的生产者及消费者。生产者将排序节点收到的交易发送到Kafka集群进行排序,在生产的同时,消费者也同步消费排序后的交易。
关于如何理解HyperLeger Fabric共识机制就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。