3. Nodejs SDK 使用说明

3.1. 基本概念定义

  1. 整体介绍

SDK是业务模块与长安链交互的桥梁,支持双向TLS认证,提供安全可靠的加密通信信道。

提供的接口,覆盖合约管理、链配置管理、证书管理、多签收集、各类查询操作、事件订阅、数据归档等场景,满足了不同的业务场景需要。

  1. 名词概念说明

  • Node(节点):代表一个链节点的基本信息,包括:节点地址、连接数、是否启用TLS认证等信息

  • ChainClient(链客户端):所有客户端对链节点的操作接口都来自ChainClient

  • 压缩证书:可以为ChainClient开启证书压缩功能,开启后可以减小交易包大小,提升处理性能

3.2. 环境准备

3.2.1. 软件依赖

nodejs

nodejs 14.0.0+

下载地址:https://nodejs.org/dist/

若已安装,请通过命令查看版本:

$ node --version
v14.0.0

3.2.2. 下载安装

$ git clone -b v2.0.0  --depth=1 https://git.chainmaker.org.cn/chainmaker/sdk-nodejs.git

3.3. 怎么使用SDK

3.3.1. 示例代码

注: 下方文档示例可能过时,以gitlab示例为准。

evm和其他合约使用方法在构建参数时有区别。

evm的可参考示例:TestEvmContract

3.3.1.1. 创建节点

更多内容请参看:sdkInit.js

// 创建节点
this.node = new Node(nodeConfigArray, timeout);

3.3.1.2. 参数形式创建ChainClient

更多内容请参看:sdkInit.js

// 创建ChainClient
const ChainClient = new Sdk(chainID, orgID, userKeyPathFile, userCertPathFile, nodeConfigArray, 30000, archiveConfig);

3.3.1.3. 以配置文件形式创建ChainClient

更多内容请参看:sdkinit.js

const ChainClient = new LoadFromYaml(path.join(__dirname, './sdk_config.yaml'));

3.3.1.4. 创建合约

更多内容请参看:testUserContractMgr.js

  const testCreateUserContract = async (sdk, contractName, contractVersion, contractFilePath) => {
		const response = await sdk.userContractMgr.createUserContract({
			contractName,
			contractVersion,
			contractFilePath,
			runtimeType: utils.common.RuntimeType.GASM,
			params: {
				key1: 'value1',
				key2: 'value2',
			},
		});
		return response;
	};

3.3.1.5. 调用合约

更多内容请参看:testUserContractMgr.js

  const testInvokeUserContract = async (sdk, contractName) => {
		const response = await sdk.callUserContract.invokeUserContract({
			contractName, method: 'save', params: {
				file_hash: '1234567890',
				file_name: 'test.txt',
			},
		});
		return response;
	};

3.3.2. 更多示例和用法

更多示例和用法,请参看单元测试用例

安装mocha:

$ npm install -g mocha

使用脚本搭建chainmaker运行环境(4组织4节点),将build文件中的cryptogen复制到当前项目的test/testFile文件中

运行测试命令:

$ npm test
功能 单测代码
基础配置 sdkInit.js
用户合约 userContract.js
系统合约 systemContract.js
链配置 chainConfig.js
证书管理 cert.js
消息订阅 subscribe.js

3.4. 接口说明

请参看:《chainmaker-nodejs-sdk》

3.5. demo

参考: https://git.chainmaker.org.cn/chainmaker/sdk-nodejs-demo