密钥托管模式

本节介绍BaaS REST在密钥托管模式下支持的查询类、交易类的接口能力,并提供各接口能力的使用示例。

查询类接口

说明

由于查询类接口不存在签名,因此和链上账户无关,密钥非托管模式下的查询类接口对于托管账号依然能够使用。

查询交易回执

根据交易Hash查询交易回执

根据交易Hash查询交易回执内容,方法名称:QUERYRECEIPT

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYRECEIPT

    bizid

    string

    链ID

    hash

    string

    交易hash

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

  • 请求示例

    CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                    method(Method.QUERYRECEIPT).    // 查询交易回执方法标识
                    hash(txHash).                   // 交易Hash,16进制编码字符串
                    bizid(blockChainId).            // 链ID,若未设置:使用客户端配置默认链
                    secretKey(secretKey).           // TEE链加密密钥
                    build();
     BaseResp baseResp = restClient.chainCallForBiz(callRestBizParam);
     if (baseResp.isSuccess()) {
          // 解析返回的交易回执
          ReceiptDecoration receipt = JSON.parseObject(baseResp.getData(), ReceiptDecoration.class);
          // ...
     }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为ReceiptDecoration结构,result为业务结果

根据订单ID查询交易回执

根据订单ID查询交易回执内容,方法名称:QUERYRECEIPTBIZ

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYRECEIPTBIZ

    tenantId

    string

    租户ID

    bizid

    string

    链ID

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

  • 请求示例

            CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                    method(Method.QUERYRECEIPTBIZ). // 查询交易回执方法标识
                    orderId(orderId).               // 业务方的唯一性请求标识
                    tenantid(tenantId).             //租户ID
                    bizid(blockChainId).            // 链ID,若未设置:使用客户端配置默认链
                    secretKey(secretKey).           // TEE链加密密钥
                    build();
            BaseResp baseResp = restClient.chainCallForBiz(callRestBizParam);
            if (baseResp.isSuccess()) {
                // 解析返回的交易回执
                ReceiptDecoration receipt = JSON.parseObject(baseResp.getData(), ReceiptDecoration.class);
                // ...
            }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为ReceiptDecoration结构,result为业务结果

查询交易

根据交易Hash查询交易

根据交易Hash查询交易内容,方法名称:QUERYTRANSACTION

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYTRANSACTION

    bizid

    string

    链ID

    hash

    string

    交易hash

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

  • 请求示例

    CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                    method(Method.QUERYTRANSACTION).    // 查询交易方法标识
                    hash(txHash).                   // 交易Hash,16进制编码字符串
                    bizid(blockChainId).            // 链ID,若未设置:使用客户端配置默认链
                    secretKey(secretKey).           // TEE链加密密钥
                    build();
     
    BaseResp baseResp=restClient.chainCallForBiz(param);
    if(baseResp.isSuccess()) {
            // 解析返回的交易内容
            ReplyTransaction transaction = JSON.parseObject(resp.getData(), ReplyTransaction.class);
            TransactionDO transactionDO = transaction.getTransactionDO();
            // ...
    }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为ReplyTransaction结构,result为业务结果

根据订单ID查询交易

根据订单ID查询交易内容,方法名称:QUERYTRANSACTIONBIZ

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYTRANSACTIONBIZ

    tenantId

    string

    租户ID

    bizid

    string

    链ID

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

  • 请求示例

    CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                    method(Method.QUERYTRANSACTIONBIZ). // 查询交易方法标识
                    orderId(orderId).               // 业务方的唯一性请求标识
                    tenantid(tenantId).             //租户ID
                    bizid(blockChainId).            // 链ID,若未设置:使用客户端配置默认链
                    secretKey(secretKey).           // TEE链加密密钥
                    build();
            
    BaseResp baseResp=restClient.chainCallForBiz(param);
    if(baseResp.isSuccess()) {
            // 解析返回的交易内容
            ReplyTransaction transaction = JSON.parseObject(resp.getData(), ReplyTransaction.class);
            TransactionDO transactionDO = transaction.getTransactionDO();
            // ...
    }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为ReplyTransaction结构,result为业务结果

