信封交易是指将交易放入一个独立的组中执行从而起到隐私保护的目的。智能合约平台支持部署合约、调用合约、更新合约、查询合约的信封交易。
depositEnvelope
信封交易,同步方式调用。
public DepositEnvelopeResponse depositEnvelope(DepositEnvelopeRequest request)
参数 |
必选 |
类型 |
说明 |
request |
true |
DepositEnvelopeRequest |
信封交易的请求 |
返回字段 |
字段类型 |
说明 |
response |
DepositEnvelopeResponse |
信封交易的响应 |
// 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())));
// 请参考错误信息章节,检查返回的数据
DepositEnvelopeResponse response = sdk.getEnvelopeService().depositEnvelope(request);
asyncDepositRequest
信封交易,异步方式调用。
public int asyncDepositRequest(DepositEnvelopeRequest request, IAsyncCallback callback)
参数 |
必选 |
类型 |
说明 |
request |
true |
DepositEnvelopeRequest |
信封交易的请求 |
callback |
true |
IAsyncCallback |
回调函数 |
返回字段 |
字段类型 |
说明 |
result |
int |
发送返回值 |
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) {
// 请参考4.11 错误信息章节,检查返回的数据
System.out.println("async deposit envelope, errorCode:" + errorCode + ", response: " + response.getErrorCode());
}
});
信封请求的参数
参数 |
类型 |
说明 |
anoymousIdentity |
Identity |
匿名身份 |
signerOption |
SignerOption |
签名配置选项 |
keypair |
Keypair |
密钥对 |
GroupTransactionRequest
是 DepositEnvelopeRequest
的父类。
参数 |
类型 |
说明 |
request |
AbstractTransactionRequest |
内层交易,包括部署合约、调用合约、更新合约。 |
信封请求的返回参数
参数 |
类型 |
说明 |
transactionReceipt |
TransactionReceipt |
交易收据 |
blockNumber |
BigInteger |
区块号 |
在文档使用中是否遇到以下问题
更多建议
匿名提交