跳到主要内容

NodeJs SDK

1. 概述

NodeJs SDK 是业务端与bubi链交互的通道和工具,提供基础的 API 功能,包括提交交易、账户操作、部署和调用合约、各类查询操作等等。NodeJs SDK 的使用方式简单,且对环境兼容友好,既可集成运行在 Node.js 环境,也可以运行在浏览器、Web 应用等环境,更加的灵活方便。

2. 环境准备

2.1. 环境依赖

  • 从 Node.js官网下载并安装 Node.js(版本为6.0或以上,推荐安装v8.17.0)。
# 若已安装,请通过命令查看版本:
node -v

2.2. 下载安装SDK

npm i bubichain-sdk-nodejs

3. 示例代码

此章节提供快速使用SDK实现转账功能的示例代码。

3.1. 转账交易功能

1. 创建区块链账户 2. 激活账户 3. 获取Nonce值 4. 构建操作 5. 序列化交易 6. 签名操作 7. 提交交易

4. 接口使用说明

这里介绍接口的详细使用,首先需要配置节点地址并生成SDK实例,然后调用相应模块的接口,其中包括账户模块、资产模块、合约模块、交易模块、区块模块,接口按使用分类分为查询、广播交易相关接口。

模块描述
transaction交易模块
token资产模块
account账户模块
contract合约模块
block区块模块

4.1. 初始化SDK

初始化SDK时的传入参数 options 是一个对象,options 包含如下参数:

参数类型描述
hostString区块链节点的 IP和端口 或者主机名,例如:布比体验链:https://seed1-node.bubi.cn
  • 示例
const options = {
host: 'http://seed1-node.bubi.cn',
};
const sdk = new BubiChainSDK(options);

4.2. 交易模块

