# 简介

Fabric 是超级账本社区首个项目也是最流行的分布式账本实现，由 IBM、DAH 等会员企业于 2015 年底贡献到社区。

作为面向企业场景的联盟链，Fabric 中有许多经典的设计和先进的理念。包括多通道、身份证书机制、隐私保护、运维管理接口等。另外，其可扩展的架构可以满足不同场景下的性能需求，如虚拟机部署场景下可以达到 3500 tps 的吞吐量和小于 1 秒的延迟（参考《Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains》），更多物理资源情况下可以达到更大的（10 K+）的吞吐量。

## 主要版本历史

Fabric 首个主版本 1.0.0 于 2017 年 7 月发布，该版本根据之前测试版的应用反馈，在架构上进行了重新设计，在可扩展性和可插拔性方面都有了不少改进。后续版本基本上按照每季度一个小版本的节奏发布。重点对性能和安全性、隐私性进行了完善和提升。目前最新大版本为 2.0.0 版本。Fabric 的主要版本历史总结如下表所示，也可在 https://github.com/hyperledger/fabric/releases 找到。

| 版本    | 发布时间        | 新特性                                                                                               | 增强和改善                                                     |
| ----- | ----------- | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| 1.0.0 | 2017-07-11  | 重新设计架构，支持多通道、Kafka 共识机制、系统链码、分角色节点                                                                | 大幅度提升性能和可扩展性                                              |
| 1.1.0 | 2018-03-15  | Node.Js 链码，链码加密库，链码中基于证书属性的访问控制，节点之间的双向 TLS，Fabric CA 中对 CRL 的支持。部分实验特性，如 sideDB、idemix、细粒度的权限控制。 | 大幅优化了性能，某些场景下可提升一个数量级；提供基于通道的事件通知模型                       |
| 1.2.0 | 2018-07-04  | 正式支持私有数据库（Private Data），提供可插拔的 ESCC 和 VSCC，细粒度访问控制，服务自动发现                                         | 提高了稳定性和易用性                                                |
| 1.3.0 | 2018-10-11  | 正式支持 Java 链码；提供细粒度的基于状态的背书策略；支持 idemix 增强隐私保护                                                     | 部分重构链码生命周期管理；通过分页机制优化链码中对大量数据的查询                          |
| 1.4.0 | 2019-01-09  | 提供运维相关的 RESTful API（统计、健康检查、日志级别）；使用新的日志控制环境变量                                                    | 增强私有数据：新 Peer 自动获取缺失私有数据，客户端层面对私有数据的权限控制；开始支持新的 RAFT 排序机制 |
| 2.0.0 | 2020-03-TBD | 新的面向通道的链码生命周期管理；独立 shim 库等                                                                        | 增强私有数据支持；增强排序服务；改进性能                                      |

## 网络基本结构

Fabric 网络中存在四种不同种类的服务节点，彼此协作完成整个区块链系统的记账功能：

* 背书节点（Endorser Peer）：一类特殊的 Peer，对交易提案（Transaction Proposal）进行检查，通过执行智能合约计算交易执行结果（读写集合）并对其进行背书；
* 记账节点（Committer Peer）：负责维护账本，检查排序后交易结果合法性，接受合法修改，并写入到本地账本结构，目前所有 Peer 默认都是记账节点；
* 排序节点（Orderer）：正式交易会发给排序节点，排序节点负责对网络中所有交易进行排序处理，并整理为区块结构，之后被记账节点拉取提交到本地账本；
* 证书节点（CA）：提供标准的 PKI 服务，负责对网络中所有的证书进行管理，包括签发和撤销。

节点角色是 Fabric 设计中的一大创新。根据性能和安全需求，不同的节点可以由组织分别管理，共同构建联盟链。

此外，网络账本的基本单位是通道（Channel），每个通道内的成员可以共享账本，不同通道内账本则彼此隔离。客户端可以向网络内发送交易，交易经过共识后被通道内的 Peer 节点接收并更新本地对应的账本。

本章后续将详细介绍安装、部署 Fabric 网络并进行启动的操作过程，建议读者跟随步骤进行实践学习。
