Hyperledger Fabric v1架构简介

   Hyperledger是一个由Linux基金会托管的开源软件,Hyperledger Fabric是一个区块链框架实现,它是Hyperledger项目之一。

Fabric的一些关键特性:

  • 没有令牌 - 默认无安全机制的区块链
  • 基于共识算法实现分布式事务。
  • 基于交易事务批准的会签背书策略
  • 私人通道可共享机密信息

 

Hyperledger Fabric组件

参与端

这些是维护分类帐的网络服务,它接收有顺序的更新消息,这些消息是将新事务提交到分类帐,并返回智能合约。

提交端

它是进行提交交易事务的节点,维护分类账和状态。等于集中式数据库。

会签端

它接收交易事务以进行会签认可,并验证交易是否满足所有必要和充分条件,因此,会签端通过同意或拒绝会签来做出回应。

顺序服务或排序者

它批准某个块进入分类帐中,它与参与端和会签端同时通讯。它提供一个共享通信信道,这是在客户端和参与端之间的共享信道,事务在其中广播。

信道

参与端共享一个分类帐,这是一个子网,它用于限制与相关方的交易访问,这意味着客户只能看到他们所连接的信道的消息及其相关交易,并且不知道其他信道。

证书机构

它为网络上的参与者提供身份服务。它管理运行区块链所需的不同类型的证书。

聪明合约

它是每次调用时运行的事务逻辑,事务调用导致更新或查询分类帐状态。

共识

这是在对等网络上获得共识的流程,类似Paxos或Raft共识流程,它负责一致地复制分类帐,并同意加入新的块,是分布式事务状态同步部分,属于CAP的C。

共享分类帐

它是所有事务的不可变记录(类似一种修改状态的动作事件,可参考事件溯源架构),它是网络上所有参与者都可以访问的记录集合。

客户端

它是最终用户应用程序,必须参与端才能连接到区块链。

  客户端APP/ SDK提交交易事务提议,见1.submit proposal,。所有会签端都将执行这个交易事务,见2.Execute CC。这些交易并不会导致分类账中状态的更新,因为只有参与端这一步骤,整个步骤还没有结束呢。

  一旦参与端执行完成,它将由参与端进行会签并返回响应结果给客户端,见第3步;然后,客户端将事务提交给排序者,见第4a步,然后,这个排序服务以块的形式收集交易,并分发给提交的参与端,见第5步,;这些实现提交的端点使用gossip传递给其他参与端,见第6步。这里有不同的排序算法可用,例如SOLO(单节点,开发),Kafka,SBFT。

  参与提交的端点会基于当时参与会签的背书策略校验这个交易,并检查交易事务是否对当前状态有效。在所有这些过程之后,事务会被写入分类帐。当事务成功或失败时,以及如果已将块添加到分类帐中(如果它们已注册通知),则会通知客户端应用程序;客户端应用程序也将被它们所连接的每个端通知。

  这里由于去除了区块链中一个链一个的串行部分,这样排除了串行事务的弊端,提高了吞吐量,分布式一致性通过共识算法达成最终一致。这6步过程非常类似于两段事务提交的两个阶段,1-3步相当于预提交阶段,4到6步相当于确认提交阶段,因为没有区块链的工作证明,也就不需要哈希算力算新的块的哈希值,那么排序功能就会缺失,这是通过排序服务实现的。

分布式系统Paxos算法

分布式系统Raft算法

在使用Kafka+微服务发送聚合的领域事件时如何在错误重试时保证顺序?

分布式事务 区块链 分布式系统