当前位置 : 主页 > 编程语言 > java >

超级账本共识机制

来源:互联网 收集:自由互联 发布时间:2022-06-23
fabric的网络节点本质是互相复制的状态机,节点之间需要保持相同的账本状态。为了实现这个目的,各个节点需要通过共识过程,对账本状态的变化达成一致性的认同。因为账本记录得

fabric的网络节点本质是互相复制的状态机,节点之间需要保持相同的账本状态。为了实现这个目的,各个节点需要通过共识过程,对账本状态的变化达成一致性的认同。因为账本记录得失系统中发生的交易,共识机制实际上就是要确保各个节点看到相同的交易顺序和交易内容,从而保证各个节点都处于相同的状态。
fabric的共识过程包括3个阶段:背书、排序和校验。
背书
在背书的阶段,背书节点对客户端发来的交易预案进行合法性检验,然哦户模拟执行链码得到交易结果,最后根据设定的背书逻辑判断是否支持该交易预案。如果背书逻辑决定支持交易预案,它将把预案签名发回给客户端。缺省情况下,背书节点的背书逻辑是支持预案并签名。但是节点也可以按照业务规则设定背书逻辑,从而进队服务业务需求的交易进行背书。如果背书节点判定不支持交易,则给客户端返回出错信息。
客户端通常需要根据链码的背书策略,向一个或多个成员的背书节点发出背书请求。背书策略会定义需要哪些节点背书交易才有效,例如需要5个成员的背书节点中至少3个同意,或者某个特殊身份的成员支持。客户端只有在手机满足背书策略的支持之后,广播出去的交易才有效。
排序
排序阶段就是排序服务对交易进行排序,确定交易之间的时序关系。排序服务把一段时间内收到的加以进行排序,然后把交易后的交易打包成区块,再把区块广播给通道中的成员。采用这种方式,各个成员收到的是一组繁盛顺序相同的交易,从而保证了所有节点数据的一致性。
、fabric1.0中排序服务支持可插拔的架构。除了提供solo和kafka模式外,用户还可以添加第三方的排序服务。solo是但是确认模式,仅适合开发测试中使用。kafka模式基于kakfa开源的分布式数据流平台,具有高扩展性和容错negligence,适合在生产系统。需要注意的是,kafka只提供了cft类型的容错能力,仅对课对节点的一般故障失效容错。缺乏对节点故意作恶进行容错的能力。因此,需要第三方的容错方案俩支持bft。
排序服务是共识机制中重要的一环,所有交易都需要通过排序服务的排序才可以达成全网共识,因此排序服务要避免称为网络上的性能瓶颈。为此,排序服务采用轻量级设计,只完成确定交易顺序的功能,不参与其他操作。
校验
交易阶段是确认节点对排序后的交易进行一系列的校验,包括交易数据的完整性检查、是否重复交易、背书签名是否符合背书策略的要求、交易读写集是否符合多版本控制的校验等。当交易通过了所有校验之后,江北标注为合法并写入账本中,因为所有的确认节点按照相同的顺序校验交易,并且把合法的交易一次写入账本中,所以他们的状态能够始终保持一致。


上一篇:fabric总体架构图
下一篇:没有了
网友评论