buildBlob

  • 接口说明

    该接口用于序列化交易,生成交易Blob串,便于网络传输

  • 调用方法

    sdk.transaction.buildBlob(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString必填,发起该操作的源账户地址
    args.nonceString必填,待发起的交易序列号,函数里+1,大小限制[1, max(int64)],不能以0开头
    args.gasPriceString必填,交易费用单价,按字节收费,单位UGas,1 Gas = 10^8 UGas,大小限制[1000, max(int64)],不能以0开头
    args.feeLimitString必填,交易要求的最低的手续费,单位UGas,1 Gas = 10^8 UGas,大小限制[1, max(int64)],不能以0开头
    args.operationArray必填,待提交的操作列表
    args.ceilLedgerSeqString选填,距离当前区块高度指定差值的区块内执行的限制,当区块超出当时区块高度与所设差值的和后,交易执行失败。必须大于等于0,是0时不限制,不能以0开头
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    transactionBlobStringTransaction序列化后的16进制字符串
    hashString交易hash
  • 示例

    const args = {
    sourceAddress,
    gasPrice,
    feeLimit,
    nonce,
    operations: [ sendBuOperation ],
    metadata: '6f68206d79207478',
    };
    const blobInfo = sdk.transaction.buildBlob(args);
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_NONCE_ERROR11048Nonce must be between 1 and max(int64)
    INVALID_NONCE_ERROR11048Nonce must be between 1 and max(int64)
    INVALID_ GASPRICE_ERROR11049GasPrice must be between 1000 and max(int64)
    INVALID_FEELIMIT_ERROR11050FeeLimit must be between 1 and max(int64)
    OPERATIONS_EMPTY_ERROR11051Operations cannot be empty
    INVALID_CEILLEDGERSEQ_ERROR11052CeilLedgerSeq must be equal to or greater than 0
    OPERATIONS_ONE_ERROR11053One of the operations cannot be resolved
    SYSTEM_ERROR20000System error

evaluateFee

  • 接口说明

    该接口实现交易的费用评估。

  • 调用方法

    sdk.transaction.evaluateFee(args)

  • 请求参数

    参数类型描述
    args.sourceAddressString必填,发起该操作的源账户地址
    args.nonceString必填,待发起的交易序列号,大小限制[1, max(int64)]
    args.operationArray必填,待提交的操作列表,不能为空
    args.signtureNumberNumber选填,待签名者的数量,默认是1,大小限制[1, max(int32)]
    args.ceilLedgerSeqString选填,距离当前区块高度指定差值的区块内执行的限制,当区块超出当时区块高度与所设差值的和后,交易执行失败。必须大于等于0,是0时不限制
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    feeLimitString交易费用
    gasPriceString打包费用
  • 示例

    const args = {
    sourceAddress: 'adxSa4oENoQCc66JRouZu1rKu4RWjgS69YD4S',
    nonce: '101',
    operations: [sendBuOperation],
    signtureNumber: '1',
    metadata: '54657374206576616c756174696f6e20666565',
    };

    sdk.transaction.evaluateFee(args).then(data => {
    console.log(data);
    });
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_ARGUMENTS15016Arguments of the function are invalid
    SYSTEM_ERROR20000System error

sign

  • 接口说明

    该接口用于实现交易前的签名

  • 调用方法

    sdk.transaction.sign(args);

  • 请求参数

    参数类型描述
    args.blobString必填,待签名的交易Blob
    args.privateKeysArray必填,私钥列表
  • 响应数据

    参数类型描述
    signaturesArray(Signature)签名后的数据列表
  • 示例

    const signatureInfo = sdk.transaction.sign({
    privateKeys: [ 'privbyQCRp7DLqKtRFCqKQJr81TurTqG6UKXMMtGAmPG3abcM9XHjWvq' ],
    blob: '0A246275516E6E5545425245773268423670574847507A77616E5837643238786B364B566370102118C0843D20E8073A56080712246275516E6E5545425245773268423670574847507A77616E5837643238786B364B566370522C0A24627551426A4A443142534A376E7A41627A6454656E416870466A6D7852564545746D78481080A9E08704'
    });
  • 错误码

    异常错误码描述
    INVALID_BLOB_ERROR11056Invalid blob
    PRIVATEKEY_NULL_ERROR11057PrivateKeys cannot be empty
    PRIVATEKEY_ONE_ERROR11058One of privateKeys is invalid

submit

  • 接口说明

    该接口用于实现交易的提交

  • 调用方法

    sdk.transaction.submit(args);

  • 请求参数

    参数类型描述
    args.blobString必填,待签名的交易Blob
    args.signatureArray(Signature)必填,签名列表
  • 响应数据

    参数类型描述
    hashString交易hash
  • 示例

    const args = {
    blob: '0A246275516E6E5545425245773268423670574847507A77616E5837643238786B364B566370102118C0843D20E8073A56080712246275516E6E5545425245773268423670574847507A77616E5837643238786B364B566370522C0A24627551426A4A443142534A376E7A41627A6454656E416870466A6D7852564545746D78481080A9E08704',
    signature: {
    signData: 'D2B5E3045F2C1B7D363D4F58C1858C30ABBBB0F41E4B2E18AF680553CA9C3689078E215C097086E47A4393BCA715C7A5D2C180D8750F35C6798944F79CC5000A',
    publicKey: 'b0011765082a9352e04678ef38d38046dc01306edef676547456c0c23e270aaed7ffe9e31477'
    },
    }

    sdk.transaction.submit(args);
  • 错误码

    异常错误码描述
    INVALID_BLOB_ERROR11056Invalid blob
    INVALID_SIGNATURE_ERROR15027Invalid signature
    SYSTEM_ERROR20000System error

getInfo

  • 接口说明

    该接口用于实现根据交易hash查询交易详情

  • 调用方法

    sdk.transaction.getInfo(hash);

  • 请求参数

    参数类型描述
    args.hashString必填,交易hash
  • 响应数据

    参数类型描述
    totalCountString返回的总交易数
    transactionsArray(Transactionhistory)交易内容
  • 示例

    const hash = '1653f54fbba1134f7e35acee49592a7c29384da10f2f629c9a214f6e54747705';
    sdk.transaction.getInfo(hash).then(data => {
    console.log(data);
    })
  • 错误码

    异常错误码描述
    INVALID_HASH_ERROR11055Invalid transaction hash
    REQUEST_NULL_ERROR12001Request parameter cannot be null
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error
    INVALID_REQUEST_ERROR17004Request is invalid

4.3. 操作模块

accountActivateOperation

  • 接口说明

    该接口用于激活账户

  • 调用方法

    sdk.operation.accountActivateOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,合约触发账户地址
    args.destAddressString必填,目标账户地址
    args.initBalanceString必填,初始化资产,其值只能是包含数字的字符 串且不能以0开头,大小[1, max(int64)],单位是 UGas,1 Gas = 10 ^ 8 UGas
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject激活账户的操作对象
  • 示例

    const args = {
    sourceAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    destAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    initBalance: '1000',
    metadata: 'Test Account Activate',
    };

    let data = sdk.operation.accountActivateOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_DESTADDRESS_ERROR11003Invalid destAddress
    INVALID_INITBALANCE_ERROR11004InitBalance must be between 1 and max(int64)
    SOURCGasDDRESS_EQUAL_DESTADDRESS_ERROR11005SourceAddress cannot be equal to destAddress
    INVALID_METADATA_ERROR15028Invalid metadata
    SYSTEM_ERROR20000System error

accountSetMetadataOperation

  • 接口说明

    该接口用于设置账户metadata

  • 调用方法

    sdk.operation.accountSetMetadataOperation(args);

  • 请求参数

    参数类型描述
    args.keyString必填,metadata的关键词,长度[1, 1024]
    args.valueString选填,metadata的内容,长度[0, 256K]
    args.versionString选填,metadata的版本
    args.deleteFlagBoolean选填,是否删除metadata
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject设置账户metadata的操作对象
  • 示例

    const args = {
    key: 'mykey1',
    value: 'myvalue1',
    version: '0'
    };

    let data = sdk.operation.accountSetMetadataOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_DATAKEY_ERROR11011The length of key must be between 1 and 1024
    INVALID_DATAVALUE_ERROR11012The length of value must be between 0 and 256000
    INVALID_DATAVERSION_ERROR11013The version must be equal to or greater than 0
    SYSTEM_ERROR20000System error

accountSetPrivilegeOperation

  • 接口说明

    该接口用于设置账户权限

  • 调用方法

    sdk.operation.accountSetPrivilegeOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,操作源账户地址
    args.masterWeightString选填,账户自身权重,大小限制[0, max(uint32)]
    args.signersArray(Signer)选填,签名者权重列表
    args.txThresholdString选填,交易门限,大小限制[0, max(int64)]
    args.typeThresholdArray(TypeThreshold)选填,指定类型交易门限
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject(Operation)设置账户权限的操作对象
  • 示例

    const args = {
    typeThresholds: [{
    type: '3',
    threshold: '100',
    }],
    };
    let accountSetPrivilegeOperation = sdk.operation.accountSetPrivilegeOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_MASTERWEIGHT_ERROR11015MasterWeight must be between 0 and max(uint32)
    INVALID_SIGNER_ADDRESS_ERROR11016Invalid signer address
    INVALID_SIGNER_WEIGHT_ERROR11017Signer weight must be between 0 and max(uint32)
    INVALID_TX_THRESHOLD_ERROR11018TxThreshold must be between 0 and max(int64)
    INVALID_OPERATION_TYPE_ERROR11019The type of typeThreshold is invalid
    INVALID_TYPE_THRESHOLD_ERROR11020TypeThreshold must be between 0 and max(int64)
    SYSTEM_ERROR20000System error

gasSendOperation

  • 接口说明

    该接口用于发送Gas(若目标账户未激活,该操作也可使目标账户激活)

  • 调用方法

    sdk.operation.gasSendOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,操作源账户地址
    args.destAddressString必填,目标账户地址
    args.gasAmountString必填,资产发行数量,大小限制[0, max(int64)],单位是UGas,1 Gas = 10^8 UGas
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject(Operation)发送Gas的操作对象
  • 示例

    const args = {
    sourceAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    destAddress: 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2',
    gasAmount: '6000',
    metadata: 'oh my send gas',
    };
    let data = sdk.operation.gasSendOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_DESTADDRESS_ERROR11003Invalid destAddress
    SOURCGasDDRESS_EQUAL_DESTADDRESS_ERROR11005SourceAddress cannot be equal to destAddress
    INVALID_GAS_AMOUNT_ERROR11026GasAmount must be between 1 and max(int64)
    INVALID_ISSUER_ADDRESS_ERROR11027Invalid issuer address
    SYSTEM_ERROR20000System error

assetIssueOperation

  • 接口说明

    该接口用于发行资产

  • 调用方法

    sdk.operation.assetIssueOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,操作源账户地址
    args.codeString必填,资产编码,长度限制[1, 64]
    args.assetAmountString必填,资产发行数量,大小限制[0, max(int64)]
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject(Operation)发行资产的操作对象
  • 示例

    const args = {
    sourceAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    code: 'leo',
    assetAmount: '20000',
    metadata: 'oh my issue asset'
    };
    let data = sdk.operation.assetIssueOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_ASSET_CODE_ERROR11023The length of key must be between 1 and 64
    INVALID_ASSET_AMOUNT_ERROR11024AssetAmount must be between 1 and max(int64)
    SYSTEM_ERROR20000System error

assetSendOperation

  • 接口说明

    该接口用于转移资产 (若目标账户未激活,必须先调用激活账户操作)

  • 调用方法

    sdk.operation.assetSendOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,操作源账户地址
    args.destAddressString必填,目标账户地址
    args.codeString必填,资产编码,长度限制[1, 64]
    args.issuerString必填,资产发行账户地址
    args.assetAmountString必填,资产数量,大小限制[0, max(int64)]
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject(Operation)转移资产的操作对象
  • 示例

    const args = {
    sourceAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    destAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    code: 'leo',
    issuer: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    assetAmount: '100',
    metadata: 'oh my test send asset',
    };
    let data = sdk.operation.assetSendOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_DESTADDRESS_ERROR11003Invalid destAddress
    SOURCGasDDRESS_EQUAL_DESTADDRESS_ERROR11005SourceAddress cannot be equal to destAddress
    INVALID_ASSET_CODE_ERROR11023The length of key must be between 1 and 64
    INVALID_ASSET_AMOUNT_ERROR11024AssetAmount must be between 1 and max(int64)
    INVALID_ISSUER_ADDRESS_ERROR11027Invalid issuer address
    SYSTEM_ERROR20000System error

contractCreateOperation

  • 接口说明

    该接口用于创建合约

  • 调用方法

    sdk.operation.contractCreateOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,操作源账户地址
    args.initBalanceString必填,给合约账户的初始化资产,单位UGas,1 Gas = 10^8 UGas, 大小限制[1, max(int64)]
    args.typeNumber选填,合约的语种,默认是0
    args.payloadString必填,对应语种的合约代码
    args.initInputString选填,合约代码中init方法的入参
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject(Operation)创建合约的操作对象
  • 示例

    const args = {
    sourceAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    initBalance: '1000',
    type: 0,
    payload: 'afasfsaff',
    initInput: 'aaaaa',
    metadata: 'Test contract create operation'
    };
    let data = sdk.operation.assetSendOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_CONTRACTADDRESS_ERROR11037Invalid contract address
    CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR11038ContractAddress is not a contract account
    SYSTEM_ERROR20000System error

contractInvokeByAssetOperation

  • 接口说明

    该接口用于发送资产触发合约 (若合约账户不存在,必须先创建合约账户)

  • 调用方法

    sdk.operation.contractInvokeByAssetOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,操作源账户地址
    args.contractAddressString必填,合约账户地址
    args.codeString选填,资产编码,长度限制[0, 64];当为空时,仅触发合约;
    args.issuerString选填,资产发行账户地址,当null时,仅触发合约
    args.assetAmountString选填,资产数量,大小限制[0, max(int64)],当是0时,仅触发合约。不能以0开头。
    args.inputString选填,待触发的合约的main()入参
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject(Operation)发送资产触发合约的操作对象
  • 示例

    const args = {
    sourceAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    contractAddress: 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2',
    assetAmount: '1000',
    input: 'aaaa',
    code: 'leo',
    issuer: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    metadata: 'Test metadata',
    };
    let data = sdk.operation.contractInvokeByAssetOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_INITBALANCE_ERROR11004InitBalance must be between 1 and max(int64)
    PAYLOAD_EMPTY_ERROR11044Payload must be a non-empty string
    SOURCGasDDRESS_EQUAL_CONTRACTADDRESS_ERROR11040SourceAddress cannot be equal to contractAddress
    INVALID_ASSET_CODE_ERROR11023The length of asset code must be between 0 and 64
    INVALID_CONTRACT_ASSET_AMOUNT_ERROR15031AssetAmount must be between 0 and max(int64)
    INVALID_ISSUER_ADDRESS_ERROR11027Invalid issuer address
    INVALID_INPUT_ERROR15029Invalid input
    SYSTEM_ERROR20000System error

contractInvokeByGasOperation

  • 接口说明

    该接口用于发送Gas触发合约 (若目标账户非合约账户且未激活,该操作也可使目标账户激活)

  • 调用方法

    sdk.operation.contractInvokeByGasOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,操作源账户地址
    args.contractAddressString必填,合约账户地址
    args.gasAmountString选填,资产发行数量,大小限制[0, max(int64)],当0时仅触发合约
    args.inputString选填,待触发的合约的main()入参
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject(Operation)发送Gas触发合约的操作对象
  • 示例

    const args = {
    sourceAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    contractAddress: 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2',
    gasAmount: '0',
    input: 'value',
    metadata: 'Test contract create operation',
    };
    let data = sdk.operation.contractInvokeByGasOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_CONTRACTADDRESS_ERROR11037Invalid contract address
    CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR11038ContractAddress is not a contract account
    SOURCGasDDRESS_EQUAL_CONTRACTADDRESS_ERROR11040SourceAddress cannot be equal to contractAddress
    INVALID_CONTRACT_GAS_AMOUNT_ERROR15030GasAmount must be between 0 and max(int64)
    INVALID_INPUT_ERROR15029Invalid input
    SYSTEM_ERROR20000System error

logCreateOperation

  • 接口说明

    该接口用于操作日志

  • 调用方法

    sdk.operation.logCreateOperation(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,操作源账户地址
    args.topicString必填,日志主题,长度限制[1, 128]
    args.datasArray必填,日志内容,每个字符串长度限制[1, 1024]
    args.metadataString选填,备注
  • 响应数据

    参数类型描述
    operationObject(Operation)日志的操作对象
  • 示例

    const args = {
    sourceAddress: 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t',
    topic: 'test topic',
    data: 'test data',
    metadata: 'Test metadata',
    };
    let data = sdk.operation.logCreateOperation(args)
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_LOG_TOPIC_ERROR11045The length of key must be between 1 and 128
    INVALID_LOG_DATA_ERROR11046The length of value must be between 1 and 1024
    SYSTEM_ERROR20000System error

4.4. 账户模块

create

  • 接口说明

    该接口用于生成区块链私钥及地址

  • 调用方法

    sdk.account.create();

  • 响应数据

    参数类型描述
    privateKeyString私钥
    publicKeyString公钥
    addressString地址
  • 示例

    sdk.account.create().then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });

