3. Nodejs SDK 使用说明
3.1. 基本概念定义
整体介绍
SDK
是业务模块与长安链交互的桥梁,支持双向TLS
认证,提供安全可靠的加密通信信道。
提供的接口,覆盖合约管理、链配置管理、证书管理、多签收集、各类查询操作、事件订阅、数据归档等场景,满足了不同的业务场景需要。
名词概念说明
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. 示例代码
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. 接口说明
3.5. demo
参考: https://git.chainmaker.org.cn/chainmaker/sdk-nodejs-demo