• -------------------------------------------------------------
  • ====================================

18-HyperLedger-Fabric基础-HyperLedger SDK for Node.js 简介

区块链 dewbay 5年前 (2020-01-06) 2046次浏览 已收录 0个评论 扫描二维码

这篇文章,主要是基于HyperLedger SDK for node.js 官方文档以及自己的理解整理而成。

本文将重点介绍HyperLedger SDK 的模块组成。

全文将按照如下结构展开:

18-HyperLedger-Fabric基础-HyperLedger SDK for Node.js 简介
全文结构

一、应用开发模型

我们从程序开发角度来看看 Fabric 权限控制区块链平台的开发。

对于业务开发人员而言,开发工作主要分为应用程序的开发和智能合约的开发。

应用程序的开发需要 SDK,这就是本文接下来要介绍的。

智能合约的开发,可以用 GO 语言来写,实现 ChianCode 接口即可。

这一部分,在《区块链应用 FabCar 详解》中,详细介绍了如何开发 ChainCode。

在正式开始介绍 SDK 之前,我们先从程序开发角度来看看各个模块的交互。

首先应用程序接收用户的请求,然后可能调用智能合约,也可能直接访问区块链。智能合约在执行的过程中可能对区块链进行操作,并产生事件。Hyperledger Fabric 1.0 的应用开发模型如下图所示。

18-HyperLedger-Fabric基础-HyperLedger SDK for Node.js 简介
Hyperledger Fabric 1.0 的应用开发模型

二、Hyperledger SDK for Node.js 简介

The Hyperledger Fabric SDK for Node.js 提供了丰富的 API 接口来和 Hyperledger Fabric v1.0 blockchain 进行交互。该 SDK 被设计用于运行在Node.js javascript 运行环境。

1、SDK 的功能

我们都知道,HyperLedger Fabric 是一个企业级的权限控制区块链系统。我们可以开发应用程序与区块链网络进行交互。SDK 提供的 API 可以实现以下操作:

  • 创建通道
  • 将一个 Peer 节点加入到通道中
  • 在背书节点中安装 ChainCode
  • 在通道中实例化 ChainCode
  • 通过调用智能合约来发起交易
  • 查询区块或者交易的账本

2、HyperLedger Node SDK 的组成

HyperLedger Node SDK 的设计中,将 SDK 设计成了两个隔离的 npm pakages.

  • fabric-client FabricClient 是应用程序的入口模块,提供通道管理、链码管理、数据存储、密码学相关的功能。每个 FabricClient 实例对应一个区块链的网络,包括记账节点、排序节点等。如果应用程序需要访问多个网络,可以建立多个 FabricClient 的实例,不同的实例对应不同的网络。
  • fabric-ca-client FabricCAClient 组件允许应用程序让 peer 节点和应用程序用户在区块链网络上建立可信的身份。它还支持使用交易证书的匿名交易提交。主要提供注册新用户,登记拥有 Fabric CA 签署的注册证书的用户,注销一个已存在的用户等等。如果目标区块链网络配置为信任锚的标准证书颁发机构,则应用程序不需要使用这个包,因此,这个包是可选的。

在这两个 pakages 中,由不同的模块组成。如下图所示:

  • fabric-client 中模块的组成
18-HyperLedger-Fabric基础-HyperLedger SDK for Node.js 简介
fabric-cilent 模块组成

1)FabricClient 模块

FabricClient 是应用程序的入口模块,提供通道管理、链码管理、数据存储、密码学相关的功能。每个 FabricClient 实例对应一个区块链的网络,包括记账节点、排序节点等。如果应用程序需要访问多个网络,可以建立多个 FabricClient 的实例,不同的实例对应不同的网络。

2)Config 模块

初始化 FabricClient 的时候需要离线获取配置信息,包括可信的根证书、排序服务节点证书和 IP 地址、记账节点证书和 IP 地址等,配置模块 Config 读取后传递给 FabricClient。配置信息是动态传递的,SDK 不会持久化存储,应用程序负责维护这些配置信息。

3)Channel 模块

通道是排序服务创建的隔离不同链上交易的实例,加入到不同通道的节点接收到的是不同的交易。通道在配置了排序服务节点和 Peer 节点后需要初始化,初始化的时候给排序服务节点发送获取配置区块的请求。

4)Peer 模块

Peer 节点是发送背书请求、交易查询的节点。Peer 实例包含了节点名称、地址、角色、注册证书(ECert)等信息。

5)Orderer 模块

Orderer 节点是发送交易进行排序的节点。Orderer 实例包含了排序服务节点地址信息,定义了发送原子广播请求和获取区块的接口。

6)User 模块

User 代表了已经生成注册证书和签名密钥的实体,注册证书必须是区块链网络信任的 CA 颁发的证书,只有生成了注册证书的实体才能进行部署链码、提交交易和查询交易等操作。注册证书可以从第三方 CA 获取,也可以通过 fabric-ca 模块获取。

特别说明
用户身份(User Identity)和节点身份(Peer Identity)是有区别的。在 SDK 里面,用户身份能访问私钥信息,是可以进行签名的。而节点身份不能访问私钥,只能验证签名。

7)KeyValueStore 模块

KeyValueStore 提供给应用程序保存敏感信息的功能,比如用户私钥、证书信息等。

8)EventHub 模块

EventHub 封装了与 Peer 节点交互的事件流,接收 Peer 的各种异步通知事件。

9)Logger 模块

Logger 是日志模块,提供了不同的日志接口,基本都是日常开发过程中用到的通用日志模块

  • fabric-ca-client 中模块的组成

ca 是 certificate authority 的缩写,意思是认证授权中心。这一部分主要是提供用户证书的签发和管理。其组成的模块如下图所示:

18-HyperLedger-Fabric基础-HyperLedger SDK for Node.js 简介
fabric-ca-cilent 模块组成

其他的模块在前面已经介绍过,这里主要介绍 fabric-ca-cilent 模块。

1)fabric-ca-cilent 模块

该模块主要负责 Fabric 网络内所有实体(Identity)的身份管理,包括身份的注册、注销等;以及负责证书管理,包括 ECerts(身份证书)、TCerts(交易证书)等的发放和注销;


三、HyperLedger SDK 介绍

对于应用开发人员来说,目前官方提供了多种语言版本的 SDK,主要包括以下几种:

在实际的开发中,可以根据不同的需求,选择不同的 SDK。


参考:

 

转自知乎 苏小乐 :https://www.zhihu.com/people/shan-de-ding-zhu/activities


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:18-HyperLedger-Fabric基础-HyperLedger SDK for Node.js 简介
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址