checkValid

  • 接口说明

    该接口用于检查区块链账户地址的有效性

  • 调用方法

    sdk.account.checkValid(address)

  • 请求参数

    参数类型描述
    addressString必填,待检查的区块链账户地址
  • 响应数据

    参数类型描述
    isValidBoolean是否有效
  • 示例

    const address = 'adxSdV6qWfyhJAmzrPbv3btsPPT6aFrqBku3C';

    sdk.account.checkValid(address).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    SYSTEM_ERROR20000System error

getInfo

  • 接口说明

    该接口用于获取指定的账户信息

  • 调用方法

    sdk.account.getInfo(address)

  • 请求参数

    参数类型描述
    addressString必填,待查询的区块链账户地址
  • 响应数据

    参数类型描述
    addressString账户地址
    balanceString账户余额,单位UGas,1 Gas = 10^8 UGas, 必须大于0
    nonceString账户交易序列号,必须大于0
    privObject (Priv)账户权限
  • 示例

    const address = 'adxSdV6qWfyhJAmzrPbv3btsPPT6aFrqBku3C';

    sdk.account.checkValid(address).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    SYSTEM_ERROR20000System error

getNonce

  • 接口说明

    该接口用于获取指定账户的nonce值

  • 调用方法

    sdk.account.getNonce(address)

  • 请求参数

    参数类型描述
    addressString必填,待查询的区块链账户地址
  • 响应数据

    参数类型描述
    nonceString账户交易序列号
  • 示例

    const address = 'adxSk9MTT6aGoMxjAxuEGt1agRvWWnng25RF2';

    sdk.account.getNonce(address).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_ADDRESS_ERROR11006Invalid address
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getBalance

  • 接口说明

    该接口用于获取指定账户的Gas的余额

  • 调用方法

    sdk.account.getBalance(address)

  • 请求参数

    参数类型描述
    addressString必填,待查询的区块链账户地址
  • 响应数据

    参数类型描述
    balanceStringGas的余额,单位UGas,1 Gas = 10^8 UGas,
  • 示例

    const address = 'adxSk9MTT6aGoMxjAxuEGt1agRvWWnng25RF2';
    const info = sdk.account.getBalance(address);
  • 错误码

    异常错误码描述
    INVALID_ADDRESS_ERROR11006Invalid address
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getAssets

  • 接口说明

    该接口用于获取指定账户的所有资产信息

  • 调用方法

    sdk.account.getAssets(address)

  • 请求参数

    参数类型描述
    addressString必填,待查询的区块链账户地址
  • 响应数据

    参数类型描述
    assetArray(AssetInfo)账户资产
  • 示例

    const address = 'adxSmZHjDopQam2y5ntvHhGk4XEkiXc9MnFWZ';

    sdk.account.getAssets(address).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_ADDRESS_ERROR11006Invalid address
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    NO_ASSET_ERROR11009The account does not have the asset
    SYSTEM_ERROR20000System error

