Hyperledger Fabric的逻辑架构是什么样的?

0 导言

      前面我们已经讲述了环境搭建的相关内容,接下来我们花几篇文章来讲一讲一些概念和原理性的东西。首先我们来看一看Fabric的逻辑架构是什么样的?

      上图所示的逻辑结构图是从不同角度来划分的,上层从应用程序的角度,提供了标准的gRPC接口,在API的基础之上封装了不同语言的SDK,包括go、node.js、java、python等,开发人员可以利用SKD开发基于区块链的应用。

      区块链强一致性要求各个节点之间达成共识需要较长的执行时间,应用程序也是采用异步通信的模式进行开发的,事件模块可以在触发区块事件或者链码事件的时候执行预先定义的回调函数。

      下面分别从应用程序(红字部分)底层的角度(黑字部分)分析应该关注的几个要素。

1 从应用程序角度

1.1 身份管理

      联盟链考虑到商业应用对安全、隐私、监管、审计、性能的需求,提高准入门槛,成员必须被许可才能加入网络。Fabric成员管理服务为整个区块链网络提供身份管理、隐私、保密和可审计的服务。成员管理服务通过公钥基础设施PKI和去中心化共识机制使得非许可的区块链变成许可制的区块链。。

1.2 账本管理

      授权的用户是可以查询账本数据 的,这可以通过多种方式查询,包括:
- 根据区块号查询区块
- 根据区块哈希查询区块
- 根据交易号查询区块
- 根据交易号查询交易
- 根据通道名称查询区块链信息

1.3 交易管理

      账本数据只能通过交易执行才能更新,应用程序通过交易管理提交提案(Proposal),并获取到交易背书(Endorsement)以后,再给排序服务节点为(order)提交交易,然后打包生成区块。SDK提供接口,利用用户证书本地生成交易号,背书节点和记账节点都会校验是否存在重复交易。

1.4 智能合约

      实现“可编程的账本” ,能过链码执行提交的交易,实现基于区块链的智能合约业务逻辑。只有智能合约才能更新账本数据,其他模块不是直接修改状态数据(world state)。

2 从底层角度

2.1 成员管理

      MSP(Member Service Provider)对成员管理进行了抽象,主要为成员服务模块,包括会员注册,身份保护、内容保密、交易审计等功能。可以使用可插拔的Fabric-CA模块或第三方的CA来代替。

2.2 共识服务

      负责节点间共识管理、账本的分布式计算、账本的存储及节点间的P2P协议功能的实现,是区块链的核心组成部分,为区块链的主体功能提供了底层技术支撑

2.3 链码服务

      提供了一系列接口,为智能合约实现提供了方便。还有安装、运行、部署提供了环境。智能合约的实现依赖于安全的执行环境,确保安全的执行过程和用户数据的隔离。Fabric采用Docker管理普通的链码,提供安全的沙箱环境和镜像文件仓库,可支持多种语言的链码。

2.4 安全和密码服务

      安全问题是企业级区块链关系的问题,Hyperledger Fabric专门定义了一个BCCSP(BlockChain Cryptographic Service Provider),使其实现密钥生成、哈希运算、签名验签、加密解密等基础功能。

3 fabric逻辑架构设计上的几个特点

3.1 模块插件化

      很多功能模块(如CA模块、共识算法、状态数据库存储、ESCC、VSCC、BCCSP等)都是可插拔的,系统 提供了通用的接口和默认的实现,这满足了大多数的业务需求。这些模块也可以根据需求进行扩展,集成到系统 中。

3.2 充分利用容器技术

      不仅节点使用容器作为运行环境,链码也默认运行在安全的容器中。应用程序或者外部系统不能直接操作链码,必须通过背书节点提供的接口转发给链码来执行。容器给链码运行提供的是安全沙箱环境,把链码的环境和背书节点的环境隔离开,链码存在安全问题也不会影响到背书节点。

3.3 可扩展性

      Hyperledger Fabric1.0后,节点的角色进行了不同的拆分,有主节点(Leader)、背书节点(Endorser)、记账节点(Committer)、排序服务节点(Orderer)等,不同角色的节点有不同的功能。节点可以加入不同的通道(Channel)中,链码可以运行在不同的节点上,这样可以更好的提升并行执行的效率和吞吐量。

3.4 安全性

      Hyperledger Fabric提供的是授权访问的区块链网络,节点共同维护成员信息,MSP(Member Service Provide)模块验证、授权了最终用户后才能使用区块链网络的功能。多链和多通道的设计容易实现数据隔离,也提供了应用程序和链码之间的安全通道,实现了隐私保护。

4 总结

      Hyperledger Fabric采用模块化架构设计,利用通用的功能模块和接口。模块化的方法带来了可扩展性、灵活性等优势,会减少模块修改、升级带来的影响,能很好的利用微服务实现区块链应用系统 的开发和部署。

5 参考资料

1.https://hyperledger-fabric.readthedocs.io/en/release-1.2/index.html
2.《深度探索区块链:Hyperledger技术与应用》作者:张增骏,董宁,朱轩彤,陈剑雄 著 出版社:机械工业出版社

      注意:本篇文章大部分内容 来自《深度探索区块链:Hyperledger技术与应用》(作者:张增骏,董宁,朱轩彤,陈剑雄 著 出版社:机械工业出版社)这本书

猜你喜欢

转载自blog.csdn.net/ltt1st/article/details/81633165