【区块链与密码学】第3-7讲:Hyperledger Fabric技术框架详解

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】

3.5Hyperledger Fabric的架构

在上一堂课的学习中,我们介绍了Hyperledger Fabric的基情况以及组成,今天我们来拆解其架构组成,细说Hyperledger Fabric的技术框架。

01Fabric模块-成员服务

区块链网络中的每一个参与者(包括客户端应用程序,记账节点、排序服务节点等),要想参与区块链网络,都必须具有封装在X.509数字证书中的数字身份。这些身份非常重要,因为它们确定了参与者在区块链网络中对资源的访问权限。

要使身份可以验证,它必须来自可信任的权威机构。成员服务提供商( MSP)在Fabric中就充当权威机构的角色,默认使用X.509证书作为身份,采用传统的公钥基础结构(PKI)分层模型。

PKI(Public Key Infrastructure,公钥基础设施)的目标就是实现不同成员在不见面的情况下进行安全通信(建立信任),Fabric采用的模型是基于可信的第三方机构,也就是证书颁发机构(Certification Authority,CA)签发的证书。CA会在确认申请者的身份后签发证书,同时会在线提供其所签发证书的最新吊销信息,这样使用者就可以验证证书是否仍然有效。

证书是一个包含公钥、申请者相关信息以及数字签名的文件。数字签名保证了证书中的内容不能被任何攻击者篡改,而且验证算法可以发现任何伪造的数字签名。通常情况下,PKI体系包含证书颁布机构(CA)、注册机构(RA)、证书数据库和证书存储实体。

RA是一个信任实体,它负责对用户进行身份验证以及对数据、证书或者其他用于支持用户请求的材料进行合法性审查。

CA则会根据RA的建议,给指定用户颁发数字证书,这些证书由根CA直接或分层进行认证。

(*Fabric成员服务实体示意图*)

对上图中的实体进行进一步介绍说明:

Root Certificate Authority(Root CA):根CA,代表PKI体系中信任的实体,同时也是PKI体系结构中的最顶层认证机构。

Registration Authority(RA):注册机构,是一个可信任的实体,通过它可以确定希望参与许可区块链的用户的有效性和身份信息。它通过与用户进行带外通信的方式以验证用户的身份和角色。同时RA还需要负责创建注册所需的注册凭证。

EnrollmentCertificateAuthority(ECA):在验证用户提供的注册凭证后,ECA负责发出注册证书(ECerts)。

TransactionCertificateAuthority(TCA):在验证用户提供的注册凭证后,TCA负责发出交易证书(TCerts)。

TLS Certificate Authority (TLS-CA):负责颁发TLS(Transport Layer Security,传输层安全协议)证书和凭据,以允许用户使用其网路。

Enrollment Certificates(ECerts):ECerts是长期证书,针对所有角色颁发。

TransactionCertificates(TCerts):TCerts是每个交易的短期证书。它们是由TCA根据授权的用户请求颁发的。此外,TCerts可以被配置为不携带用户身份的信息。它们使得用户不仅可以匿名地参与系统,还可以防止事务的可链接性。

TLS-Certificates(TLS-Certs):TLS-Certs携带其所有者的身份,用于系统和组件之间进行通信及维护网络级安全性。

CodeSignerCertificates(CodeSignerCerts):负责对代码进行数字签名来标识软件来源及软件开发者的真实身份,以此保证代码在签名之后不被恶意篡改。

(*用户注册流程示意图*)

具体的用户注册流程做一个简单的介绍,成员的注册分为两个过程:

离线过程

每个用户或者Peer节点必须向RA注册机构提供身份证件(ID证明),同时这个流程必须通过带外数据(out-of-band,OOB)进行传输,以提供RA为用户创建(和存储)账户所需的证据。

RA注册机构返回用户有关的用户名和密码,以及信任锚(包含TLS-CA Cert)。如果用户可以访问本地客户端,那么客户端可以将TLS-CA证书作为信任锚的一种方式。

在线过程

用户连接客户端以请求登录系统,在这一过程中,用户将用户名和密码发送给客户端。

用户端接着代表用户向成员服务发送请求,成员服务接受请求。

成员服务将包含几个证书的包发送给客户端。

一旦客户端验证完成所有的加密材料是正确有效的,它就会将证书存储于本地数据库中并通知用户,用户注册完成。

现在来看看这些身份如何用于表示区块链网络的可信成员。这是会员服务提供商(MSP)发挥作用的地方:它通过列出其成员的身份来识别应该信任哪些根CA和中间CA是信任域的成员,或者哪些CA被授权为成员签发有效的身份。

MSP的强大不仅仅是列出谁是网络参与者或频道成员。MSP可以在它所代表的组织范围内识别参与者可能扮演的特殊角色,为网络和通道的访问权限设置奠定基础。在区块链网络中,有两个地方会出现MSP,一个是本地MSP,一个是通道MSP

本地MSP用来定义节点和用户的权限,定义了本地层面的成员哪些有管理权哪些有参与权。

如果一个组织的节点想要加入某个通道,那么本地MSP也要加入通道的配置中,一个通道中的所有节点共享通道MSP的视图。下面来看一个例子。