getMetadata

  • 接口说明

    该接口用于获取指定账户的metadata信息

  • 调用方法

    sdk.account.getMetadata(args)

  • 请求参数

    参数类型描述
    args.addressString必填,待查询的账户地址
    args.keyString选填,metadata关键字,长度限制[1, 1024]
  • 响应数据

    参数类型描述
    metadataObject(MetadataInfo)账户备注
  • 示例

    const args = {
    address: 'adxSmZHjDopQam2y5ntvHhGk4XEkiXc9MnFWZ',
    key: 'test'
    };

    sdk.account.getMetadata(args).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_ADDRESS_ERROR11006Invalid address
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    NO_METADATA_ERROR11010The account does not have the metadata
    INVALID_DATAKEY_ERROR11011The length of key must be between 1 and 1024
    SYSTEM_ERROR20000System error

4.5. 资产模块

getInfo

  • 接口说明

    该接口用于获取指定账户的指定资产信息

  • 调用方法

    sdk.token.asset.getInfo(args);

  • 请求参数

    参数类型描述
    args.addressString必填,待查询的账户地址
    args.codeString必填,资产编码,长度限制[1, 64]
    args.issuerString必填,资产发行账户地址
  • 响应数据

    参数类型描述
    assetObject(AssetInfo)账户资产
  • 示例

    const args = {
    address: 'adxSmZHjDopQam2y5ntvHhGk4XEkiXc9MnFWZ',
    code: 'TST',
    issuer: 'adxSdV6qWfyhJAmzrPbv3btsPPT6aFrqBku3C',
    };

    sdk.token.asset.getInfo(args).then(data => {
    console.log(data);
    });
  • 错误码

    异常错误码描述
    INVALID_ADDRESS_ERROR11006Invalid address
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    INVALID_ASSET_CODE_ERROR11023The length of asset code must be between 1 and 64
    INVALID_ISSUER_ADDRESS_ERROR11027Invalid issuer address
    SYSTEM_ERROR20000System error

