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: 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: 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.