更新时间:2023-03-27 GMT+08:00

Nodejs SDK Demo

本Demo提供了一个nodejs的链代码,并提供基于fabric-nodejs-sdk的程序调用链代码,向您演示如何使用nodejs的sdk来访问区块链。有关Fabric nodejs SDK的接口使用说明请参考官方文档:https://hyperledger.github.io/fabric-sdk-node/release-1.4/index.html

只用于场景体验,不用于实际应用。

准备工作

准备顺序

操作指导

说明

1

安装开发工具

请从官网下载并安装nodejs运行环境,地址为https://nodejs.org/en/download/

2

下载Demo项目代码

项目代码:nodejs-demo.zip

创建区块链实例

  1. 登录区块链服务管理控制台。
  2. 单击页面右上角的“创建区块链实例”。
  3. 根据界面提示,配置区块链基本信息,参数如表1所示。

    为了保证示例Demo成功运行,请在参数配置时按照表格中的参数值填写。

    表1 基本信息配置

    参数

    参数值

    区域

    使用默认区域

    企业项目

    default

    区块链实例名称

    node-sdk-demo

    版本类型

    专业版

    区块链类型

    私有链

    Hyperledger Fabric增强版内核

    v2.2

    共识策略

    Raft(CFT)

    资源初始密码

    请自行设置

    资源初始密码确认

    请自行设置

  4. 单击“下一步:资源配置”,进行资源配置,参数如表2所示。

    表2 资源配置

    参数

    示例

    环境资源

    选择“自定义环境”。

    集群

    创建新的CCE集群

    可用区

    请自行选择

    云主机规格

    4核/8GB

    云主机个数

    1

    高可用

    虚拟私有云

    系统自动创建VPC

    所在子网

    系统自动创建子网

    云主机登录方式

    密码

    root密码

    如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。

    确认密码

    -

    是否使用CCE集群节点弹性IP

    弹性IP计费方式

    使用默认规格

    弹性IP带宽

    5 Mbit/s

  5. 单击“下一步:区块链配置”,进行区块链配置,参数如表3所示。

    表3 区块链配置

    参数

    示例

    区块链配置

    选择“自定义配置”。

    区块链管理初始密码

    如果填写该项,则以填写值为准,如果不填写,则以资源初始密码为准。

    区块链管理确认密码

    -

    存储卷类型

    极速文件存储卷

    节点组织存储容量 (GB)

    使用默认规格。

    账本数据存储方式

    选择“文件数据库(GoLevelDB)”

    peer节点组织

    系统已默认创建1个节点组织,名称为organization,将节点数量修改为1。

    通道配置

    organization节点组织已默认添加进至通道中,保持默认即可。

    共识节点数量

    使用默认。

    安全机制

    ECDSA

    须知:

    安全机制仅支持选择ECDSA。

    区块生成配置

    添加RESTful API支持

  6. 单击“下一步:确认规格”。
  7. 确认配置信息无误后,根据界面提示创建区块链实例。

    请等待数分钟,安装页面提示安装成功,查看实例状态变为“正常”后,表示区块链实例部署完成。

安装及实例化链代码

  1. 登录区块链服务管理控制台。
  2. 单击左侧导航栏中的“实例管理”。
  3. 在新创建的实例卡片中,单击“区块链管理”,登录链代码管理页面。
  4. 在登录页面输入用户名、密码,单击“登录”。

    用户名为admin,密码为您在创建区块链实例时设置的区块链管理初始密码,如果没有设置区块链管理初始密码,则以资源初始密码为准。

  5. 在链代码管理页面,单击页面左上角的

    安装参数如下:

    参数

    链代码名称

    bcsysq

    链代码版本

    1.0

    账本数据存储方式

    文件数据库(goleveldb)

    选择全部Peer节点

    勾选

    组织&Peer节点

    peer-0

    链代码语言

    nodejs

    链代码文件

    下载示例链代码文件:nodejs-chaincode.zip

    链代码描述

    根据需要填写相关描述。

  6. 单击“安装”完成链代码安装。
  7. 链代码安装完成后,在链代码列表的“操作”列,单击“实例化”。

    实例化参数如下:

    参数

    链代码名称

    bcsysq

    实例化通道

    channel

    链代码版本

    1.0

    初始化函数

    init

    链代码参数

    a,200,b,250

    背书策略

    任意组织背书

    背书组织列表

    organization

    隐私保护配置

部署应用

  1. 下载Demo项目工程:nodejs-demo.zip,并将Demo项目代码包下载解压到本地并使用IDE打开。

    本Demo是一个nodejs编写的js脚本,它包含了fabric-client库,实现链代码a给b转账的功能。请使用个人喜欢的IDE打开。项目包含如下内容:

    表4 项目内容

    文件

    说明

    invoke.js

    调用链代码,实现a给b转账 。

    query.js

    查询链代码,查询a的账户余额。

    sdk-config.js

    解析从BCS控制台下载的区块链网络配置文件sdk-config.json。

    sdk-config.json

    区块链网络配置信息

  2. 下载SDK和证书。

    1. 在“实例管理”界面,在实例卡片中,单击“获取客户端配置”。
    2. 勾选“SDK文件”,SDK配置参数如下:

      参数名称

      说明

      链代码名称

      bcsysq

      须知:

      链代码名称需要和链代码安装&实例化时的一致。

      证书存放路径

      请指定一个证书存放路径,本例中为:E:\code\temp

      通道名称

      channel

      组织&Peer节点

      保持系统默认

      勾选“共识节点证书”。

      勾选“Peer节点证书”,指定节点组织选择organization,勾选“管理员证书”。

    3. 单击“下载”,下载SDK配置文件、node-sdk-demo-orderer组织的管理员证书和organization组织的管理员证书。

  3. 复制并解压。

    下载SDK和证书步骤中的zip文件解压,将orderer文件夹、peer文件夹内容全部复制到证书的存放路径下;将sdk-config.json文件复制到证书的存放路径下,并且命名为node-sdk-demo-sdk-config.json。

调试应用

  1. 打开sdk-config.js,修改SDK配置文件的路径为node-sdk-demo-sdk-config.json的路径。

  2. 在项目工程所在路径执行node query.js,查询a用户的余额(如图所示a的余额为10000)。

  3. 在项目所在的路径执行node invoke.js,执行链码调用,实现a给b转账。如图所示即调用成功。

  4. 再次查询a的余额(如图所示a的余额为9990),可以看到转账成功。

说明

  • 本Demo借鉴了Fabric社区的Demo,更多的样例可以参考https://github.com/hyperledger/fabric-samples
  • 如何在链代码中自定义npm仓库?
    • 在链代码包的文件路径下创建一个名为 .npmrc 的个人配置文件,内容为:registry=https://registry.npm.taobao.org/
    • 这样在链代码容器实例化的时候就会从指定的仓库里面拉取类库。
    • 通过npm config get registry查看是否正确: