第二季 第一章 FISCO BCOS Nodejs SDK 基础使用教程

发布于 2020-05-26 18:17:49

本次我们来介绍一下FISCO BCOS 区块链的 Nodejs 版本SDK。

一、准备

1、官方github nodejs sdk readme.md 说明文档:
https://github.com/FISCO-BCOS/nodejs-sdk/blob/master/README.md

2、本地开发工具 vsCode

3、已经部署完成的区块链底层

二、环境准备

• Node.js开发环境
o Node.js >= 8.10.0
o npm >= 5.6.0

如果您没有部署过Node.js环境,可以参考下列部署方式:

o 如果您使用Linux或MacOS:
推荐使用nvm快速部署,使用nvm同时也能够避免潜在的导致Node.js SDK部署失败的权限问题。以部署Node.js 8为例,部署步骤如下:

安装nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash

加载nvm配置

source ~/.$(basename $SHELL)rc

安装Node.js 8

nvm install 8

使用Node.js 8

nvm use 8

o 如果您使用Windows:
请前往Node.js官网下载Windows下的安装包进行安装。

• 基本开发组件

o Python 2(Windows、Linux及MacOS需要)
o g++(Linux及MacOS需要)
o make(Linux及MacOS需要)
o Git(Windows、Linux及MacOS需要)
o Git bash(仅Windows需要)
o MSBuild构建环境(仅Windows需要)

如果您使用Windows且没有部署过MSBuild构建环境,推荐在Windows PowerShell(管理员)中执行以下命令部署:

npm install --global --production windows-build-tools

该命令可能会下载约1GB的依赖项,整个过程可能会持续数十分钟,请耐心等待。
请注意,如果您使用Windows,则如无特殊说明,本文之后所提到的命令均需要在Git bash中执行

三、实战演练

本次测试环境:在window 7环境下,node.js 版本10+,vs 2017,net core 2.2.
如果您所使用的网络不能顺利访问npm官方镜像,请使用其他镜像代替,如淘宝:
npm config set registry https://registry.npm.taobao.org
拉取源代码
git clone https://github.com/FISCO-BCOS/nodejs-sdk.git

部署过程中请确保能够访问外网以能够安装第三方依赖包

npm install
npm run repoclean
npm run bootstrap

1、使用CLI工具

Node.js SDK自带一个CLI工具供用户在命令行中方便快捷地调用管理区块链的Node.js API,同时CLI工具也能够方便地被应用到脚本中。CLI工具在Node.js SDK提供的API的基础上开发而成,是一个展示如何使用Node.js API进行二次开发的范例。

在vscode 用bash打开,如图
95b3622eed30aac49c546a33f8cb39e1.png

2、配置config

加密算法类型

修改配置文件,加密算法类型配置位于packages/cli/conf/config.json文件的encryptType配置项中。如果您需要SDK连接国密FISCO BCOS节点,请将该配置项设置为"SM_CRYPTO",否则请将该设置项设置为"ECDSA"。

私钥

修改配置文件,加密算法类型配置位于packages/cli/conf/config.json文件的privateKey配置项中。您可以直接指定一个随机数(随机数的要求见"CLI工具配置项说明"一节)作为私钥,但更一般地,您也可以指定在该配置项中指定私钥文件以让SDK加载私钥。国密私钥文件可以使用get_gm_account.sh脚本生成,非国密私钥文件可以使用get_account.sh生成。请确保所使用的私钥文件的类型与encryptType配置项中指定的加密算法类型一致。

配置证书

修改配置文件,证书配置位于packages/cli/conf/config.json文件的authentication配置项中。您需要根据您实际使用的证书文件的路径修改该配置项的key、cert及ca配置,其中key为SDK私钥文件的路径,cert为SDK证书文件的路径,ca为链根证书文件的路径,这些文件可以由建链脚本或企业级部署工具自动生成,具体的生成方式及文件位置请参阅上述工具的说明文档。

配置节点IP及Channel端口

修改配置文件,节点IP及端口配置位于packages/cli/conf/config.json文件的nodes配置项中。您需要根据您要连接FISCO BCOS节点的实际配置修改该配置项的ip及port配置,其中ip为所连节点的IP地址,port为节点目录下的 config.ini 文件中的channel_listen_port配置项的值。如果您使用了快速搭链,可以跳过此步。

85ffffb517c5570b5180b64f095d4d25.png

从底层控制台目录下accounts 目录,复制对应的账号到项目配置文件同目录下

67518cdad41de0e4e858af928c953619.png

3、配置权限

如果你的区块链底层没有设置权限,请跳过这一步,笔者是由于底层已经设置过权限,通过链管理员 对新用户进行授权,让它具有部署合约的权利,否则会出现权限异常等问题。

(1)配置权限可以在控制台下用链管理员账号登录后,进行授权.
(2)在WeBASE的私钥管理导入账户,在权限管理对新的用户进行授权。

4、命令操作

配置完成后,即可开始使用CLI工具,CLI工具位于packages/cli/cli.js,所有操作均需要在packages/cli/目录下执行,您需要先切换至该目录:

开启自动补全(仅针对bash及zsh用户,可选)
为方便用户使用CLI工具,CLI工具支持在bash或zsh中进行自动补全,此功能需要手动启用,执行命令:

rcfile=~/.$(basename $SHELL)rc && ./cli.js completion >> $rcfile && source $rcfile

便可启用自动补全。使用CLI工具时,按下Tab键(依据系统配置的不同,可能需要按两下)便可弹出候选命令或参数的列表并自动补全。如图所示:
fe07c121cf77155e1c308ccbc973b2bd.png

5、基础查询

查看所连的FISCO BCOS节点版本
./cli.js getClientVersion

显示外部账户
./cli.js showAccount

获取当前的块高
./cli.js getBlockNumber

进行相关查询,能够正确返回,说明配置成功。

a6a6ee780958c6cd70695d9f53536567.png

6、部署合约

在没有权限的部署操作,
执行命令

./cli.js deploy HelloWorld

结果返回
{"status":"0x19","transactionHash":"0x3bab1f999ce7870b9114bfd0572603ad9a67024a6f98fbff29d075e5f11c83b4"}

查询官方回执状态文档 链接地址请点击我跳转!

0x19 是无权限异常

备注:按要求第三步进行权限授权。

完成授权后,再次进行合约部署测试。

执行部署合约命令

./cli.js deploy HelloWorld

返回结果:
{"status":"0x0","contractAddress":"0x8926f0fdc2c4f4579eda53b7caf9e3cd3f5fe3f7","transactionHash":"0x0166b21f45643b9bf65683fe6ae34fd5d4896dfc49c8a127f7aaa62905c401ae"}

说明部署成功了,其中contractAddress就是合约部署的地址。

可以再次进行合约代码中的set和get方法操作,进行测试证明:

set 合约方法
./cli.js call HelloWorld 0x8926f0fdc2c4f4579eda53b7caf9e3cd3f5fe3f7 set linxuanming

get 合约方法

./cli.js call HelloWorld 0x8926f0fdc2c4f4579eda53b7caf9e3cd3f5fe3f7 get{"status":"0x0","output":{"0":"linxuanming"}}

da2fd23fb6a856e0a184023a6259b5d8.png

1 条评论

发布
问题