深度探索Hyperledger技术与应用之超级帐本的系统架构

image

区块链的业务需求多种多样,一些要求在快速达成网络共识及快速确认区块后,才能够将区块加入区块链中。有一些能够接受相对缓慢的处理时间,以换取较低级别的信任。各行各业在扩展性、可信度、合法性、工做流复杂度以及安全性等方面的需求和用途都不尽相同。咱们先来看一下在企业级区块链系统中常见的模块构成,如图3-1所示。算法

image

从图中能够看到一些经常使用的功能模块有:应用程序、成员管理、智能合约、帐本、共识机制、事件机制、系统管理等。纵轴表明用户或者开发者更关心的内容,越往上表明用户更关注,好比应用程序和钱包等,越靠下是开发者更关注的模块,好比事件机制。而横轴则是从时间的维度来看的,左边是一开始关注的功能,直到完成全部的功能。数据库

Hyperledger Fabric 1.0是一种通用的区块链技术,其设计目标是利用一些成熟的技术实现分布式帐本技术(Distributed Ledger Technology,DLT)。超级帐本采用模块化架构设计,复用通用的功能模块和接口。模块化的方法带来了可扩展性、灵活性等优点,会减小模块修改、升级带来的影响,能很好地利用微服务实现区块链应用系统的开发和部署。Hyperledger Fabric 1.0设计有几个特色:编程

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

**2)充分利用容器技术:**不只节点使用容器做为运行环境,链码也默认运行在安全的容器中。应用程序或者外部系统不能直接操做链码,必须经过背书节点提供的接口转发给链码来执行。容器给链码运行提供的是安全沙箱环境,把链码的环境和背书节点的环境隔离开,链码存在安全问题也不会影响到背书节点。服务器

**3)可扩展性:**Hyperledger Fabric 1.0在0.6版本的基础上,对Peer节点的角色进行了拆分,有背书节点(Endorser)、排序服务节点(Orderer)、记帐节点(Committer)等,不一样角色的节点有不一样的功能。节点能够加入到不一样的通道(Channel)中,链码能够运行在不一样的节点上,这样能够更好地提高并行执行的效率和吞吐量。网络

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

1

系统逻辑架构

下图所示为Hyperledger Fabric 1.0设计的系统逻辑架构图。异步

image

上图所示的系统逻辑架构图是从不一样角度来划分的,上层从应用程序的角度,提供了标准的gRPC接口,在API的基础之上封装了不一样语言的SDK,包括Golang、Node.js、Java、Python等,开发人员能够利用SDK开发基于区块链的应用。区块链强一致性要求,各个节点之间达成共识须要较长的执行时间,也是采用异步通讯的模式进行开发的,事件模块能够在触发区块事件或者链码事件的时候执行预先定义的回调函数。下面分别从应用程序和底层的角度分析应该关注的几个要素。分布式

一、应用程序角度ide

(1)身份管理

用户注册和登陆系统后,获取到用户注册证书(ECert),其余全部的操做都须要与用户证书关联的私钥进行签名,消息接收方首先会进行签名验证,才进行后续的消息处理。网络节点一样会用到颁发的证书,好比系统启动和网络节点管理等都会对用户身份进行认证和受权。

(2)帐本管理

受权的用户是能够查询帐本数据(ledger)的,这能够经过多种方式查询,包括根据区块号查询区块、根据区块哈希查询区块、根据交易号查询区块、根据交易号查询交易,还能够根据通道名称获取查询到的区块链信息。

(3)交易管理

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

(4)智能合约

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

2.底层角度

下面的内容是从Hyperledger Fabric 1.0底层的角度来看,如何实现分布式帐本技术,给应用程序提供区块链服务。

(1)成员管理

MSP(Membership Service Provider)对成员管理进行了抽象,每一个MSP都会创建一套根信任证书(Root of Trust Certificate)体系,利用PKI(Public Key Infrastructure)对成员身份进行认证,验证成员用户提交请求的签名。结合Fabric-CA或者第三方CA系统,提供成员注册功能,并对成员身份证书进行管理,例如证书新增和撤销。注册的证书分为注册证书(ECert)、交易证书(TCert)和TLS证书(TLS Cert),它们分别用于用户身份、交易签名和TLS传输。

(2)共识服务

在分布式节点环境下,要实现同一个链上不一样节点区块的一致性,同时要确保区块里的交易有效和有序。共识机制由3个阶段完成:客户端向背书节点提交提案进行签名背书,客户端将背书后的交易提交给排序服务节点进行交易排序,生成区块和排序服务,以后广播给记帐节点验证交易后写入本地帐本。网络节点的P2P协议采用的是基于Gossip的数据分发,以同一组织为传播范围来同步数据,提高网络传输的效率。

(3)链码服务

智能合约的实现依赖于安全的执行环境,确保安全的执行过程和用户数据的隔离。Hyperledger Fabric采用Docker管理普通的链码,提供安全的沙箱环境和镜像文件仓库。其好处是容易支持多种语言的链码,扩展性很好。Docker的方案也有自身的问题,好比对环境要求较高,占用资源较多,性能不高等,实现过程当中也存在与Kubernetes、Rancher等平台的兼容性问题。

