UNPKG

openchain-sdk-yxl-request

Version:

openchain sd YxL request

317 lines (257 loc) 6.68 kB
# OpenChain Node.js SDK 用户手册 ## 目录 - [简介](#简介) - [安装](#安装) - [快速开始](#快速开始) - [核心功能](#核心功能) - [账户管理](#账户管理) - [交易处理](#交易处理) - [智能合约](#智能合约) - [资产操作](#资产操作) - [CTP10 Token](#ctp10-token) - [错误处理](#错误处理) - [最佳实践](#最佳实践) ## 简介 OpenChain Node.js SDK 是一个完整的开发工具包,为开发者提供了与OpenChain区块链网络交互的全套功能。SDK支持账户管理、交易处理、智能合约部署和调用、资产管理等核心功能。 ### 主要特性 - 完整的账户管理功能 - 安全的交易处理机制 - 智能合约的部署与调用 - 资产发行与转移 - CTP10 Token标准支持 - 丰富的错误处理机制 ## 安装 使用npm安装SDK: ```bash npm install openchain-nodejs-ts ``` ## 快速开始 ### 初始化SDK ```javascript const SDK = require('openchain-nodejs-ts'); const sdk = new SDK({ host: 'http://your-node-url', chainId: 0, }); ``` ### 创建账户 ```javascript const account = sdk.account.create(); console.log('地址:', account.address); console.log('公钥:', account.publicKey); console.log('私钥:', account.privateKey); ``` ## 核心功能 ### 账户管理 账户模块提供了完整的账户管理功能: - 创建账户 - 查询账户信息 - 设置账户权限 - 设置账户元数据 ```javascript // 创建新账户 const newAccount = sdk.account.create(); // 查询账户信息 const accountInfo = yield sdk.account.getInfo(address); // 设置账户元数据 const setMetadataOperation = { sourceAddress: address, metadata: 'Hello, OpenChain', key: 'myKey', value: 'myValue', }; ``` ### 交易处理 交易模块支持: - 构建交易 - 签名交易 - 提交交易 - 查询交易状态 ```javascript // 构建交易 const buildBlobResponse = sdk.transaction.buildBlob({ sourceAddress: sourceAddress, gasPrice: '1000', feeLimit: '1000000', nonce: '1', operations: operations, }); // 签名交易 const signResponse = sdk.transaction.sign({ privateKeys: [privateKey], blob: buildBlobResponse.result.blob, }); // 提交交易 const submitResponse = yield sdk.transaction.submit({ blob: buildBlobResponse.result.blob, signature: signResponse.result.signatures, }); ``` ### 智能合约 智能合约模块提供: - 合约部署 - 合约调用 - 合约查询 ```javascript // 调用合约 const contractCallResponse = yield sdk.contract.call({ contractAddress: 'your-contract-address', sourceAddress: sourceAddress, input: 'your-contract-input', feeLimit: '1000000', gasPrice: '1000', }); // 查询合约信息 const contractInfo = yield sdk.contract.getInfo(contractAddress); ``` ### 资产操作 资产模块支持: - 发行资产 - 转移资产 - 查询资产信息 #### 查询资产信息 ```javascript // 查询账户资产信息 const assetInfo = yield sdk.token.asset.getInfo({ address: 'your-account-address', // 账户地址(必填) code: 'CNY', // 资产代码(必填) issuer: 'issuer-address' // 发行方地址(必填) }); // 返回结果示例 { errorCode: 0, errorDesc: '', result: { assets: [ { key: { code: 'CNY', issuer: 'issuer-address' }, amount: '10000' } ] } } ``` #### 发行资产 ```javascript // 发行资产操作 const issueOperation = { sourceAddress: address, // 发行方地址 code: 'CNY', // 资产代码 amount: '10000', // 发行数量 metadata: 'asset info' // 资产元数据(可选) }; // 构建并提交发行资产交易 const response = yield sdk.operation.asset.issue(issueOperation); ``` #### 转移资产 ```javascript // 转移资产操作 const payAssetOperation = { sourceAddress: sourceAddress, // 源账户地址 destAddress: destAddress, // 目标账户地址 code: 'CNY', // 资产代码 issuer: 'issuer-address', // 资产发行方地址 amount: '100', // 转移数量 metadata: 'transfer info' // 转移说明(可选) }; // 构建并提交转移资产交易 const response = yield sdk.operation.asset.pay(payAssetOperation); ``` ### CTP10 Token CTP10 Token标准实现: - 发行Token - 转移Token - 授权Token - 查询Token信息 ```javascript // 发行Token const issueOperation = { sourceAddress: address, name: 'MyToken', symbol: 'MT', totalSupply: '1000000', decimals: 8, }; // 转移Token const transferOperation = { sourceAddress: sourceAddress, destAddress: destAddress, amount: '100', }; // 授权Token const approveOperation = { sourceAddress: sourceAddress, spender: spenderAddress, amount: '1000', }; // 从授权账户转移Token const transferFromOperation = { sourceAddress: sourceAddress, from: fromAddress, to: toAddress, amount: '100', }; ``` ## 错误处理 SDK提供了标准化的错误处理机制: ```javascript try { const response = yield sdk.account.getInfo(address); if (response.errorCode !== 0) { console.error('错误:', response.errorDesc); } } catch (error) { console.error('异常:', error.message); } ``` 常见错误码: - 0: 操作成功 - 11: 无效地址 - 12: 无效私钥 - 13: 无效公钥 - 14: 无效合约地址 - 15: 无效资产 - 16: 余额不足 - 17: 资产不存在 - 20: 系统错误 ## 最佳实践 1. 安全建议 - 私钥妥善保管,避免明文存储 - 使用环境变量存储敏感配置 - 定期更新SDK版本 - 使用安全的密钥生成方法 - 实现私钥加密存储机制 2. 性能优化 - 合理设置gasPrice和feeLimit - 批量处理交易时使用交易池 - 使用异步操作处理并发请求 - 实现请求重试机制 - 使用连接池管理网络连接 3. 开发建议 - 使用TypeScript获得更好的类型提示 - 遵循Promise/async-await最佳实践 - 实现适当的错误处理机制 - 保持良好的日志记录 - 使用ESLint保持代码质量 - 编写详细的API文档 4. 测试 - 在测试网络中充分测试 - 编写单元测试和集成测试 - 模拟各种异常情况 - 进行性能测试 - 实现自动化测试流程 5. 监控 - 监控交易状态 - 记录错误日志 - 设置适当的告警机制 - 实现健康检查接口 - 监控系统资源使用情况 6. 部署 - 使用容器化部署 - 实现自动化部署流程 - 配置负载均衡 - 实现服务健康检查 - 建立备份和恢复机制