文档

密钥非托管模式

更新时间:

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

查询类接口

查询交易

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

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYTRANSACTION

    bizid

    string

    链ID

    hash

    string

    交易hash

  • 请求示例

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

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为ReplyTransaction结构

查询交易回执

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

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYRECEIPT

    bizid

    string

    链ID

    hash

    string

    交易hash

  • 请求示例

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

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

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

(重试)同步查询交易回执

在发送(异步)交易请求后,为了获取交易最终执行结果,需要到链上查询获取交易执行结果。BaaS REST SDK中提供了通过重试查询获取交易执行结果的方法,方法定义如下。该方法实际上是查询交易回执的一个客户端封装。

  • 请求参数

    参数名

    必选

    类型

    说明

    bizid

    string

    链ID

    hash

    string

    区块查询参数

  • 请求示例

    BaseResp baseResp=restClient.multipleQueryReceipt(
        bizid,   //链ID
        hash   //交易hash
    );
    if(baseResp.isSuccess()) {
        // 交易回执信息
        ReceiptDecoration receipt = JSON.parseObject(resp.getData(), ReceiptDecoration.class);
        //...
    }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

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

查询区块头

查询指定区块的区块头信息,方法名称:QUERYBLOCK

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYBLOCK

    bizid

    string

    链ID

    requestStr

    string

    区块高度

  • 请求示例

    CallRestParam param = CallRestParam.builder().
                    method(Method.QUERYBLOCK).  // 查询区块头方法标识
                    requestStr(String.valueOf(blockHeight)).  // 区块高度参数
                    bizid(bizId).    // 链ID,若未设置,使用客户端配置默认链
                    build();
     
    BaseResp baseResp=restClient.chainCall(param);
    if(baseResp.isSuccess()) {
            // 解析返回的区块头
            ReplyBlock replyBlock = JSON.parseObject(resp.getData(), ReplyBlock.class);
            BlockHeader header = replyBlock.getBlock().getBlockHeader();
            // ...
    }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为ReplyBlock结构

查询区块

查询指定高度的区块内容,方法名称:QUERYBLOCKBODY

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYBLOCKBODY

    bizid

    string

    链ID

    requestStr

    string

    区块高度

  • 请求示例

    CallRestParam param = CallRestParam.builder().
                    method(Method.QUERYBLOCKBODY).  // 查询区块内容方法标识
                    requestStr(String.valueOf(blockHeight)).  // 区块高度参数
                    bizid(bizId).    // 链ID,若未设置,使用客户端配置默认链
                    build();
     
    BaseResp baseResp=restClient.chainCall(param);
    if(baseResp.isSuccess()) {
            // 解析返回的区块
            JSONObject jsonObject = JSONObject.parseObject(resp.getData());
            com.alipay.mychain.sdk.domain.block.Block block = new com.alipay.mychain.sdk.domain.block.Block();
            block.fromJson(jsonObject);
            // ...
    }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为Block结构

查询最新区块头

查询最新的区块块头信息,方法名称:QUERYLASTBLOCK

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYLASTBLOCK

    bizid

    string

    链ID

  • 请求示例

    CallRestParam param = CallRestParam.builder().
                    method(Method.QUERYLASTBLOCK).  // 查询最新块头方法名
                    bizid(bizId).    // 链ID,若未设置,使用客户端配置默认链
                    build();
    BaseResp baseResp=restClient.chainCall(param);
    if(baseResp.isSuccess()) {
            // 解析返回的最新区块头
            ReplyBlock replyBlock = JSON.parseObject(resp.getData(), ReplyBlock.class);
            BlockHeader header = replyBlock.getBlock().getBlockHeader();
            // ...
    });
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为ReplyBlock结构

查询块头列表

查询满足条件的区块块头信息列表,方法名称:QUERYBLOCKHEADERINFOSRAW

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYBLOCKHEADERINFOSRAW

    bizid

    string

    链ID

    requestStr

    string

    区块查询参数

  • 请求示例

    String requestStr = restClient.createQUeryBlockHeaderInfosRequestStr(
        blockNumber,    // (起始)区块高度
        hash,           // (起始)区块Hash
        maxAmount,      // 最多获取区块数
        reverse);       //  获取方向, 0: 正向,1: 反向
     
    CallRestParam param = CallRestParam.builder().
                    method(Method.QUERYBLOCKHEADERINFOSRAW).  // 查询方法名
                    bizid(bizId).    // 链ID,若未设置,使用客户端配置默认链
                    requestStr(requestStr)).  // 区块查询参数
                    build();
     
    BaseResp baseResp=restClient.chainCall(param);
    if(baseResp.isSuccess()) {
        // 解析返回的区块头列表信息
        byte[] content = Base64.decodeBase64(resp.getData());
        RlpList rlpList = Rlp.decode2(content);
        QueryBlockHeaderInfosResponse response = new QueryBlockHeaderInfosResponse();
        response.fromRlp(rlpList);
    }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    需要进行Base64解码,然后使用Rlp解码,可以转换为QueryBlockHeaderInfosResponse

