Hyperledger Fabric学习笔记01-系统逻辑架构
本系列学习笔记以阅读《深度探索区块链:Hyperledger Fabric技术与应用》一书的笔记为蓝本,故默认Hyperledger Fabric 1.0,期间可能会追加最新版本的内容,到时会在里面注明。这是一个边看边写的系列,有兴趣的也可以先自行购买此书学习。Hyperledger Fabric 1.0是一种通用的区块链技术,其设计目的是利用一些成熟的技术实现分布式账本技术(Distributed Ledger Techonlogy DLT)。 超级账本采用模块化架构设计,复用通用的功能模块和接口。 模块化的方法带来了可扩展性、灵活性等优势,会减少模块修改、升级带来的影响,能很好地利用微服务实现区块链应用系统的开发和部署。 Hyperledger Fabric 1.0设计的几个特点:
特点 | 说明 |
---|---|
模块插件化 | 1.很多的功能模块(如CA模块、共识算法、状态数据库存储、ESCC、VSCC、BCCSP等)都是可插拔的,系统提供了通用的接口和默认的实现,这满足了大多数业务的需求。 2.这些模块也可以通过需求进行扩展,集成到系统中。 |
充分利用容器技术 | 1.不仅节点使用容器做为运行环境,链码也默认运行在安全的容器中。 2.应用程序或者外部系统不能直接操作链码,必须通过背书节点提供的接口转发给链码来执行。 |
可扩展性 | Hyperledger Fabric 1.0在0.6版本的基础上,对Peer节点的角色进行了拆分,有背书节点(Endorser)、排序服务节点(Orderer)、记账节点(Committer)等,不同角色的节点有不同的功能。 节点可以加入到不同的通道(Channel)中,链码可以运行在不同的节点上,这样可以更好地提升并行执行的效率和吞吐量。 |
安全性 | Hyperledger Fabric 1.0提供的是授权访问的区块链网络,节点共同维护成员信息,MSP(Membership Service Provider)模块验证、授权了最终用户后才能使用区块链网络的功能。 多链和多通道的设计容易实现数据隔离,也提供了应用程序和链码之间的安全通道,实现了隐私保护。 |
系统逻辑架构
下图是 Hyperledger Fabric 1.0设计的系统逻辑架构图:
应用程序角度
1.身份管理
- 用户注册和登录系统后,获取到用户注册证书(ECert),其他所有的操作都需要与用户证书关联的私钥进行签名。
消息接收方首先会进行签名验证,才进行后续的消息处理。
网络节点同样会收到颁发的证书,比如系统启动和网络节点管理等都会对用户身份进行认证和授权。
2.账本管理
授权的用户是可以查询账本数据(ledger)的,这可以通过多种方式查询,包括:根据区块号查询区块、根据区块哈希查询区块、根据交易号查询区块、根据交易号查询交易、还可以根据通道名称获取查询到的区块链信息。
3.交易管理
账本数据只能通过交易执行才能更新,应用程序通过交易管理提交交易提案(Proposal)并获取到交易背书(Endorsement)以后,再给排序服务节点提交交易,然后打包生成区块。 SDK提供接口,利用用户证书本地生成交易号,背书节点和记账节点都会校验是否存在重复交易。4.智能合约
实现“可编程的交易账本”(Programmable Ledger),通过链码执行提交的交易,实现基于区块链的智能合约业务逻辑。 只有智能合约才能更新账本数据,其他模块是不能直接修改状态数据(World State)的。底层角度
从1.0底层的角度来看,如何实现分布式账本技术,给应用程序提供区块链服务:1.成员管理
MSP(Membership Service Provider)对成员管理进行了抽象。 每个MSP都会建立一套根信任证书(Root of Truest Certificate)体系,利用PKI(Public Key Infrastructure)对成员身份进行认证,验证成员用户提交交易请求的签名。 结合Fabric-CA或者第三方CA系统,提供成员注册功能,并对成员身份证书进行;管理,例如证书新增和撤销。 注册的证书分为注册证书(ECert)、交易证书(TCert)和TLS证书(TLS Cert),它们分别用于用户身份、交易签名和TLS传输。2.共识服务
在分布式节点环境下,要实现同一个链上不同节点区块的一致性,同时要确保区块里的交易有效和有序。 共识机制由3个阶段完成:- 客户端向背书节点提交交易案进行签名背书;
客户端将背书后的交易提交给排序服务节点进行交易排序,生成区块和排序服务;
之后广播给记账节点验证交易后写入本地账本。
网络节点的P2P协议采用的是基于Gossip的数据分发,以同一组织为传播范围来同步数据,提升网络传输的效率。
评论已关闭