全部产品
Search
文档中心

信封交易接口

更新时间: 2020-05-08

信封交易是指将交易放入一个独立的组中执行从而起到隐私保护的目的。智能合约平台支持部署合约、调用合约、更新合约、查询合约的信封交易。

depositEnvelope

信封交易,同步方式调用。

  • 函数原型
  1. public DepositEnvelopeResponse depositEnvelope(DepositEnvelopeRequest request)
  • 请求参数
参数 必选 类型 说明
request true DepositEnvelopeRequest 信封交易的请求
  • 返回字段
返回字段 字段类型 说明
response DepositEnvelopeResponse 信封交易的响应
  • 示例
  1. // create Group
  2. CreateGroupRequest createGroupRequest = new CreateGroupRequest(new PublicKey(keypair.getPubkeyId()), adminAccount.getIdentity());
  3. createGroupResponse = sdk.getEnvelopeService().createGroup(createGroupRequest);
  4. // join group
  5. byte[] groupPrivateKey = createGroupResponse.getPrivateKey();
  6. PublicKey anoymousPublicKey = new PublicKey(keypair.getPubkeyId());
  7. JoinGroupRequest request = new JoinGroupRequest(groupPrivateKey, anoymousPublicKey, createGroupResponse.getGroupId(), adminAccount.getIdentity());
  8. JoinGroupResponse joinGroupResponse = sdk.getEnvelopeService().joinGroup(request);
  9. // get groupId by createGroupResponse
  10. BaseFixedSizeByteArray.Fixed20ByteArray groupId = createGroupResponse.getGroupId();
  11. // get keypair from createGroupResponse
  12. Pkcs8KeyOperator pkcs8KeyOperator = new Pkcs8KeyOperator();
  13. Keypair keypair = pkcs8KeyOperator.loadFromPrivkey(createGroupResponse.getPrivateKey());
  14. // create signerOption by keypair
  15. SignerOption signerOption = new SignerOption();
  16. List<SignerBase> signerBaseList = new ArrayList<>();
  17. signerBaseList.add(MyCrypto.getInstance().createSigner(keypair));
  18. signerOption.setSigners(signerBaseList);
  19. // create inner request
  20. CreateAccountRequest createAccountRequest = new CreateAccountRequest(accId, account);
  21. // create DepositEnvelopeRequest
  22. IHash hashTool = HashFactory.getHash();
  23. DepositEnvelopeRequest request = new DepositEnvelopeRequest(createAccountRequest, groupId, signerOption, keypair);
  24. request.setAnoymousIdentity(new Identity(hashTool.hash(keypair.getPubkeyId())));
  25. // 请参考错误信息章节,检查返回的数据
  26. DepositEnvelopeResponse response = sdk.getEnvelopeService().depositEnvelope(request);

asyncDepositRequest

信封交易,异步方式调用。

  • 函数原型
  1. public int asyncDepositRequest(DepositEnvelopeRequest request, IAsyncCallback callback)
  • 请求参数
参数 必选 类型 说明
request true DepositEnvelopeRequest 信封交易的请求
callback true IAsyncCallback 回调函数
  • 返回字段
返回字段 字段类型 说明
result int 发送返回值
  • 示例
  1. DepositEnvelopeRequest request = new DepositEnvelopeRequest(createAccountRequest, groupId, signerOption, keypair);
  2. request.setAnoymousIdentity(new Identity(hashTool.hash(keypair.getPubkeyId())));
  3. int result = sdk.getEnvelopeService().asyncDepositRequest(
  4. request,
  5. new IAsyncCallback() {
  6. @Override
  7. public void onResponse(int errorCode, Response response) {
  8. // 请参考4.11 错误信息章节,检查返回的数据
  9. System.out.println("async deposit envelope, errorCode:" + errorCode + ", response: " + response.getErrorCode());
  10. }
  11. });

信封请求的参数

  • DepositEnvelopeRequest
参数 类型 说明
anoymousIdentity Identity 匿名身份
signerOption SignerOption 签名配置选项
keypair Keypair 密钥对
  • GroupTransactionRequest

GroupTransactionRequestDepositEnvelopeRequest 的父类。

参数 类型 说明
request AbstractTransactionRequest 内层交易,包括部署合约、调用合约、更新合约。

信封请求的返回参数

  • DepositEnvelopeResponse
参数 类型 说明
transactionReceipt TransactionReceipt 交易收据
blockNumber BigInteger 区块号