Hyperledger Fabric 架构概览

fabric 版本 v2.4.1

超级账本 Fabric 自诞生以来已经发布了两个主要版本:1.0 系列版本(2017 年 7 月)和 2.0 系列版本(2020 年 1 月)。2016 年 9 月,Fabric 发布了 v0.6.0 预览版本,通过这一版本社区收集了大量来自实践的反馈和建议,主要集中在性能、安全、可扩展性等方面。2017 年 7 月推出 1.0 系列版本,这一版本重新设计了整体架构,改善了可扩展性和安全性,消除了性能瓶颈,首次实现每秒数千次的吞吐性能。最新的 2.0 系列版本则进一步提高了可扩展性和安全性。重新设计了链码生命周期管理,支持外部链码来解耦 Peer 和链码;同时扩展了共识机制,能够更好地支持 Raft 等扩展性更优的共识算法。


核心特性

目前,为了实现安全、可扩展、易管理的企业级分布式账本,Fabric 在架构设计上主要包括了如下特性:

●采用 "背书(Endorse)-> 排序(Order)-> 提交(Commit)" 模型,解耦排序处理与其他逻辑,消除网络整体瓶颈。

●交易节点逻辑上分为背书节点(Endorser)、记账节点(Committer)等角色,允许根据负载情况调整部署。

●支持多通道特性,不同通道之间的账本数据彼此完全隔离。配合私密数据库和权限管理,实现细粒度的隐私保护。

●支持可拔插的架构,包括共识、权限管理、加解密、账本机制、链码执行等模块,支持多种实现和多种合约语言。

●支持运行时的管理接口,可以在线查询健康状态和系统的各项运行指标,实时变更日志级别等,方便运维管理。

●集成了身份证书管理服务,通过 Fabric CA 项目提供完整的证书签发和撤销等管理功能。


整体架构

超级账本 Fabric 的整体架构,包括应用、账本、链码、区块链结构、数据库、共识、权限管理、数字证书、网络层等多个组件。

其中,账本是最核心的资源,记录合约和交易数据,应用通过发起交易调用合约来向账本中记录数据。合约执行的逻辑通过链码来实现。多个节点共同组成网络,网络运行中发生的事件可以通过事件机制通知给应用甚至其他系统。权限管理则负责在整个过程中进行合适的访问控制。

账本实现依赖于核心的区块链结构、数据库存储、共识机制等技术;链码实现则依赖容器、状态机等技术;权限管理利用了已有的 PKI 体系、数字身份证书、加解密算法等诸多安全技术。

最底层由多个节点组成 P2P 网络,彼此通过 gRPC 通道进行交互,利用 Gossip 协议进行数据同步。层次化结构提高了架构的可扩展和可插拔性,底层开发者在二次开发时仅需修改相关的模块单元。


典型工作流程

根据交易生命周期各个阶段工作负载侧重不同的特点,Fabric 将网络内节点分为 CA 节点、Orderer(排序)节点和 Peer 节点三大类。Peer 节点在逻辑上全部对应通道内的记账节点,部分 Peer 节点还可兼任背书节点(Endorser)角色。这种角色分工,可以让不同类型节点专注处理自己所擅长的业务。

●客户端创建请求:客户端应用使用 SDK 与 Fabric 网络打交道。首先,客户端从 CA 获取合法的身份证书以便加入网络内的应用通道。发起正式交易前,需要先构造交易提案(Proposal)提交给 Endorser 进行背书。客户端收集到足够(背书策略决定)的背书支持后,可以利用背书构造一个合法的交易请求,发给 Orderer 进行排序处理。客户端还可以通过事件机制来监听网络中消息,获知交易是否被成功接收。

●Endorser 节点进行背书:主要提供供客户端调用,完成对交易提案的背书(目前主要是签名)处理。收到来自客户端的交易提案后,首先进行合法性和 ACL 权限检查,检查通过则模拟运行交易,对交易导致的状态变化(以读写集形式记录,包括所读状态的键和版本,所写状态的键值)进行背书,并返回结果给客户端。

●Committer 节点更新账本:负责维护区块链结构和数据库(包括状态数据库、历史数据库、索引数据库等)。该节点定期地从 Orderer 或领导节点获取排序后的批量交易区块结构,对这些交易进行落盘前的最终检查(包括交易消息结构、签名完整性、是否重复、读写集合版本是否匹配等)。检查通过后,将合法交易的执行结果写入账本,同时构造新的区块,更新区块中 BlockMetadata [2](TRANSACTIONS_FILTER)元数据,添加合法性标记。所有 Peer 都担任 Committer 角色。

●排序节点进行排序:Orderer 为网络中所有合法交易进行全局排序,并将排序后的一批交易组合生成区块结构。Orderer 不需要与交易内容打交道。

●CA 管理身份证书:参照 PKI 架构,负责网络中所有证书的管理(签发的、撤销等)。实现位于单独的 fabric-ca 项目中。CA 在签发证书后,自身并不参与网络中的交易过程。

经过这些步骤,网络中的交易得到共识并记录到账本中,任何节点都无法推翻或篡改交易历史。

fabric 区块链

相关推荐
勤奋的凯尔森同学2 小时前
webmin配置终端显示样式,模仿UbuntuDesktop终端
linux·运维·服务器·ubuntu·webmin
技术小齐6 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
ITPUB-微风6 小时前
Service Mesh在爱奇艺的落地实践:架构、运维与扩展
运维·架构·service_mesh
落幕6 小时前
C语言-进程
linux·运维·服务器
chenbin5207 小时前
Jenkins 自动构建Job
运维·jenkins
java 凯7 小时前
Jenkins插件管理切换国内源地址
运维·jenkins
AI服务老曹7 小时前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
sszdzq8 小时前
Docker
运维·docker·容器
book01218 小时前
MySql数据库运维学习笔记
运维·数据库·mysql
bugtraq20219 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu