参考博客:
https://www.jianshu.com/p/64281ff8de13

一、fabric基本概念

fabric是由IBM贡献的超级账本框架。它是一个利用现有成熟的技术来组合而成的一个区块链技术的实现。它是一种允许可插拔实现各种功能的的模块化架构。它具有强大的容器技术,来承载各种主流语言来编写的智能合约

二、fabric架构的核心特征

1.解耦了原子排序环节与其他复杂处理环节,消除了网络处理瓶颈,提高可扩展性;
2.解耦交易处理节点的逻辑角色为背书节点(Endorser)、确认节点(Committer),可以根据负载进行灵活部署;
3.加强了身份证书管理服务,作为单独的Fabric CA项目,提供了更多功能;
4.支持多通道特性,不同通道之间的数据彼此隔离,加强隔离安全性;
5.支持可插拔的架构,包括共识、权限管理、加解密、账本机制的模块,支持多种类型;
6.引入系统链码来实现区块链系统的处理,支持可编程和第三方实现。

三、fabric中涉及的一些名词

fabric包括以下节点:客户端节点、CA节点、Peer节点、Orderer节点

1.客户端节点

客户端或应用程序代表由最终用户操作的实体,它必须连接到某一个Peer节点或者排序服务节点上与区块链网络进行通信。客户端向背书节点(Endorser Peer)提交交易提案(Proposal),当收集到足够背书后,向排序服务节点广播交易,进行排序,生成区块。

2.CA节点

CA节点是fabric的证书颁发节点(Certificate Authority),由服务器(fabric-ca-server)和客户端(fabric-ca-client)组成。CA节点接收客户端的注册申请,返回注册密码用于登陆,以便获取身份证书。在区块链网络上所有的操作都会验证用户的身份。

3.Peer节点

每个组织可以拥有一到多个Peer节点。每个Peer节点可以担任如下多种角色:
——Endorser Peer(背书结点)
——Leader Peer(主节点)
——Committer Peer(记账节点)
——Anchor Peer(锚节点)
(1) Endorser Peer(背书结点)
所谓背书(Endorsement),就是指特定peer执行交易并向生成交易提案( proposal )的客户端应用程序返回YES/NO响应的过程。背书节点是动态的角色,是与具体链码绑定的。每个链码在实例化的时候都会设置背书策略(Endorsement policy),指定哪些节点对交易背书才有效。 也只有在应用程序向节点发起交易背书请求时才成为背书节点,其他时候是普通的记账节点,只负责验证交易并记账。
(2) Leader Peer(主节点):主节点负责和Orderer排序服务节点通信,从排序服务节点处获取最新的区块并在组织内部同步。可以强制设置,也可以选举产生。
(3) Committer Peer(记账节点)
负责验证从排序服务节点接收的区块里的交易,然后将块提交(写入/追加)到其通道账本的副本。记账节点还将每个块中的每个交易标记为有效或无效。
(4) Anchor Peer(锚节点)
通道上的每个成员都有一个Anchor Peer(或多个Anchor peer 来防止单点故障),允许属于不同成员的peer发现通道上的所有现有peer。
(5) Orderer(排序服务节点)
排序服务节点接收包含背书签名的交易,对未打包的交易进行排序生成区块,广播给Peer节点。排序服务提供的是原子广播,保证同一个链上的节点为接收到机同的消息,并且有相同的逻辑顺序。排序服务独立于peer进程存在并且以先来先服务的方式对网络上的所有信道进行排序交易。排序服务旨在支持超出现有的SOLO和Kafka品种的可插拔实现。排序服务是整个网络的公共绑定; 它包含绑定到每个成员的加密身份材料。
各个组件之间的关系如图:
Fabric架构及基本原理
Fabric架构及基本原理
在上图中,peerN订阅了所有通道,我们看到每个通道都有一个相关的账本。一般来说,我们称不涉及所有peer的账本为子帐本,另一种是系统账本,即全账本。

4.通道

实质是由排序节点划分和管理的私有原子广播通道,目的是对通道的信息进行隔离,使得通道外的实体无法访问通道内的信息,从而实现交易的隐私性。
通道分为系统通道(System Channel)和应用通道(Application Channel)。排序节点通过系统通道来管理应用通道,用户的交易通道通过应用通道传递。
Fabric架构及基本原理
通道由排序服务节点负责管理,同时该节点还负责排序通道中的交易。在通道中一般包含有若干成员(组织),若两个网络实体的身份证书能够追溯到同一个根CA,则认为这两个实体属于同一组织。此外,通道中的每个组织都会有一个或以上的“锚节点”,它负责与其他组织交换共享账本的数据。
创建通道的时候定义了成员,只有通过成员MSP验证的实体,才能加入到通道并访问通道数据。
Org1是通道mychannel的成员之一,与Org1绑定的MSP标识为Org1MSP,其代表的CA称为CA1;若实体的MSP满足以下条件则认为实体有权限访问mychannel的数据:
1.实体的MSP标识(ID)为Org1 MSP;
2.实体身份证书的信任链源头为CA1。
实体只要满足通道中任意成员的MSP校验,则认为该实体有权访问通道中的数据。

5.分布式账本

每个通道中都有唯一的账本,由通道中所有成员共同维护着这个账本,确保每个节点上都保存了它所属通道的账本的一个副本,因而使分布式账本。对账本的访问需要通过链码实现对账本键值对的增加、删除、更新和查询等的操作。
账本由区块链状态数据库两部分组成。
区块链是一组不可更改的有序的区块(数据块),记录着全部交易的日志。每个区块中包含若干个交易的数据,不同区块所包含的交易数量可以不同。区块之间用哈希链(Hashed-link)关联;每个区块头包含该区块所有交易的哈希值,以及上一个区块头的哈希值。
状态数据库记录了账本中所有键值对的当前值,相对于对当前账本的交易日志做了索引。链码执行交易的时候需要读取账本的当前状态,从当前数据库可以迅速获取键值的最新状态。

四、fabric网络及整体架构

fabric的整体架构如图所示:
Fabric架构及基本原理
fabric网络:
节点是区块链的通信实体,节点是一个逻辑概念,不同类型的节点可以运行在同一台物理服务器上。这些节点可能部署在不同云上面或者本地。可能来自不同的公司或者组织。在区块链网络中有两种类型的节点:Peer节点和Orderer节点。
Fabric架构及基本原理
超级账本的整体功能模板结构如下图:
Fabric架构及基本原理
超级账本Fabric面向不同的开发人员提供了不同层面的功能,自下而上可以分为三层:
网络层:面向系统管理人员。实现P2P网络,提供底层构建区块链网络道德基本能力,包括代表不同角色的节点和服务;
共识机制和权限管理:面向联盟和组织的管理者。基于网络层的连通,实现共识机制和权限管理,提供分布式账本的基础;
业务层:面向业务应用开发人员。基于分布式账本,支持链码、交易等跟业务相关的功能模块,提供更高一层的应用开发支持。

相关文章: