github编辑

简介

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 月发布,该版本根据之前测试版的应用反馈,在架构上进行了重新设计,在可扩展性和可插拔性方面都有了不少改进。后续版本基本上按照每季度一个小版本的节奏发布。重点对性能和安全性、隐私性进行了完善和提升。目前最新 LTS 版本为 2.5.x 系列。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-01-29

新的面向通道的链码生命周期管理;独立 shim 库;外部链码启动器

增强私有数据支持;移除系统链码白名单;改进性能

2.2.0

2020-07-07

长期支持版本 (LTS);增强私有数据及其协调机制

引入异步区块处理;优化链码生命周期

2.5.0

2023-01-23

长期支持版本 (LTS);清理过时功能(如移除 Kafka 排序)

增强 Fabric Gateway;完全移除对 Go 链码的 shim 依赖

3.0.0

2024-09-16

正式引入拜占庭容错 (BFT) 排序服务;增强 Wasm 智能合约支持

全面提升安全性和协议效率,移除旧的共识机制

网络基本结构

Fabric 网络中存在背书节点(Endorser)、记账节点(Committer)、排序节点(Orderer)和证书节点(CA)等不同组件,彼此协作完成整个区块链系统的记账功能。

关于网络架构和详细的节点角色说明,请参考 Fabric 架构与设计 章节。

客户端可以向网络内发送交易,交易经过共识后被通道内的 Peer 节点接收并更新本地对应的账本。

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

最后更新于