原生存证接口

更新时间:2023-03-15 06:15:31

为方便存证场景的开发,合约平台提供原生存证交易接口以实现存证目的。

存证内容上链

depositData

发起存证内容上链的交易,同步方式调用。

  • 函数原型

public DepositDataResponse depositData(DepositDataRequest request)
  • 请求参数

参数

必选

类型

说明

参数

必选

类型

说明

request

true

DepositDataRequest

发起存证的请求

DepositDataRequest,具体参数见下表。

返回字段

字段类型

说明

返回字段

字段类型

说明

senderId

Identity

发起内容存证的账户地址

receiverId

Identity

接收内容存证的账户地址

amount

BigInteger

转账金额,默认值为0,不支持修改(即不支持转账交易)

depositData

byte[]

待存储数据,可自定义数据内容,然后序列化存证,存证后读取数据再反序列化

重要

存证交易的 data 数据大小有上限限制,此限制为合约链的一个配置选项,通常默认 1 MB,实际根据合约链的配置情况而定。

  • 返回字段

返回字段

字段类型

说明

返回字段

字段类型

说明

response

DepositDataResponse

存证交易的响应

DepositDataResponse,具体参数见下表。

返回字段

字段类型

说明

返回字段

字段类型

说明

transactionReceipt

TransactionReceipt

交易收据

blockNumber

BigInteger

区块号

TransactionReceipt,具体参数见下表。

参数

类型

说明

result

long

交易执行结果,0 代表成功,其他值代表失败

gasUsed

BigInteger

交易执行所花费的gas费用

logs

List<logEntry>

交易结果日志输出

output

byte[]

交易的输出,此处为虚拟机的执行结果

LogEntry,具体参数见下表。

参数

类型

说明

from

Identity

交易结果日志中的字段,代表交易发送者

to

Identity

交易结果日志中的字段,代表交易接收者

topics

List<String>

交易结果日志中的字段,交易执行的事件主题

logData

byte[]

交易结果日志中的字段,交易执行中的日志数据

  • 示例

public void depositData() {
        String content = "hello world";
        DepositDataRequest depositDataRequest = new DepositDataRequest(
                Utils.getIdentityByName("Administrator"),
                Utils.getIdentityByName("Tester001"),
                content.getBytes(), new BigInteger("0"));
        DepositDataResponse depositDataResponse = sdk.getAccountService().depositData(depositDataRequest);
        if (!depositDataResponse.isSuccess()) {
            logger.error("depositData failed, errorCode :{}, errorDesc: {}", depositDataResponse.getErrorCode().getErrorCode(), depositDataResponse.getErrorCode().getErrorDesc());
        } else {
            // 交易收据
            TransactionReceipt transactionReceipt = depositDataResponse.getTransactionReceipt();
            if (transactionReceipt.getResult() != 0) {
                logger.error("depositData failed, errorCode :{}, errorDesc: {}", ErrorCode.valueOf((int) transactionReceipt.getResult()).getErrorCode(), ErrorCode.valueOf((int) transactionReceipt.getResult()).getErrorDesc());
            } else {
                logger.info("depositData success.返回信息: {}", transactionReceipt.toString());
            }
        }
    }

asyncDepositData

发起存证内容上链的交易,异步方式调用。

  • 函数原型

public int asyncDepositData(DepositDataRequest request, IAsyncCallback callback)
  • 请求参数

参数

必选

类型

说明

参数

必选

类型

说明

request

true

DepositDataRequest

发起存证的请求

callback

true

IAsyncCallback

回调函数

重要

存证交易的 data 数据大小有上限限制,此限制为合约链的一个配置选项,通常默认 1 MB,实际根据合约链的配置情况而定。

  • 同步返回字段

返回字段

字段类型

说明

返回字段

字段类型

说明

result

int

发送返回值

  • 异步返回字段

返回字段

字段类型

说明

返回字段

字段类型

说明

errorCode

int

SDK发送消息返回的错误码,success时为0。

response

Response

平台返回的响应,其中 response.getErrorCode()是平台返回的错误码。

DepositDataResponse,具体参数见下表。

返回字段

字段类型

说明

返回字段

字段类型

说明

transactionReceipt

TransactionReceipt

交易收据

blockNumber

BigInteger

区块号

  • 示例

public void asyncDepositData() {
        String content = "hello world";
        DepositDataRequest depositDataRequest = new DepositDataRequest(
                Utils.getIdentityByName("Administrator"),
                Utils.getIdentityByName("Tester001"),
                content.getBytes(), new BigInteger("0"));
        int result = sdk.getAccountService().asyncDepositData(depositDataRequest, new IAsyncCallback() {
            @Override
            public void onResponse(int errorCode, Response response) {
                // 参考错误信息说明文档,检查返回的数据  
                DepositDataResponse depositDataResponse = (DepositDataResponse) response;
                if (!depositDataResponse.isSuccess()) {
                    logger.error("depositData failed, errorCode :{}, errorDesc: {}", depositDataResponse.getErrorCode().getErrorCode(), depositDataResponse.getErrorCode().getErrorDesc());
                } else {
                    // 交易收据
                    TransactionReceipt transactionReceipt = depositDataResponse.getTransactionReceipt();
                    if (transactionReceipt.getResult() != 0) {
                        logger.error("depositData failed, errorCode :{}, errorDesc: {}", ErrorCode.valueOf((int) transactionReceipt.getResult()).getErrorCode(), ErrorCode.valueOf((int) transactionReceipt.getResult()).getErrorDesc());
                    } else {
                        logger.info("depositData success.返回信息: {}", transactionReceipt.toString());
                    }
                }
            }
        });
    }
  • 本页导读 (0)
  • 存证内容上链
  • depositData
  • asyncDepositData

点击开启售前

在线咨询服务