All Products
Search
Document Center

Blockchain as a Service:Native Deposit Interface

Last Updated:Nov 07, 2024

To facilitate the development of the deposit scenario, the contract platform provides the native deposit interface.

depositData

You can call this synchronous operation to deposit data.

  • Function

public MychainBaseResult<ReplyTransactionReceipt> depositData(DepositDataRequest request)
  • Request parameters

Parameter

Require

Type

Description

request

true

DepositDataRequest

Request to deposite transaction data

  • Return values

Field

Type

Description

result

MychainBaseResult<ReplyTransactionReceipt>

response in MychainBaseResult

  • Examples:

// Deposit data
private static String depositData() {
        // Prepare params
        MychainParams params = new MychainParams.Builder()
                .gas(BigInteger.valueOf(4000000))
                .privateKeyList(adminPrivateKeys)
                .build();

        // Deposited data
        byte[] data = ByteUtils.hexStringToBytes("0x1234");
        DepositDataRequest depositDataRequest = DepositDataRequest.build(adminAccount.getIdentity(),
                adminAccount.getIdentity(), BigInteger.ZERO, data, params);

        MychainBaseResult<ReplyTransactionReceipt> depositDataResult = sdk.getAccountService().depositData(depositDataRequest);

        if (!depositDataResult.isSuccess() || depositDataResult.getData().getTransactionReceipt().getResult() != 0) {
            exit("depositData", getErrorMsg((int)depositDataResult.getData().getTransactionReceipt().getResult()));
        }

        return depositDataResult.getTxHash();
}


// Query for deposited data
private static String queryDepositData(String hash) {
        // Query for deposited data by QueryTransaction with trasaction hash.
        MychainBaseResult<ReplyTransaction> queryTxResult = sdk.getQueryService().queryTransaction(hash);

        if (!queryTxResult.isSuccess()) {
            exit("depositData", queryTxResult.getData().getErrorCode().toString());
        }

        MychainBaseResult<ReplyTransactionReceipt> queryTxReceiptResult = sdk.getQueryService().queryTransactionReceipt(hash);
        if (!queryTxReceiptResult.isSuccess() || queryTxReceiptResult.getData().getTransactionReceipt().getResult() != 0) {
            exit("depositData", getErrorMsg((int)queryTxReceiptResult.getData().getTransactionReceipt().getResult()));
        }
         return ByteUtils.toHexString(queryTxResult.getData().getTransactionDO().getData());
}

asyncDepositData

You can call this asynchronous operation to deposit data.

  • Function

public MychainBaseResult<Response> asyncDepositData(DepositDataRequest request, ICallback callback)
  • Request parameters

Parameter

Require

Type

Description

request

true

DepositDataRequest

Request to deposite transaction data

callback

true

ICallback

Callback

  • Return values

Field

Type

Description

result

MychainBaseResult<ReplyTransactionReceipt>

response in MychainBaseResult

Note

Note: Deposite data is capped, and it is a configuation option of contract blockchain. It is set to 1 MB as default and you can change it to suit the situation.

Examples:

private static void depositDataAsync() {
        MychainParams params = new MychainParams.Builder()
                .gas(BigInteger.valueOf(4000000))
                .privateKeyList(adminPrivateKeys)
                .build();

        byte[] data = ByteUtils.hexStringToBytes("0x1234");

        DepositDataRequest request = DepositDataRequest.build(adminAccount.getIdentity(),
                adminAccount.getIdentity(), BigInteger.ZERO, data, params);

        MychainBaseResult<Response> depositDataResult = sdk.getAccountService().asyncDepositData(request, new ICallback() {
            @Override
            public void onResponse(String txHash, Response response) {
                System.out.println("depositDataAsync, txHash:" + txHash + ", result: "
                        + response.getErrorCode());

                MychainBaseResult<ReplyTransaction> queryTxResult = sdk.getQueryService().queryTransaction(txHash);

                if (!queryTxResult.isSuccess()) {
                    exit("depositDataAsync", queryTxResult.getData().getErrorCode().toString());
                }
                System.out.println("depositDataAsync success: " + ByteUtils.toHexString(queryTxResult.getData().getTransactionDO().getData()));
            }
        });
    }

DepositDataRequest

  • Request parameters

Parameter

Type

Description

identity

Identity

Transaction sender identity

identity

Identity

Transaction receiver identity

value

BigInteger

Transaction value

data

byte[]

Data to be stored, which can be customized, serializing deposited and deserialized

value

MychainParams

General parameter

Note

Note: Deposite data is capped, and it is a configuation option of contract blockchain. It is set to 1 MB as default and you can change it to suit the situation.