查询账户

查询指定名称的账户信息,方法名称:QUERYACCOUNT

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:QUERYACCOUNT

    bizid

    string

    链ID

    requestStr

    string

    账户查询参数信息

  • 账户查询参数

    参数名

    必选

    类型

    说明

    queryAccount

    string

    区块链账户名

  • 请求示例

    AccountRequest request = new AccountRequest();
    request.setQueryAccount(queryAccount); // 区块链账户名
     
    CallRestParam param = CallRestParam.builder().
                    method(Method.QUERYACCOUNT).  // 查询账户方法名
                    bizid(bizId).    // 链ID,若未设置,使用客户端配置默认链
                    requestStr(JSON.toJSONString(request)).  // 账户查询参数
                    build();
     
    BaseResp baseResp=restClient.chainCall(param);
    if(baseResp.isSuccess()) {
        // 解析返回的账户信息
        Account account = new Account();
        account.fromJson(JSON.parseObject(baseResp.getData()));
    }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码

    data

    string

    交易的JSON串,可以转换为Account结构

交易类接口

(异步)存证

客户端签名存证提供客户端打包签名交易、异步执行的原生存证功能,方法名称:DEPOSIT

说明

执行完成后,如果返回200,可以调用查询交易回执来查询最终存证结果。

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:DEPOSIT

    bizid

    string

    链ID

    hash

    string

    交易hash,通过构造ClientParam来计算获得

    signData

    string

    签名后交易内容,通过构造ClientParam来计算获得

  • ClientParam

    参数名

    必选

    类型

    说明

    accountName

    string

    发起存证的链账户

    content

    string

    存证数据内容

    gas

    string

    最多允许消耗Gas,暂未启用,设置为0L

  • 请求示例

    // 创建存证签名交易
    ClientParam clientParam=restClient.createDepositTransaction(
        accountName,         // 发起存证的链账户
        content,             // 存证数据内容
        gas);                // 最多允许消耗Gas
     
    // 发送存证请求
    BaseResp baseResp = restClient.chainCall(
        clientParam.getHash(),       // 交易Hash
        bizId,                       //链ID,若未设置:使用客户端默认配置
        clientParam.getSignData(),   // 签名后交易内容
        Method.DEPOSIT);             // 方法名称
    if(baseResp.isSuccess()) {
        // 交易请求发送成功
    }
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码,200表示成功

    data

    string

    如果返回成功,则data无信息,否则是异常信息

(异步)部署合约

部署合约实现客户端打包签名交易、异步执行的区块链合约部署功能,方法名称:DEPLOYCONTRACT

说明

执行完成后,如果返回200,可以调用查询交易回执来查询最终合约部署结果。

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:DEPLOYCONTRACT

    bizid

    string

    链ID

    hash

    string

    交易hash,通过构造ClientParam来计算获得

    signData

    string

    签名后交易内容,通过构造ClientParam来计算获得

  • ClientParam

  • 参数名

    必选

    类型

    说明

    accountName

    string

    部署合约的账户名

    contractName

    string

    合约名字(用于生成合约地址)

    contractCode

    string

    合约编译后代码

    contractType

    string

    合约类型,如:VMTypeEnum.EVM、VMTypeEnum.WASM

    gas

    string

    最多允许消耗Gas,暂未启用,设置为0L

    secretKey

    string

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

  • 请求示例

    // 创建部署合约签名交易
    ClientParam clientParam=restClient.createDepolyContractTransaction(
        accountName,       // 部署合约的账户名
        contractName,      // 合约名字(用于生成合约地址)
        contractCode,      // 合约编译后代码
        contractType,     // 合约类型,如:VMTypeEnum.EVM、VMTypeEnum.WASM
        gas,      // 最多允许消耗Gas
        secretKey);        // 私钥信息         
     
    // 发送合约部署请求
    BaseResp resp=restClient.chainCall(
        clientParam.getHash(),       // 交易Hash
        bizId,                       //链ID,若未设置:使用客户端默认配置
        clientParam.getSignData(),   // 签名后交易内容
        Method.DEPLOYCONTRACT);      //方法名称
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码,200表示成功

    data

    string

    如果返回成功,则data为交易hash,否则是异常信息

(异步)更新合约

更新合约实现客户端打包签名交易、异步执行的区块链合约升级更新功能,方法名称:UPDATECONTRACT

说明