交易类接口

以下给出了KMS签名类的接口函数,并提供示例帮助理解。

重要

在部署和调用合约时,建议您使用异步接口,同步接口仅在合约本地执行模式时使用。

通用使用流程说明:

  1. 如有需要,进行链上账户的创建,调用租户创建账户接口进行账户创建。

  2. 如果是存证业务

    1. 调用存证交易接口进行存证处理。

    2. 调用查询交易回执接口查询交易结果信息(使用orderId或者根据结果返回的交易Hash来查询)。

  3. 如果是合约,先确认自己的合约类型,根据不同的合约类型,进行不同的操作。

    1. 合约部署

      同步/异步,建议使用异步,调用后,调用查询交易回执,判断合约部署结果(支持WASM合约和Solidity合约)。

    2. 合约调用

      同步/异步,建议使用异步,调用后,调用查询交易回执,查询交易结果(所有合约类型均支持)。

    3. 合约升级

      如有需要,可以进行合约升级,同步/异步,建议使用异步,调用后,调用查询交易回执,查询升级结果(支持WASM合约和Solidity合约)。

租户创建账户

租户创建密钥托管区块链账户,方法名称:TENANTCREATEACCUNT

说明

该方法从2.15.2版本开始支持。

  • 请求参数

    参数名

    必选

    类型

    说明

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    区块链ID

    account

    string

    (执行创建的)区块链账户名

    mykmsKeyId

    string

    (执行创建的)账户KMS ID

    newAccountId

    string

    自定义新建区块链账户名

    newAccountKmsId

    string

    自定义新建账户KMS ID

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

    说明

    目前您只能通过调用CreateAntChainKmsAccountNew接口的方式创建第一个链上账户,同时可以在返回参数中得到对应账户的mykmsKeyId。

  • 请求示例

    CallRestBizParam createParam = CallRestBizParam.builder().
                  account(accountName).
                  bizid(blockChainId).
                  mykmsKeyId(kmsId).
                  newAccountId(newAccountName).
                  newAccountKmsId(newKmsId).
                  method(Method.TENANTCREATEACCUNT).
                  orderId(UUID.randomUUID().toString()).
                  gas(0L).
                  build();
    BaseResp createResp = restClient.chainCallForBiz(createParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    • 成功:新开账户公钥;

    • 失败:提示信息。

(异步)存证交易

KMS签名异步存证交易,方法名称:DEPOSIT

  • 请求参数

    参数名

    必选

    类型

    说明

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    content

    string

    存证内容

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    method

    - Method- 枚举

    DEPOSIT

    tenantid

    string

    租户id

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L。

  • 请求示例

    String orderId = "order_" + System.currentTimeMillis();
          CallRestBizParam callRestBizParam=CallRestBizParam.builder().
              orderId(orderId).
              bizid(blockChainId).
              account(account).
              tenantid("mytenant").
              content("test123").
              mykmsKeyId(mykmsId).
              gas(0L).
              method(Method.DEPOSIT).build();
          BaseResp baseResp=restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易hash

  • 返回示例

    {
      "code":"200",
      "data":"0a60fd52fd9d72cb02a8b970a96bd3050b610175296eae75557bd9b3a0b5****",
      "success":true
    }

WASM合约

同步部署WASM合约(慎用)

KMS签名同步部署WASM合约,方法名称:DEPLOYWASMCONTRACT

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    DEPLOYWASMCONTRACT

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    tenantid

    string

    租户id

    contractName

    string

    合约名

    contractCode

    string

    wasc文件的二进制数据经Base64编码后的字符串

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    methodSignature

    string

    初始化方法签名

    inputParamListStr

    string

    初始化参数列表

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

  • 请求示例

    String orderId = "order_" + System.currentTimeMillis();
          CallRestBizParam callRestBizParam=CallRestBizParam.builder().
              orderId(orderId).
              bizid(blockChainId).
              account(account).
              tenantid("mytenant").
              contractName("test_biz_deploy_wasm_contract").
              contractCode(Base64.encodeBase64String(FileUtils.readFileToByteArray(new File("/Users/zhuming/workspace4j/baascryptotool/01027beta_copy/contracts/113_hello_world.wasc")))).
              mykmsKeyId(mykmsId).
              gas(0L).
        //      secretKey("mySecretKey"). 使用tee链时候,指定加密密钥,后续调用合约、查询交易、查询回执的时候也要填上对应的密钥
              method(Method.DEPLOYWASMCONTRACT).build();
          BaseResp baseResp=restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,只用关心txData.data.transactionReceipt.result结果即可,返回0表示成功

  • 返回示例

    {
      "code":"200",
      "data":"{"txData":{"data":{"success":true,"transactionReceipt":{"output":...}",
      "success":true
    }

异步部署WASM合约(推荐)

KMS签名异步部署WASM合约,方法名称:DEPLOYWASMCONTRACTASYNC

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    DEPLOYWASMCONTRACTASYNC

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    tenantid

    string

    租户id

    contractName

    string

    合约名

    contractCode

    string

    wasc文件的二进制数据经Base64编码后的字符串

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    methodSignature

    string

    初始化方法签名

    inputParamListStr

    string

    初始化参数列表

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

  • 请求示例

    String orderId = "order_" + System.currentTimeMillis();
          CallRestBizParam callRestBizParam=CallRestBizParam.builder().
              orderId(orderId).
              bizid(blockChainId).
              account(account).
              tenantid("mytenant").
              contractName("test_biz_deploy_wasm_contract").
              contractCode(Base64.encodeBase64String(FileUtils.readFileToByteArray(new File("/Users/zhuming/workspace4j/baascryptotool/01027beta_copy/contracts/113_hello_world.wasc")))).
              mykmsKeyId(mykmsId).
              gas(0L).
        //      secretKey("mySecretKey"). 使用tee链时候,指定加密密钥,后续调用合约、查询交易、查询回执的时候也要填上对应的密钥
              method(Method.DEPLOYWASMCONTRACTASYNC).build();
          BaseResp baseResp=restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    • 成功:交易哈希

    • 失败:失败提示信息

同步升级WASM合约(慎用)

KMS签名同步升级WASM合约,方法名称:方法名称:UPDATECONTRACTFORBIZ

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    UPDATECONTRACTFORBIZ

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    tenantid

    string

    租户id

    contractName

    string

    合约名

    contractCode

    string

    wasc文件的二进制数据经Base64编码后的字符串

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    vmTypeEnum

    VMTypeEnum 枚举

    VMTypeEnum.WASM

    methodSignature

    string

    初始化方法签名

    inputParamListStr

    string

    初始化参数列表

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L。

  • 请求示例

    CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                    contractCode(Base64.encodeBase64String(ByteUtils.hexStringToBytes(new String(FileUtils.readFileToByteArray(new File("具体文件地址")))))).
                    account(account).
                    bizid(blockChainId).
                    tenantid("mytenant").
                    mykmsKeyId(mykmsId).
                    contractName(CONTRACT_NAME).
                    method(Method.UPDATECONTRACTFORBIZ).
                    vmTypeEnum(VMTypeEnum.WASM).
                    orderId(UUID.randomUUID().toString()).
                    gas(0L).
                    build();
     
    BaseResp baseResp = restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,只用关心txData.data.transactionReceipt.result结果即可,返回0表示成功

  • 返回示例

    {
      "code":"200",
      "data":"{"txData":{"data":{"success":true,"transactionReceipt":{"output":...}",
      "success":true
    }

异步升级WASM合约(推荐)

KMS签名异步升级WASM合约,方法名称:UPDATECONTRACTFORBIZASYNC

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    UPDATECONTRACTFORBIZASYNC

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    tenantid

    string

    租户id

    contractName

    string

    合约名

    contractCode

    string

    wasc文件的二进制数据经Base64编码后的字符串

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    vmTypeEnum

    VMTypeEnum 枚举

    VMTypeEnum.WASM

    methodSignature

    string

    初始化方法签名

    inputParamListStr

    string

    初始化参数列表

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L。

  • 请求示例

    CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                    contractCode(Base64.encodeBase64String(ByteUtils.hexStringToBytes(new String(FileUtils.readFileToByteArray(new File("具体文件地址")))))).
                    account(account).
                    bizid(blockChainId).
                    tenantid("mytenant").
                    mykmsKeyId(mykmsId).
                    contractName(CONTRACT_NAME).
                    method(Method.UPDATECONTRACTFORBIZASYNC).
                    vmTypeEnum(VMTypeEnum.WASM).
                    orderId(UUID.randomUUID().toString()).
                    gas(0L).
                    build();
     
    BaseResp baseResp = restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    - 成功:交易哈希- 失败:失败提示信息

同步调用WASM合约(慎用)

KMS签名同步调用WASM合约,方法名称:CALLWASMCONTRACT

  • 请求参数

    参数名

    必选

    类型

    说明

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    contractName

    string

    合约名

    methodSignature

    string

    初始化方法签名

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    method

    - Method- 枚举

    CALLWASMCONTRACT

    inputParamListStr

    string

    JSON串,方法的实参

    outTypes

    string

    JSON串,返回参数类型列表

    tenantid

    string

    租户id

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

    isLocalTransaction

    boolean

    是否是本地交易模式(本地交易不消耗Gas,但会做Gas检查)

  • 请求示例

    String orderId = "order_" + System.currentTimeMillis();
          CallRestBizParam callRestBizParam=CallRestBizParam.builder().
              orderId(orderId).
              bizid(blockChainId).
              account(account).
              tenantid("mytenant").
              contractName("test_biz_deploy_wasm_contract").
              methodSignature("add(int64,int64)").
              inputParamListStr("[1,2]").
              outTypes("[\"int64\"]").
              mykmsKeyId(mykmsId).
              gas(0L).
    //            secretKey("mySecretKey"). 使用tee链时候,指定加密密钥,后续调用合约、查询交易、查询回执的时候也要填上对应的密钥
              method(Method.CALLWASMCONTRACT).build();
          BaseResp baseResp=restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    JSON串,具体内容可以参考返回示例

  • 返回示例

    {
      "code":"200",
      "data":"{"transaction":{"isSuccess":true,"txHash":"123de1231xxx","data":"{"transactionReceipt":{"result":0,"output":"xxxx"},"isSuccess":true}"},"outRes":[3]}",
      "success":true
    }

异步调用WASM合约(推荐)

KMS签名异步调用WASM合约,方法名称:CALLWASMCONTRACTASYNC

  • 请求参数

    参数名

    必选

    类型

    说明

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    contractName

    string

    合约名

    methodSignature

    string

    初始化方法签名,格式为:methodName(parameter1Type.parameter2Type,...,parameterNType)例如:createPromoteOrder(string[])

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    method

    - Method- 枚举

    CALLWASMCONTRACTASYNC

    inputParamListStr

    string

    JSON串,方法的实参

    outTypes

    string

    JSON串,返回参数类型列表

    tenantid

    string

    租户id

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

  • 请求示例

    String orderId = "order_" + System.currentTimeMillis();
          List<Object> inputParams = new LinkedList<>();
          List<Object> strings = new LinkedList<>();
          strings.add("say");
          strings.add("hello world");
          inputParams.add(strings);
          List<String> outTypes = new LinkedList<>();
          outTypes.add("string[]");
          CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                  orderId(orderId).
                  bizid(blockChainId).
                  account(account).
                  tenantid("mytenant").
    //                secretKey("mySecretKey"). 使用tee链时候,指定加密密钥,后续调用合约、查询交易、查询回执的时候也要填上对应的密钥
                  contractName("test_biz_deploy_wasm_contract_order_1566384851226").
                  methodSignature("createPromoteOrder(string[])").
                  inputParamListStr(JSONArray.toJSONString(inputParams)).
                  outTypes(JSONArray.toJSONString(outTypes)).
                  mykmsKeyId(mykmsId).
                  gas(0L).
                  method(Method.CALLWASMCONTRACTASYNC).build();
          BaseResp resp = restClient.callWasmContractAsyncWithReceipt(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    JSON串,内容为数组,为函数返回的值,可能有多个

  • 返回示例

    {
      "code":"200",
      "data":"[3,4,5]",
      "success":true
    }

Solidity合约

同步部署Solidity合约(慎用)

KMS签名同步部署Solidity合约,方法名称:DEPLOYCONTRACTFORBIZ

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    DEPLOYCONTRACTFORBIZ

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    tenantid

    string

    租户id

    bizid

    string

    链id

    account

    string

    账户名

    contractName

    string

    合约名

    contractCode

    string

    Solidity经过solc编译后的合约码,16进制编码。

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    methodSignature

    string

    初始化方法签名

    inputParamListStr

    string

    初始化参数列表

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

  • 请求示例

    String orderId = "order_" + System.currentTimeMillis();
    CallRestBizParam callRestBizParam=CallRestBizParam.builder().
        orderId(orderId).
        bizid(blockChainId).
        account(account).
        tenantid("mytenant").
      //           secretKey("mySecretKey"). 使用tee链时候,指定加密密钥,后续调用合约、查询交易、查询回执的时候也要填上对应的密钥
        contractName("test_biz_deploy_contract").
        contractCode("608060405234801561001057600080fd5b5060df8061001f6000396000f3006080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360fe47b114604e5780636d4ce63c146078575b600080fd5b348015605957600080fd5b5060766004803603810190808035906020019092919050505060a0565b005b348015608357600080fd5b50608a60aa565b6040518082815260200191505060405180910390f35b8060008190555050565b600080549050905600a165627a7a72305820a254750a8c7dbd3a15120b489c010dee696498d84e7e33a1980c4d490f8c85d80029").
        mykmsKeyId(mykmsId).
        method(Method.DEPLOYCONTRACTFORBIZ).
        gas(0L).
        build();
    BaseResp baseResp=restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,只用关心txData.data.transactionReceipt.result结果即可,返回0表示成功

  • 返回示例

    {
      "code":"200",
      "data":"{"txData":{"data":{"success":true,"transactionReceipt":{"output":...}",
      "success":true
    }

异步部署Solidity合约(推荐)

KMS签名异步部署Solidity合约,方法名称:DEPLOYCONTRACTFORBIZASYNC

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    DEPLOYCONTRACTFORBIZASYNC

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    tenantid

    string

    租户id

    bizid

    string

    链id

    account

    string

    账户名

    contractName

    string

    合约名

    contractCode

    string

    Solidity经过solc编译后的合约码,16进制编码。

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    methodSignature

    string

    初始化方法签名

    inputParamListStr

    string

    初始化参数列表

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

  • 请求示例

    String orderId = "order_" + System.currentTimeMillis();
    CallRestBizParam callRestBizParam=CallRestBizParam.builder().
        orderId(orderId).
        bizid(blockChainId).
        account(account).
        tenantid("mytenant").
      //           secretKey("mySecretKey"). 使用tee链时候,指定加密密钥,后续调用合约、查询交易、查询回执的时候也要填上对应的密钥
        contractName("test_biz_deploy_contract").
        contractCode("608060405234801561001057600080fd5b5060df8061001f6000396000f3006080604052600436106049576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360fe47b114604e5780636d4ce63c146078575b600080fd5b348015605957600080fd5b5060766004803603810190808035906020019092919050505060a0565b005b348015608357600080fd5b50608a60aa565b6040518082815260200191505060405180910390f35b8060008190555050565b600080549050905600a165627a7a72305820a254750a8c7dbd3a15120b489c010dee696498d84e7e33a1980c4d490f8c85d80029").
        mykmsKeyId(mykmsId).
        gas(0L).
        method(Method.DEPLOYCONTRACTFORBIZASYNC).
        build();
    BaseResp baseResp=restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    - 成功:交易哈希- 失败:失败提示信息

同步升级Solidity合约(慎用)

KMS签名同步升级Solidity合约,方法名称:方法名称:UPDATECONTRACTFORBIZ

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    UPDATECONTRACTFORBIZ

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    tenantid

    string

    租户id

    contractName

    string

    合约名

    contractCode

    string

    wasc文件的二进制数据经Base64编码后的字符串

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    vmTypeEnum

    VMTypeEnum 枚举

    VMTypeEnum.EVM

    methodSignature

    string

    初始化方法签名

    inputParamListStr

    string

    初始化参数列表

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

  • 请求示例

    CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                    contractCode(Base64.encodeBase64String(ByteUtils.hexStringToBytes(new String(FileUtils.readFileToByteArray(new File("具体文件地址")))))).
                    account(account).
                    bizid(blockChainId).
                    tenantid("mytenant").
                    mykmsKeyId(mykmsId).
                    contractName(CONTRACT_NAME).
                    method(Method.UPDATECONTRACTFORBIZ).
                    vmTypeEnum(VMTypeEnum.EVM).
                    orderId(UUID.randomUUID().toString()).
                    gas(0L).
                    build();
     
    BaseResp baseResp = restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,只用关心txData.data.transactionReceipt.result结果即可,返回0表示成功

  • 返回示例

    {
      "code":"200",
      "data":"{"success":true,"transactionReceipt":{"output":...}",
      "success":true
    }

异步升级Solidity合约(推荐)

KMS签名异步升级Solidity合约,方法名称:UPDATECONTRACTFORBIZASYNC

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    UPDATECONTRACTFORBIZASYNC

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    tenantid

    string

    租户id

    contractName

    string

    合约名

    contractCode

    string

    wasc文件的二进制数据经Base64编码后的字符串

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    vmTypeEnum

    VMTypeEnum 枚举

    VMTypeEnum.EVM

    methodSignature

    string

    初始化方法签名

    inputParamListStr

    string

    初始化参数列表

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

  • 请求示例

    CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                    contractCode(Base64.encodeBase64String(ByteUtils.hexStringToBytes(new String(FileUtils.readFileToByteArray(new File("具体文件地址")))))).
                    account(account).
                    bizid(blockChainId).
                    tenantid("mytenant").
                    mykmsKeyId(mykmsId).
                    contractName(CONTRACT_NAME).
                    method(Method.UPDATECONTRACTFORBIZASYNC).
                    vmTypeEnum(VMTypeEnum.EVM).
                    orderId(UUID.randomUUID().toString()).
                    gas(0L).
                    build();
     
    BaseResp baseResp = restClient.chainCallForBiz(callRestBizParam);
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    • 成功:交易哈希

    • 失败:失败提示信息

同步调用Solidity合约(慎用)

KMS签名同步调用Solidity合约,方法名称:CALLCONTRACTBIZ

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    - Method- 枚举

    CALLCONTRACTBIZ

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    tenantid

    string

    租户id

    bizid

    string

    链id

    account

    string

    账户名

    contractName

    string

    合约名

    methodSignature

    string

    方法签名,例如:set(uint256,uint256)

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    inputParamListStr

    string

    实参列表,例如:[1,2]

    outTypes

    string

    返回参数列表,例如:[]

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

    isLocalTransaction

    boolean

    是否是本地交易模式(本地交易不消耗Gas,但会做Gas检查)

  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    • 成功:交易回执;

    • 失败:异常提示信息。

  • 返回示例

    {
      "code":"200",
      "data":"df316046e205b2e13668092c9b3b2801827669931136046426c861f1d0dd****",
      "success":true
    }

异步调用Solidity合约(推荐)

KMS签名异步调用Solidity合约,方法名称:CALLCONTRACTBIZASYNC

  • 请求参数

    参数名

    必选

    类型

    说明

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链id

    account

    string

    账户名

    contractName

    string

    合约名

    methodSignature

    string

    方法签名,例如:set(uint256,uint256)

    mykmsKeyId

    string

    创建账户时使用的mykmsKeyId

    method

    - Method- 枚举

    CALLCONTRACTBIZASYNC

    inputParamListStr

    string

    实参列表,例如:[1,2]

    outTypes

    string

    返回参数列表,例如:[]

    tenantid

    string

    租户id

    secretKey

    string

    使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要设置传空。

    gas

    Long

    调用花费的最大的Gas,暂未启用,设置为0L

  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    - 成功:交易hash,可以使用hash来查询交易以及回执- 失败:异常提示信息。

  • 返回示例

    {
      "code":"200",
      "data":"df316046e205b2e13668092c9b3b2801827669931136046426c861f1d0dd****",
      "success":true
    }

解析合约返回参数

填写返回值类型,解析合约返回值内容。该方式需SDK在2.11版本以上。

  • 请求参数

    参数

    必选

    类型

    说明

    orderId

    string

    业务方的唯一性请求标识,用于重试去重。该参数有唯一性校验,当请求参数发生变化或接口发生变化时,需确保每次传入的值唯一,否则会引起调用失败。

    bizid

    string

    链ID 开放联盟链为:a00e36c5

    content

    string

    待解析密文

    method

    Method 枚举

    PARSEOUTPUT

    tenantid

    string

    租户 ID

    vmTypeEnum

    VMTypeEnum 枚举

    EVM/WASM

    abi

    string

    如下方式填写返回值类型,[\”string\”]

  • 请求示例

    BaseResp queryBaseResp = restClient.chainCall(hash, restClientProperties.getBizid(), "", Method.QUERYRECEIPT);
    String s = queryBaseResp.getData();
    String output = s.substring(s.indexOf("output") + 9, s.indexOf("result")).replace("\"", "").replace(",", "");
    byte[] content = Hex.encode(Base64.decode(output));
    CallRestBizParam callRestBizParam = CallRestBizParam.builder().
                              bizid(blockChainId).
                              method(Method.PARSEOUTPUT).
                              tenantid("mytenant").
                              orderId(orderId).
                              vmTypeEnum(VMTypeEnum.EVM).
                              content(new String(content)).
                              abi("[\"string\"]"). //TODO 合约返回值类型需自己根据合约修改
                              build();    
                              BaseResp baseResp = restClient.chainCallForBiz(callRestBizParam);
                              assert (baseResp.isSuccess());
                              System.out.println("show" + baseResp);

解析合约logData

该方法需SDK在2.15版本以上

  • EVM解析示例

    //查询交易回执 hash为调用合约交易hash
    BaseResp queryBaseResp = restClient.chainCall("交易hash", restClientProperties.getBizid(), "", Method.QUERYRECEIPT);
    ReceiptDecoration transaction = JSON.parseObject(queryBaseResp.getData(), ReceiptDecoration.class);
    for (LogEntry log : transaction.getLogs()) {
      if(log.getLogData().length>0){
          //传入回执中的logdata转换为EVMoutput
          EVMOutput logOutput = new EVMOutput(Hex.toHexString(log.getLogData()));
          //根据事件传入类型按顺序传值,如event test(string a,uint256 b); 则填写asList("string","uint256")
          List<Object> resultList = ContractParameterUtils.getEVMOutput(logOutput, asList("string"));
          for (Object o : resultList) {
              System.out.println(o.toString());
          }
      }
    }
  • WASM解析示例

    //查询交易回执 hash为调用合约交易hash
    BaseResp queryBaseResp = restClient.chainCall("交易hash", restClientProperties.getBizid(), "", Method.QUERYRECEIPT);
    ReceiptDecoration transaction = JSON.parseObject(queryBaseResp.getData(), ReceiptDecoration.class);
    for (LogEntry log : transaction.getLogs()) {
      if(log.getLogData().length>0){
          //传入回执中的logdata转换为EVMoutput
          WASMOutput  logOutput = new WASMOutput(Hex.toHexString(log.getLogData()));
          //根据事件传入类型按顺序传值,如event test(string a,uint256 b); 则填写new String[]{"string","uint256"}
          List<Object> resultList = WasmParaUtils.getWasmReturnValues(logOutput, new String[]{"string"}));
          for (Object o : resultList) {
              System.out.println(o.toString());
          }
      }
    }