(*MSP工作流程示意图*)

用户B的身份由RCA1签发,存储在本地MSP中,当B想要连接到Peer并尝试在peer上安装智能合约时,需要执行一下操作:

Peer先检查ORG1-MSP,以验证B的身份确实是ORG1的成员。验证成功后将允许install命令实现链码的安装。

B希望在通道上也实例化智能合约,那么通道上的所有组织必须都同意。因此,Peer必须先检查通道的MSP,然后才能成功提交此命令。

本地MSP仅在应用的节点或用户的文件系统上定义。因此,在物理上和逻辑上,每个节点或用户只有一个本地MSP。

由于通道MSP可用于通道中的所有节点,因此它们在通道配置中进行逻辑定义一次。其实,通道MSP也在通道中为每个节点的文件系统实例化,并通过一致性保持同步。

02Fabric模块-区块链服务

Fabric的区块链服务包含4个模块:共识管理、分布式账本、账本存储以及P2P网络协议。

共识管理用于在多个节点的分布式复杂网络中使消息达成共识。

分布式账本与账本存储负责管理区块链系统中所有的数据存储,比如交易信息、世界状态等。

P2P网络协议则是网络中节点的通信方式,负责Fabric中各节点间的通信与交互。

1. P2P网络

在Fabric的网络环境中,节点是区块链的通信实体.存在三类不同的节点,分别是客户端节 点(Client)、Peer节点(Peer)以及共识服务节点(Ordering Service Nodes或者Orderers).

客户端节点代表着终端用户实体

必须连接到Peer节点后才可以与区块链进行通信交互。

可以根据它自己的选择来连接到任意的Peer节点上,创建交易和调用交易。

在实际系统运行环境中,客户端负责与Peer节点通信提交实际交易调用,与共识服务通信请求广播交易的任务。

Peer节点负责与共识服务节点通信来进行世界状态的维护和更新

它们会收到共识服务广播的消息,以区块的形式接收排序好的交易信息,然后更新和维护本地的世界状态与账本。

Peer节点可以额外地担当背书节点的角色,负责为交易背书。每个合约代码程序都可以指定一个包含多个背书节点集合的背书策略。

2. 共识服务

Fabric网络中的Orderers节点聚集在一起形成了共识服务

它可以看作一个提供交付保证的通信组织。

共识服务为客户端和Peer节点提供了一个共享的通信通道,还为包含交易的消息提供了一个广 播服务的功能。

共识服务可以有不同的实现方式,在v1.0版本中,Fabric将共识服务设计成了可插拔模块,可以根据不同的应用场景配置不同的共识选项。目前,Fabric提供了3种模式实现:Solo、Kafka和Ratf

Solo是一种部署在单个节点上的简单时序服务,它只支持单链和单通道。

Kafka是一种支持多通道分区的集群共识服务,可以支持CFT(Crash Faluts Tolerance)。它容忍部分节点宕机失效,但是不能容忍恶意节点。

Raft遵循“领导者和追随者”模型,每个通道都选举一个“领导者”,它的决定将被复制给“追随者”。只要总节点数与失效节点数目满足n>=2f+1,它就允许包括领导者在内的部分节点宕机失效。

3. 分布式账本

区块链技术从其底层构造上分析,可以将其定义为一种共享账本技术。账本是区块链的核心组成部分,在区块链的账本中,存储了所有的历史交易和状态改变记录。

在Fabric中,每个通道都对应着一个共享账本,而每个连接在共享账本上的Peer节点,都能参与网络和查看账本信息,即它允许网络中的所有节点参与和查看账本信息。

账本上的信息是公开共享的,并且在每个peer节点上,都维持着一份账本的副本

03 Fabric模块-合约代码服务

Fabric合约代码服务提供了一种安全且轻量级的方式,沙箱验证节点上的合约代码执行,提供安全容器服务以及安全的合约代码注册服务。

其运行环境是一个锁定和安全的容器,合约代码首先会被编译成一个独立的应用程序,运行于隔离的Docker容器中。在合约代码部署时,将会自动生成一组带有签名的智能合约的Docker基础镜像。在Docker容器中,Peer节点与合约代码交互过程如图所示:

(*合约代码执行流程示意图*)

步骤如下:

Peer节点收到客户端发来的合约代码执行请求后,通过gRPC与合约代码交互,发送一个合约代码消息对象给对应的合约代码。

合约代码通过调用Invoke()方法,执行getState()操作和putState()操作,向Peer节点获取账本状态数据库和发送账本预提交状态数。若要读取和写入私有数据,则通过getPrivateDate()和putPrivateDate()方法。

合约代码执行成功后将输出结果发送给Peer节点,背书节点对输入和输出信息进行背书签名,完成后应答给客户端。

点宽学园【区块链与密码学】第三单元的课程今天就结束啦!感谢同学们的一路陪伴~大家也要记得复习哦!从下一期我们将进入新的篇章,敬请期待啦~

关注点宽学园,每周持续更新区块链系列课程,小宽带你进入区块链世界。我们下节课见啦。