(4)安全和密码服务

安全问题是企业级区块链关心的问题,尤为在关注国家安全的项目中。其中底层的密码学支持尤为重要,Hyperledger Fabric 1.0专门定义了一个BCCSP(BlockChain Cryptographic Service Provider),使其实现密钥生成、哈希运算、签名验签、加密解密等基础功能。BCCSP是一个抽象的接口,默认是软实现的国标算法,目前社区和较多的厂家都在实现国密的算法和HSM(Hardware Security Module)。

Hyperledger Fabric 1.0在架构上的设计具备很好的可扩展性,目前是众多可见的区块链技术中最为活跃的,值得区块链技术爱好者深刻研究。

2

网络节点架构

节点是区块链的通讯主体,是一个逻辑概念。多个不一样类型的节点能够运行在同一物理服务器上。有多种类型的节点:客户端、Peer节点、排序服务节点和CA节点。下图所示为网络节点架构图。

image

接下来详细地解释图3-3所示的不一样节点的类型。

1.客户端节点

客户端或者应用程序表明由最终用户操做的实体,它必须链接到某一个Peer节点或者排序服务节点上与区块链网络进行通讯。客户端向背书节点(Endorser)提交交易提案(Transaction Proposal),当收集到足够背书后,向排序服务广播交易,进行排序,生成区块。

2. Peer节点

全部的Peer节点都是记帐节点(Committer),负责验证从排序服务节点区块里的交易,维护状态数据和帐本的副本。部分节点会执行交易并对结果进行签名背书,充当背书节点的角色。背书节点是动态的角色,是与具体链码绑定的。每一个链码在实例化的时候都会设置背书策略,指定哪些节点对交易背书后才是有效的。也只有在应用程序向它发起交易背书请求的时候才是背书节点,其余时候就是普通的记帐节点,只负责验证交易并记帐。

图3-2所示的Peer节点还有一种角色是主节点(Leader Peer),表明的是和排序服务节点通讯的节点,负责从排序服务节点处获取最新的区块并在组织内部同步。能够强制设置为主节点,也能够动态选举产生。

在图3-2 中还能够看到,有的节点同时是背书节点和记帐节点,也能够同时是背书节点、主节点和记帐节点,也能够只是记帐节点。在后面的章节中,有的地方会用记帐节点表明普通的Peer节点。

3.排序服务节点

排序服务节点(Ordering Service Node或者Orderer)接收包含背书签名的交易,对未打包的交易进行排序生成区块,广播给Peer节点。排序服务提供的是原子广播(Atomic Broadcast),保证同一个链上的节点接收到相同的消息,而且有相同的逻辑顺序。

排序服务的多通道(MultiChannel)实现了多链的数据隔离,保证只有同一个链的Peer节点才能访问链上的数据,保护用户数据的隐私。

排序服务能够采用集中式服务,也能够采用分布式协议。能够实现不一样级别的容错处理,目前正式发布的版本只支持Apache Kafka集群,提供交易排序的功能,只实现CFT(Crash Fault Tolerence,崩溃故障容错),不支持BFT(Byzantine Fault Tolerance,拜占庭容错)。

4. CA节点

CA节点是Hyperledger Fabric 1.0的证书颁发机构(Certificate Authority),由服务器和客户端组件组成。CA节点接收客户端的注册申请,返回注册密码用于用户登陆,以便获取身份证书。在区块链网络上全部的操做都会验证用户的身份。CA节点是可选的,能够用其余成熟的第三方CA颁发证书。

下期预告:深度探索Hyperledger技术与应用之超级帐本的典型交易流程

image
深度探索区块链 A.jpg

深度探索区块链

Hyperledger技术与应用

区块链

张增骏,董宁,朱轩彤,陈剑雄  著

本书由超级帐本执行董事Brian Behlendorf领衔推荐,区块链一线落地实践团队、Hyperleger会员智链骨干团对撰写。深刻讲解Hyperledger Fabric 1.0的架构、执行逻辑、核心功能实现、从零部署,并以票据案例为例,讲解具体开发实践,穿插开发所需的最佳实践和遇到的问题解决。

机械工业

出版社

image

华章科技是机械出版社的旗下品牌,出版了“计算机科学丛书”等近30个经典套系,在各个细分领域均处于领导地位,其中《Java编程思想》、《算法导论》、《编译原理》、《数据挖掘:概念与技术》、《深刻理解计算机系统》、《深刻理解Java虚拟机》等著做犹如计算机图书领域的璀璨明珠,长销不衰!

本文内容节选自《深度探索区块链:Hyperledger技术与应用》一书的第2章《超级帐本初体验》。

本书做者:张增骏,董宁,朱轩彤,陈剑雄

感谢机械工业出版社华章分社的支持和分享。

如下是咱们的社区介绍,欢迎各类合做、交流、学习:)

image
相关文章
相关标签/搜索