Fabric 简介

Fabric 是超级账本联盟(Hyperledger)的主要项目之一,其作为一个私有或“许可”型区块链网络,目前它主要被用于金融和供应链等行业。至今,Fabric已获得了阿里巴巴、AWS、Azure、百度、谷歌、华为、IBM、甲骨文、腾讯等互联网巨头的支持。

Fabric 是一个分布式账本解决方案平台,采用 模块化 架构,支持不同组件的 可插拔 实现,以适应业务系统的复杂性。

架构设计

arch

三大组件:区块链服务(Blockchain)、链码服务(Chaincode)、成员权限管理(Membership)。

区块链服务

  • 提供一个分布式账本平台。
  • 多个交易被打包进区块中,多个区块构成一条区块链。
  • 区块链代表的是账本状态机发生变更的历史过程。
  • 交易意味着围绕着某个链码进行操作,交易可以改变世界状态。

链码服务

在 Fabric 中,智能合约叫做链码 (Chaincode),它包含所有的业务处理逻辑,并对外提供接口,外部通过调用链码接口来改变世界观。

链码需要实现 Chaincode 接口,以被 VP(Validating Peer,验证节点)节点调用,目前支持的交易类型包括:部署(Deploy)、调用(Invoke)和查询(Query)。不同链码之间可能互相调用和查询。

在实现上,链码需要运行在隔离的 容器 中,超级账本采用了 Docker 作为默认容器。对容器的操作支持三种方法:buildstartstop,对应的接口为 VM

链码部署成功后,会创建连接到部署它的 VP 节点的 gRPC 通道,VP 节点和容器之间通过 gRPC 消息来交互。

成员权限管理

通过基于 PKI 的成员权限管理,平台可以对接入的节点和客户端的能力进行限制。证书有三种:

  • 注册证书 ECert:颁发给提供了注册凭证的用户或节点,一般长期有效;
  • 交易证书 TCert:颁发给用户,控制每个交易的权限,一般针对某个交易,短期有效。
  • 通信证书 TLSCert:控制对网络的访问,并且防止窃听。

角色管理

节点角色是 Fabric 设计中的一大创新,根据性能和安全需求,不同的节点可以由不同的组织分别管理,彼此协作完成整个区块链系统的记账功能:

  • 背书节点(Endorser Peer):负责对交易的提案(Transaction Proposal)进行验证并进行 模拟 执行。背书节点相当于中立的第三方,用来保证交易的合法性;
  • 记账节点(Committer Peer):负责维护账本,检查排序后交易结果合法性,接受合法修改,并写入到本地账本结构,目前所有 Peer 默认都是记账节点;
  • 排序节点(Orderer):正式交易会发给排序节点,排序节点负责对网络中所有交易进行排序处理,并整理为区块结构,之后被记账节点拉取提交到本地账本;
  • 证书节点(CA):提供标准的 PKI 服务,负责对网络中所有的证书进行管理,包括签发和撤销。

通道

网络账本的基本单位是 通道(Channel),每个通道内的成员可以共享账本,不同通道内账本则彼此隔离。客户端可以向网络内发送交易,交易经过共识后被通道内的 Peer 节点接收并更新本地对应的账本。类似 chain33 的平行链概念。

交易流程

上图中,客户端(App)使用 SDK 与 Fabric 网络进行交互。

  1. 客户端先通过证书服务获取合法的身份并加入到应用通道(Channel)中。
  2. 客户端构造交易请求(Proposal)提交给背书节点(Endorser)。
  3. 背书节点对交易进行验证和模拟执行后(并不真正更新账本),反馈给客户端。
  4. 客户端收到足够的背书支持后将交易发送给排序节点(Orderer)。
  5. 排序节点(Orderer)对网络中的交易进行全局排序,并将排序后的交易打包成区块,然后广播给网络中的记账节点(Committer)。
  6. 记账节点(Committer)负责维护区块链和账本结构,对交易进行最终检查(交易结构的合法性、交易背书签名是否符合背书策略等),检查通过后写入账本。
彦祖老师 wechat