跳到主要内容

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