执行完成后,如果返回200,可以调用查询交易回执来查询最终合约更新结果。

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:UPDATECONTRACT

    bizid

    string

    链ID

    hash

    string

    交易hash,通过构造ClientParam来计算获得

    signData

    string

    签名后交易内容,通过构造ClientParam来计算获得

  • ClientParam

  • 参数名

    必选

    类型

    说明

    accountName

    string

    部署合约的账户名

    contractName

    string

    合约名字(用于生成合约地址)

    contractCode

    string

    合约编译后代码

    contractType

    string

    合约类型,如:VMTypeEnum.EVM、VMTypeEnum.WASM

    gas

    string

    最多允许消耗Gas,暂未启用,设置为0L

    secretKey

    string

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

  • 请求示例

    // 创建部署合约签名交易
    ClientParam clientParam=restClient.createUpdateContractTransaction(
        accountName,       // 部署合约的账户名
        contractName,      // 合约名字(用于生成合约地址)
        contractCode,      // 合约编译后代码
        contractType,     // 合约类型,如:VMTypeEnum.EVM、VMTypeEnum.WASM
        gas,    // 最多允许消耗Gas
        secretKey);        // 私钥信息      
     
    // 发送合约部署请求
    BaseResp resp=restClient.chainCall(
        clientParam.getHash(),       // 交易Hash
        bizId,                       //链ID,若未设置:使用客户端默认配置
        clientParam.getSignData(),   // 签名后交易内容
        Method.UPDATECONTRACT);      //方法名称
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码,200表示成功

    data

    string

    如果返回成功,则data为交易hash,否则是异常信息

(异步)调用wasm合约

调用wasm合约实现客户端打包签名交易、异步执行的wasm合约调用功能,方法名称:CALLWASMCONTRACT

说明

执行完成后,如果返回200,可以调用查询交易回执来查询最终合约调用结果。

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:CALLWASMCONTRACT

    bizid

    string

    链ID

    hash

    string

    交易hash,通过构造ClientParam来计算获得

    signData

    string

    签名后交易内容,通过构造ClientParam来计算获得

  • ClientParam

  • 参数名

    必选

    类型

    说明

    accountName

    string

    调用合约的账户名

    contractName

    string

    合约名字

    outTypes

    string

    输出结果解析方式

    methodSignature

    string

    合约方法签名,如: add(int64,int64)

    params

    string

    合约调用参数,JSON字符串格式,如:[123,1]

    gas

    string

    最多允许消耗Gas,暂未启用,设置为0L

  • 请求示例

    // 创建调用合约签名交易
    ClientParam clientParam=restClient.createCallWasmContractTransaction(
        accountName,        // 调用合约的账户名
        contractName,       // 合约名称,用于生成合约地址
        outTypes,           // 输出结果解析方式,当前未使用
        methodSignature,    // 合约方法签名,如:add(int64,int64) 
    
        params,             // 合约调用参数,JSON字符串格式,如:[123,1]
        gas);               // 最多允许消耗Gas
     
    // 发送合约调用请求
    BaseResp resp=restClient.chainCall(
        clientParam.getHash(),              // 交易Hash
        bizId,                              //链ID,若未设置:使用客户端默认配置
        clientParam.getSignData(),          // 签名后交易内容
        Method.CALLWASMCONTRACT);           // 调用的方法
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码,200表示成功

    data

    string

    如果返回成功,则data无信息,否则是异常信息

(异步)调用solidity合约

调用solidity合约实现客户端打包签名交易、异步执行的solidity合约调用功能,方法名称:CALLCONTRACT

说明

执行完成后,如果返回200,可以调用查询交易回执来查询最终合约调用结果。

  • 请求参数

    参数名

    必选

    类型

    说明

    method

    string

    方法名称:CALLCONTRACT

    bizid

    string

    链ID

    hash

    string

    交易hash,通过构造ClientParam来计算获得

    signData

    string

    签名后交易内容,通过构造ClientParam来计算获得

  • ClientParam

  • 参数名

    必选

    类型

    说明

    accountName

    string

    调用合约的账户名

    contractName

    string

    合约名字

    outTypes

    string

    输出结果解析方式

    methodSignature

    string

    合约方法签名,如: add(int64,int64)

    params

    string

    合约调用参数,JSON字符串格式,如:[123,1]

    gas

    string

    最多允许消耗Gas,暂未启用,设置为0L

  • 请求示例

    // 创建调用合约签名交易
    ClientParam clientParam=restClient.createCallContractTransaction(
        accountName,      // 调用合约的账户名
        contractName,     // 合约名称,用于生成合约地址
        outTypes,         // 输出结果解析方式,当前未使用
        methodSignature,  // 合约方法签名,如:add(int64,int64) 
    
        params,           // 合约调用参数,JSON字符串格式,如:[123,1]
        gas);             // 最多允许消耗Gas
     
    // 发送合约调用请求    
     BaseResp resp=restClient.chainCall(
        clientParam.getHash(),           // 交易Hash
        bizId,                           //链ID,若未设置:使用客户端默认配置
        clientParam.getSignData(),       // 签名后交易内容
        Method.CALLCONTRACT);            // 调用的方法
  • 返回参数

    参数名

    类型

    说明

    success

    boolean

    请求是否成功

    code

    string

    状态码,200表示成功

    data

    string

    如果返回成功,则data无信息,否则是异常信息