An envelope transaction is executed in an independent group to protect privacy. The smart contract platform supports envelope transactions of deploying, calling, updating, and querying for contracts.
depositEnvelope
This API is called synchronously for envelope transactions.
public DepositEnvelopeResponse depositEnvelope(DepositEnvelopeRequest request)
Parameter |
Required |
Type |
Description |
request |
true |
DepositEnvelopeRequest |
The envelope transaction request. |
Response field |
Field type |
Description |
response |
DepositEnvelopeResponse |
The envelope transaction response. |
// create Group
CreateGroupRequest createGroupRequest = new CreateGroupRequest(new PublicKey(keypair.getPubkeyId()), adminAccount.getIdentity());
createGroupResponse = sdk.getEnvelopeService().createGroup(createGroupRequest);
// join group
byte[] groupPrivateKey = createGroupResponse.getPrivateKey();
PublicKey anoymousPublicKey = new PublicKey(keypair.getPubkeyId());
JoinGroupRequest request = new JoinGroupRequest(groupPrivateKey, anoymousPublicKey, createGroupResponse.getGroupId(), adminAccount.getIdentity());
JoinGroupResponse joinGroupResponse = sdk.getEnvelopeService().joinGroup(request);
// get groupId by createGroupResponse
BaseFixedSizeByteArray.Fixed20ByteArray groupId = createGroupResponse.getGroupId();
// get keypair from createGroupResponse
Pkcs8KeyOperator pkcs8KeyOperator = new Pkcs8KeyOperator();
Keypair keypair = pkcs8KeyOperator.loadFromPrivkey(createGroupResponse.getPrivateKey());
// create signerOption by keypair
SignerOption signerOption = new SignerOption();
List<SignerBase> signerBaseList = new ArrayList<>();
signerBaseList.add(MyCrypto.getInstance().createSigner(keypair));
signerOption.setSigners(signerBaseList);
// create inner request
CreateAccountRequest createAccountRequest = new CreateAccountRequest(accId, account);
// create DepositEnvelopeRequest
IHash hashTool = HashFactory.getHash();
DepositEnvelopeRequest request = new DepositEnvelopeRequest(createAccountRequest, groupId, signerOption, keypair);
request.setAnoymousIdentity(new Identity(hashTool.hash(keypair.getPubkeyId())));
// Refer to the error message description document to check the returned data.
DepositEnvelopeResponse response = sdk.getEnvelopeService().depositEnvelope(request);
asyncDepositRequest
This API is called asynchronously for envelope transactions.
public int asyncDepositRequest(DepositEnvelopeRequest request, IAsyncCallback callback)
Parameter |
Required |
Type |
Description |
request |
true |
DepositEnvelopeRequest |
The envelope transaction request. |
callback |
true |
IAsyncCallback |
The callback function. |
Response field |
Field type |
Description |
result |
int |
The return value. |
DepositEnvelopeRequest request = new DepositEnvelopeRequest(createAccountRequest, groupId, signerOption, keypair);
request.setAnoymousIdentity(new Identity(hashTool.hash(keypair.getPubkeyId())));
int result = sdk.getEnvelopeService().asyncDepositRequest(
request,
new IAsyncCallback() {
@Override
public void onResponse(int errorCode, Response response) {
// Refer to the error messages in section 4.11 to check the returned data.
System.out.println("async deposit envelope, errorCode:" + errorCode + ", response: " + response.getErrorCode());
}
});
Request parameters for an envelope transaction
Parameter |
Type |
Description |
anoymousIdentity |
Identity |
The anonymous identity. |
signerOption |
SignerOption |
The signature configuration option. |
keypair |
Keypair |
The key pair. |
GroupTransactionRequest
is the parent class of DepositEnvelopeRequest
.
Parameter |
Type |
Description |
request |
AbstractTransactionRequest |
The inner transaction, including deploying, calling, and updating a contract. |
Response parameters for an envelope transaction
Parameter |
Type |
Description |
transactionReceipt |
TransactionReceipt |
The transaction receipt. |
blockNumber |
BigInteger |
The block number. |