【区块链与密码学】课堂回顾:

区块链与密码学系列文章合集

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Hyperledger Fabric是一个开源的区块链平台,可用于搭建溯源系统。在使用Hyperledger Fabric搭建溯源系统之前,需要进行以下步骤: 1. 设置网络:首先,需要定义参与者和组织的角色,创建通道以便参与者之间进行交互。可以使用配置文件定义参与者的访问权限和身份验证策略。网络配置的正确设置非常重要,以确保只有授权的参与者才能参与溯源。 2. 设计链码:链码是在Hyperledger Fabric中运行的智能合约。在溯源系统中,链码用于定义商品的可追溯性规则。可以使用链码设计不同的授权和查询操作,以便在区块链上记录和检索相关数据。链码可以使用Go、Java等编程语言进行开发。 3. 部署链码:部署链码是将链码安装到网络中的各个参与者节点上。通过将链码部署到多个节点,可以确保系统的高可用性和数据冗余,并防止单点故障。链码部署后,可以使用链码的标识符在网络中进行交互。 4. 数据记录和查询:一旦链码部署完成,参与者可以将数据记录到区块链中。在溯源系统中,每次商品的生产、流通或消费都可以被记录为一个或多个交易。通过使用合适的查询操作,可以检索和分析区块链中的数据,以实现商品的溯源。 5. 权限管理和隐私保护:在搭建溯源系统时,需要确保参与者只能访问其需要的数据,并且保护数据的隐私性。Hyperledger Fabric提供了灵活的身份验证和访问控制机制,可以根据需求对参与者进行身份验证,并限制其对数据的访问权限。 通过以上步骤,可以使用Hyperledger Fabric搭建一个可靠、高效的溯源系统。该系统能够确保数据的完整性和不可篡改性,并提供溯源功能,帮助企业追踪和验证商品的生产和流通过程,从而确保商品的品质和安全性。 ### 回答2: Hyperledger Fabric是一个开源的区块链平台,可以用于构建各种应用程序,包括溯源系统。 首先,我们需要搭建一个Hyperledger Fabric网络。Fabric网络由多个节点组成,每个节点都可以执行智能合约并参与区块链交易的验证和记录。部署网络需要设置两个主要组件:网络组织和通道。 网络组织是指参与Fabric网络的实体,可以是具有共同目标或业务关系的组织。每个组织可以拥有一个或多个节点,负责参与链码的执行和交易的验证。我们需要为每个组织生成一个身份证书和私钥,并将其加入到网络中。 通道是一个私有的数据传输通道,用于限制特定组织之间的数据共享。我们可以创建一个或多个通道,并将需要共享数据的组织添加到通道中。只有在同一通道上的组织才能看到和交互共享的数据。 接下来,我们需要定义并部署链码。链码是Fabric中的智能合约,用于定义业务逻辑并执行相关操作。通过编写链码,我们可以实现溯源系统所需的功能,如记录和跟踪产品的来源和流向。链码可以使用Go、Java等编程语言进行开发,并在网络中的节点上进行部署和执行。 在溯源系统中,我们可以使用链码来记录产品的生产信息、交易记录和其他关键数据,确保其真实性和透明度。通过查询链码,我们可以追踪产品的整个供应链,并确保其来源和质量。 最后,我们可以使用Fabric提供的应用程序开发框架构建用户界面和交互功能,以便用户能够方便地查看和操作溯源数据。可以使用Web或移动应用程序开发技术来实现这些功能,确保系统的易用性和用户体验。 总之,通过使用Hyperledger Fabric搭建溯源系统,我们可以建立一个安全、透明和可追溯的供应链管理系统,为消费者提供可靠的产品信息和保障。 ### 回答3: Hyperledger Fabric 是一个用于构建基于区块链的分布式应用程序的开源平台。搭建溯源系统时,使用 Hyperledger Fabric 可以提供以下功能和优势。 首先,Hyperledger Fabric 提供了高度可配置的区块链网络。可以根据实际需求来设计和配置私有链或联盟链,这样可以确保只有授权的参与方可以参与到溯源系统中,提高了数据的隐私性和可信任性。 其次,Hyperledger Fabric 使用了“通道”概念来实现不同参与方之间的数据隔离。在溯源系统中,可能涉及到多个参与方,每个参与方只能看到和访问与自己相关的数据,从而保护了商业敏感信息。 另外,Hyperledger Fabric 提供了智能合约的支持。通过编写智能合约,可以实现溯源系统中的业务规则和逻辑。参与方可以通过智能合约执行特定的功能和操作,确保溯源过程的透明性和可验证性。 此外,Hyperledger Fabric 还提供了跨组织验证和控制机制。在溯源系统中,可能涉及到多个参与方之间的数据共享和验证,使用 Hyperledger Fabric 可以实现这些功能,并保护数据的完整性和安全性。 总之,Hyperledger Fabric 是一个非常适合构建溯源系统的开源平台。它提供了可配置的区块链网络、通道隔离、智能合约支持和跨组织验证等功能,能够满足溯源系统的需求,提供安全、可靠和可扩展的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值