4.6. 合约模块

checkValid

  • 接口说明

    该接口用于检测合约账户的有效性

  • 调用方法

    sdk.contract.checkValid(contractAddress);

  • 请求参数

    参数类型描述
    contractAddressString待检测的合约账户地址
  • 响应数据

    参数类型描述
    isValidBoolean是否有效
  • 示例

    const contractAddress = 'adxSYQ8iMyZ7Dkj1oX1kjGMV55WXvoPKcLEK3';

    sdk.contract.checkValid(contractAddress).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_CONTRACTADDRESS_ERROR11037Invalid contract address
    CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR11038ContractAddress is not a contract account
    SYSTEM_ERROR20000System error

getInfo

  • 接口说明

    该接口用于查询合约代码

  • 调用方法

    sdk.contract.getInfo(contractAddress);

  • 请求参数

    参数类型描述
    contractAddressString待查询的合约账户地址
  • 响应数据

    参数类型描述
    contractObject(ContractInfo)合约信息
  • 示例

    const contractAddress = 'adxSYQ8iMyZ7Dkj1oX1kjGMV55WXvoPKcLEK3';

    sdk.contract.getInfo(contractAddress).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_CONTRACTADDRESS_ERROR11037Invalid contract address
    CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR11038contractAddress is not a contract account
    NO_SUCH_TOKEN_ERROR11030No such token
    GET_TOKEN_INFO_ERROR11066Failed to get token info
    SYSTEM_ERROR20000System error

getAddress

  • 接口说明

    该接口用于查询合约地址

  • 调用方法

    sdk.contract.getAddress(hash);

  • 请求参数

    参数类型描述
    hashString创建合约交易的hash
  • 响应数据

    参数类型描述
    contractAddressListArray(ContractAddressInfo)合约地址列表
  • 示例

    const hash = 'f298d08ec3987adc3aeef73e81cbb49cbad2316145ba190700de2d78657880c0';
    sdk.contract.getAddress(hash).then(data => {
    console.log(data);
    })
  • 错误码

    异常错误码描述
    INVALID_HASH_ERROR11055Invalid transaction hash
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

call

  • 接口说明

    该接口用于调试合约代码

  • 调用方法

    sdk.contract.call(args);

  • 请求参数

    参数类型描述
    args.sourceAddressString选填,合约触发账户地址
    args.contractAddressString选填,合约账户地址,与code不能同时为空
    args.codeString选填,合约代码,与contractAddress不能同时为空,长度限制[1, 64]
    args.inputString选填,合约入参
    args.contractBalanceString选填,赋予合约的初始 Gas 余额, 单位UGas,1 Gas = 10^8 UGas, 大小限制[1, max(int64)]
    args.optTypeNumber必填,0: 调用合约的读写接口 init, 1: 调用合约的读写接口 main, 2 :调用只读接口 query
    args.feeLimitString交易要求的最低手续费, 大小限制[1, max(int64)],不能以0开头
    args.gasPriceString交易费用单价,按字节收费,大小限制[1000, max(int64),不能以0开头
  • 响应数据

    参数类型描述
    logsObject日志信息
    queryRetsArray查询结果集
    statObject(ContractStat)合约资源占用信息
    txsArray(TransactionEnvs)交易集
  • 示例

    const args = {
    code: '"use strict";log(undefined);function query() { getBalance(thisAddress); }',
    feeLimit: '1000000000',
    optType: 2
    }

    sdk.contract.call(args).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_SOURCGasDDRESS_ERROR11002Invalid sourceAddress
    INVALID_CONTRACTADDRESS_ERROR11037Invalid contract address
    CONTRACTADDRESS_CODE_BOTH_NULL_ERROR11063ContractAddress and code cannot be empty at the same time
    INVALID_OPTTYPE_ERROR11064OptType must be between 0 and 2
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

4.7. 区块模块

getNumber

  • 接口说明

    该接口用于查询最新的区块高度

  • 调用方法

    sdk.block.getNumber();

  • 响应数据

    参数类型描述
    blockNumberString最新的区块高度,对应底层字段seq
  • 示例

    sdk.block.getNumber().then((result) => {
    console.log(result);
    }).catch((err) => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

checkStatus

  • 接口说明

    该接口用于检查本地节点区块是否同步完成

  • 调用方法

    sdk.block.checkStatus();

  • 响应数据

    参数类型描述
    isSynchronousBoolean区块是否同步
  • 示例

    sdk.block.checkStatus().then((result) => {
    console.log(result);
    }).catch((err) => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getTransactions

  • 接口说明

    该接口用于查询指定区块高度下的所有交易

  • 调用方法

    sdk.block.getTransactions(blockNumber);

  • 请求参数

    参数类型描述
    blockNumberNumber必填,待查询的区块高度,必须大于0
  • 响应数据

    参数类型描述
    totalCountString返回的总交易数
    transactionsArray(TransactionHistory)交易内容
  • 示例

    sdk.block.getTransactions(100).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_BLOCKNUMBER_ERROR11060BlockNumber must bigger than 0
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    QUERY_RESULT_NOT_EXIST15014Query result does not exist
    SYSTEM_ERROR20000System error

getInfo

  • 接口说明

    该接口用于获取区块信息

  • 调用方法

    sdk.block.getInfo(blockNumber);

  • 请求参数

    参数类型描述
    blockNumberNumber必填,待查询的区块高度,必须大于0
  • 响应数据

    参数类型描述
    closeTimeString区块关闭时间
    numberString区块高度
    txCountString交易总量
    versionString区块版本
  • 示例

    sdk.block.getInfo(100).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_BLOCKNUMBER_ERROR11060BlockNumber must bigger than 0
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getLatestInfo

  • 接口说明

    该接口用于获取最新区块信息

  • 调用方法

    sdk.block.getLatestInfo();

  • 响应数据

    参数类型描述
    closeTimeString区块关闭时间
    numberString区块高度,对应底层字段seq
    txCountString交易总量
    versionString区块版本
  • 示例

    sdk.block.getLatestInfo().then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getValidators

  • 接口说明

    该接口用于获取指定区块中所有验证节点数

  • 调用方法

    sdk.block.getValidators(blockNumber);

  • 请求参数

    参数类型描述
    blockNumberNumber必填,待查询的区块高度,必须大于0
  • 响应数据

    参数类型描述
    validatorsArray(ValidatorInfo)验证节点列表
  • 示例

    sdk.block.getValidators(100).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_BLOCKNUMBER_ERROR11060BlockNumber must bigger than 0
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getLatestValidators

  • 接口说明

    该接口用于获取最新区块中所有验证节点数

  • 调用方法

    sdk.block.getLatestValidators();

  • 响应数据

    参数类型描述
    validatorsArray(ValidatorInfo)验证节点列表
  • 示例

    sdk.block.getLatestValidators().then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getReward

  • 接口说明

    该接口用于获取指定区块中的区块奖励和验证节点奖励

  • 调用方法

    sdk.block.getReward(blockNumber);

  • 请求参数

    参数类型描述
    blockNumberNumber必填,待查询的区块高度,必须大于0
  • 响应数据

    参数类型描述
    blockRewardString区块奖励数
    validatorsRewardArray(ValidatorReward)验证节点奖励情况
  • 示例

    sdk.block.getReward(100).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_BLOCKNUMBER_ERROR11060BlockNumber must bigger than 0
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getLatestReward

  • 接口说明

    获取最新区块中的区块奖励和验证节点奖励

  • 调用方法

    sdk.block.getLatestReward();

  • 响应数据

    参数类型描述
    blockRewardString区块奖励数
    validatorsRewardArray(ValidatorReward)验证节点奖励情况
  • 示例

    sdk.block.getLatestReward().then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getFees

  • 接口说明

    获取指定区块中的账户最低资产限制和费用单价,按字节收费

  • 调用方法

    sdk.block.getFees(blockNumber);

  • 请求参数

    参数类型描述
    blockNumberNumber必填,待查询的区块高度,必须大于0
  • 响应数据

    参数类型描述
    feesObject费用
  • 示例

    sdk.block.getFees(100).then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    INVALID_BLOCKNUMBER_ERROR11060BlockNumber must bigger than 0
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

getLatestFees

  • 接口说明

    该接口用于获取最新区块中的账户最低资产限制和费用单价,按字节收费

  • 调用方法

    sdk.block.getLatestFees();

  • 响应数据

    参数类型描述
    feesObject费用
  • 示例

    sdk.block.getLatestFees().then(result => {
    console.log(result);
    }).catch(err => {
    console.log(err.message);
    });
  • 错误码

    异常错误码描述
    CONNECTNETWORK_ERROR11007Failed to connect to the network
    SYSTEM_ERROR20000System error

4.8. 数据对象

Priv

成员类型描述
masterWeightString账户自身权重,大小限制[0, (max(int32) * 2L + 1)]
signersSigner[]签名者权重列表
thresholdThreshold门限

Signer

成员类型描述
addressString签名者区块链账户地址
weightString签名者权重,大小限制[0, (max(int32) * 2L + 1)]

Threshold

成员类型描述
txThresholdString交易默认门限,大小限制[0, max(int64)]
typeThresholdsTypeThreshold[]不同类型交易的门限

TypeThreshold

成员类型描述
typeString操作类型,必须大于0
thresholdString门限值,大小限制[0, max(int64)]

AssetInfo

成员类型描述
keyKey资产惟一标识
assetAmountString资产数量

Key

成员类型描述
codeString资产编码
issuerString资产发行账户地址

ContractInfo

成员类型描述
typeInteger合约类型,默认0
payloadString合约代码

MetadataInfo

成员类型描述
keyStringmetadata的关键词
valueStringmetadata的内容
versionStringmetadata的版本

ContractAddressInfo

成员类型描述
contractAddressString合约地址
operationIndexInteger所在操作的下标

ContractStat

成员类型描述
applyTimeString接收时间
memoryUsageString内存占用量
stackUsageString堆栈占用量
stepString几步完成

TransactionEnvs

成员类型描述
transactionEnvTransactionEnv交易

TransactionEnv

成员类型描述
transactionTransactionInfo交易内容
triggerContractTrigger合约触发者

TransactionInfo

成员类型描述
sourceAddressString交易发起的源账户地址
feeLimitString交易要求的最低费用
gasPriceString交易费用单价,按字节收费,单位UGas,1 Gas = 10^8 UGas
nonceString交易序列号
operationsOperation[]操作列表

ContractTrigger

成员类型描述
transactionTriggerTransaction触发交易

Operation

成员类型描述
typeInteger操作类型
sourceAddressString操作发起源账户地址
metadataString备注
createAccountOperationCreateAccount创建账户操作
issueAssetOperationIssueAsset发行资产操作
payAssetOperationPayAsset转移资产操作
payCoinOperationPayCoin发送Gas操作
setMetadataOperationSetMetadata设置metadata操作
setPrivilegeOperationSetPrivilege设置账户权限操作
logOperationLog记录日志

TriggerTransaction

成员类型描述
hashString交易hash

OperationCreateAccount

成员类型描述
destAddressString目标账户地址
contractContract合约信息
privPriv账户权限
metadataMetadataInfo[]账户
initBalanceString账户资产, 单位UGas,1 Gas = 10^8 UGas,
initInputString合约init函数的入参

Contract

成员类型描述
typeInteger合约的语种,默认不赋值
payloadString对应语种的合约代码

MetadataInfo

成员类型描述
keyStringmetadata的关键词
valueStringmetadata的内容
versionStringmetadata的版本

OperationIssueAsset

成员类型描述
codeString资产编码
assetAmountString资产数量

OperationPayAsset

成员类型描述
destAddressString待转移的目标账户地址
assetAssetInfo账户资产
inputString合约main函数入参

OperationPayCoin

成员类型描述
destAddressString待转移的目标账户地址
gasAmountString待转移的Gas数量
inputString合约main函数入参

OperationSetMetadata

成员类型描述
keyStringmetadata的关键词
valueStringmetadata的内容
versionStringmetadata的版本
deleteFlagboolean是否删除metadata

OperationSetPrivilege

成员类型描述
masterWeightString账户自身权重,大小限制[0, (max(int32) * 2L + 1)]
signersSigner[]签名者权重列表
txThresholdString交易门限,大小限制[0, max(int64)]
typeThresholdTypeThreshold指定类型交易门限

OperationLog

成员类型描述
topicString日志主题
dataString[]日志内容

TestTx

成员类型描述
transactionEnvTestTransactionFees评估交易费用

TestTransactionFees

成员类型描述
transactionFeesTransactionFees交易费用

TransactionFees

成员类型描述
feeLimitString交易要求的最低费用
gasPriceString交易费用单价,按字节收费,单位UGas,1 Gas = 10^8 UGas

Signature

成员类型描述
signDataString签名后数据
publicKeyString公钥

TransactionHistory

成员类型描述
actualFeeString交易实际费用
closeTimeString交易关闭时间
errorCodeString交易错误码
errorDescString交易描述
hashString交易hash
ledgerSeqString区块序列号
transactionTransactionInfo交易内容列表
signaturesSignature[]签名列表
txSizeString交易大小

ValidatorReward

成员类型描述
validatorString验证节点地址
rewardString验证节点奖励

ValidatorInfo

成员类型描述
addressString共识节点地址
plegeCoinAmountString验证节点押金

Fees

成员类型描述
baseReserveString账户最低资产限制
gasPriceString交易费用单价,按字节收费,单位UGas,1 Gas = 10^8 UGas