Search in sources :

Example 1 with PrivGetPrivateTransaction

use of org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivateTransaction in project besu by hyperledger.

the class PrivGetPrivateTransactionIntegrationTest method returnsStoredPrivateTransaction.

@Test
public void returnsStoredPrivateTransaction() {
    final PrivGetPrivateTransaction privGetPrivateTransaction = new PrivGetPrivateTransaction(privacyController, privacyIdProvider);
    final Hash blockHash = Hash.ZERO;
    final Transaction pmt = spy(privateMarkerTransaction());
    when(blockchain.getTransactionByHash(eq(pmt.getHash()))).thenReturn(Optional.of(pmt));
    when(blockchain.getTransactionLocation(eq(pmt.getHash()))).thenReturn(Optional.of(new TransactionLocation(blockHash, 0)));
    final BlockHeader blockHeader = mock(BlockHeader.class);
    when(blockHeader.getHash()).thenReturn(blockHash);
    when(blockchain.getBlockHeader(eq(blockHash))).thenReturn(Optional.of(blockHeader));
    final BytesValueRLPOutput bvrlp = new BytesValueRLPOutput();
    privateTransaction.writeTo(bvrlp);
    final String payload = Base64.getEncoder().encodeToString(bvrlp.encoded().toArrayUnsafe());
    final ArrayList<String> to = Lists.newArrayList("A1aVtMxLCUHmBVHXoZzzBgPbW/wj5axDpW9X8l91SGo=");
    final SendResponse sendResponse = enclave.send(payload, ENCLAVE_PUBLIC_KEY, to);
    final Bytes hexKey = Bytes.fromBase64String(sendResponse.getKey());
    when(pmt.getPayload()).thenReturn(hexKey);
    final Object[] params = new Object[] { pmt.getHash() };
    final JsonRpcRequestContext request = new JsonRpcRequestContext(new JsonRpcRequest("1", "priv_getPrivateTransaction", params));
    final JsonRpcSuccessResponse response = (JsonRpcSuccessResponse) privGetPrivateTransaction.response(request);
    final PrivateTransactionLegacyResult result = (PrivateTransactionLegacyResult) response.getResult();
    assertThat(new PrivateTransactionLegacyResult(this.privateTransaction)).usingRecursiveComparison().isEqualTo(result);
}
Also used : JsonRpcRequest(org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequest) SendResponse(org.hyperledger.besu.enclave.types.SendResponse) PrivateTransactionLegacyResult(org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.privacy.PrivateTransactionLegacyResult) Hash(org.hyperledger.besu.datatypes.Hash) BytesValueRLPOutput(org.hyperledger.besu.ethereum.rlp.BytesValueRLPOutput) Bytes(org.apache.tuweni.bytes.Bytes) PrivateTransaction(org.hyperledger.besu.ethereum.privacy.PrivateTransaction) PrivGetPrivateTransaction(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivateTransaction) PrivateTransactionDataFixture.privateMarkerTransaction(org.hyperledger.besu.ethereum.core.PrivateTransactionDataFixture.privateMarkerTransaction) Transaction(org.hyperledger.besu.ethereum.core.Transaction) JsonRpcRequestContext(org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext) TransactionLocation(org.hyperledger.besu.ethereum.chain.TransactionLocation) PrivGetPrivateTransaction(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivateTransaction) BlockHeader(org.hyperledger.besu.ethereum.core.BlockHeader) JsonRpcSuccessResponse(org.hyperledger.besu.ethereum.api.jsonrpc.internal.response.JsonRpcSuccessResponse) Test(org.junit.jupiter.api.Test)

Example 2 with PrivGetPrivateTransaction

use of org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivateTransaction in project besu by hyperledger.

the class PrivJsonRpcMethods method create.

@Override
protected Map<String, JsonRpcMethod> create(final PrivacyController privacyController, final PrivacyIdProvider privacyIdProvider, final PrivateMarkerTransactionFactory privateMarkerTransactionFactory) {
    final Map<String, JsonRpcMethod> RPC_METHODS = mapOf(new PrivCall(getBlockchainQueries(), privacyController, privacyIdProvider), new PrivDebugGetStateRoot(getBlockchainQueries(), privacyIdProvider, privacyController), new PrivDistributeRawTransaction(privacyController, privacyIdProvider, getPrivacyParameters().isFlexiblePrivacyGroupsEnabled()), new PrivGetCode(getBlockchainQueries(), privacyController, privacyIdProvider), new PrivGetLogs(getBlockchainQueries(), getPrivacyQueries(), privacyController, privacyIdProvider), new PrivGetPrivateTransaction(privacyController, privacyIdProvider), new PrivGetPrivacyPrecompileAddress(getPrivacyParameters()), new PrivGetTransactionCount(privacyController, privacyIdProvider), new PrivGetTransactionReceipt(getPrivacyParameters().getPrivateStateStorage(), privacyController, privacyIdProvider), new PrivGetFilterLogs(filterManager, privacyController, privacyIdProvider), new PrivGetFilterChanges(filterManager, privacyController, privacyIdProvider), new PrivNewFilter(filterManager, privacyController, privacyIdProvider), new PrivUninstallFilter(filterManager, privacyController, privacyIdProvider));
    if (!getPrivacyParameters().isFlexiblePrivacyGroupsEnabled()) {
        final Map<String, JsonRpcMethod> OFFCHAIN_METHODS = mapOf(new PrivCreatePrivacyGroup(privacyController, privacyIdProvider), new PrivDeletePrivacyGroup(privacyController, privacyIdProvider), new PrivFindPrivacyGroup(privacyController, privacyIdProvider));
        OFFCHAIN_METHODS.forEach((key, jsonRpcMethod) -> RPC_METHODS.merge(key, jsonRpcMethod, (oldVal, newVal) -> newVal));
    }
    return RPC_METHODS;
}
Also used : PrivDebugGetStateRoot(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDebugGetStateRoot) PrivGetFilterLogs(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivGetFilterLogs) PrivDeletePrivacyGroup(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDeletePrivacyGroup) PrivacyController(org.hyperledger.besu.ethereum.privacy.PrivacyController) RpcApis(org.hyperledger.besu.ethereum.api.jsonrpc.RpcApis) PrivUninstallFilter(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivUninstallFilter) PrivGetTransactionReceipt(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetTransactionReceipt) ProtocolSchedule(org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule) PrivCreatePrivacyGroup(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivCreatePrivacyGroup) FilterManager(org.hyperledger.besu.ethereum.api.jsonrpc.internal.filter.FilterManager) PrivCall(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivCall) PrivGetFilterChanges(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivGetFilterChanges) PrivacyIdProvider(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivacyIdProvider) PrivNewFilter(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivNewFilter) Map(java.util.Map) PrivGetPrivateTransaction(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivateTransaction) PrivDistributeRawTransaction(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDistributeRawTransaction) TransactionPool(org.hyperledger.besu.ethereum.eth.transactions.TransactionPool) PrivGetLogs(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetLogs) PrivDebugGetStateRoot(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDebugGetStateRoot) BlockchainQueries(org.hyperledger.besu.ethereum.api.query.BlockchainQueries) PrivGetTransactionCount(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetTransactionCount) PrivateMarkerTransactionFactory(org.hyperledger.besu.plugin.services.privacy.PrivateMarkerTransactionFactory) PrivFindPrivacyGroup(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivFindPrivacyGroup) PrivGetPrivacyPrecompileAddress(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivacyPrecompileAddress) JsonRpcMethod(org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.JsonRpcMethod) PrivGetFilterLogs(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivGetFilterLogs) PrivacyParameters(org.hyperledger.besu.ethereum.core.PrivacyParameters) PrivGetCode(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetCode) PrivGetTransactionCount(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetTransactionCount) PrivGetCode(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetCode) PrivDeletePrivacyGroup(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDeletePrivacyGroup) PrivNewFilter(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivNewFilter) PrivGetFilterChanges(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivGetFilterChanges) PrivGetTransactionReceipt(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetTransactionReceipt) PrivGetLogs(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetLogs) PrivFindPrivacyGroup(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivFindPrivacyGroup) JsonRpcMethod(org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.JsonRpcMethod) PrivGetPrivacyPrecompileAddress(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivacyPrecompileAddress) PrivGetPrivateTransaction(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivateTransaction) PrivDistributeRawTransaction(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDistributeRawTransaction) PrivCreatePrivacyGroup(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivCreatePrivacyGroup) PrivCall(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivCall) PrivUninstallFilter(org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivUninstallFilter)

Aggregations

PrivGetPrivateTransaction (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivGetPrivateTransaction)2 Map (java.util.Map)1 Bytes (org.apache.tuweni.bytes.Bytes)1 Hash (org.hyperledger.besu.datatypes.Hash)1 SendResponse (org.hyperledger.besu.enclave.types.SendResponse)1 RpcApis (org.hyperledger.besu.ethereum.api.jsonrpc.RpcApis)1 JsonRpcRequest (org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequest)1 JsonRpcRequestContext (org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext)1 FilterManager (org.hyperledger.besu.ethereum.api.jsonrpc.internal.filter.FilterManager)1 JsonRpcMethod (org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods.JsonRpcMethod)1 PrivGetFilterChanges (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivGetFilterChanges)1 PrivGetFilterLogs (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivGetFilterLogs)1 PrivUninstallFilter (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivUninstallFilter)1 PrivacyIdProvider (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.PrivacyIdProvider)1 PrivCall (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivCall)1 PrivCreatePrivacyGroup (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivCreatePrivacyGroup)1 PrivDebugGetStateRoot (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDebugGetStateRoot)1 PrivDeletePrivacyGroup (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDeletePrivacyGroup)1 PrivDistributeRawTransaction (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivDistributeRawTransaction)1 PrivFindPrivacyGroup (org.hyperledger.besu.ethereum.api.jsonrpc.internal.privacy.methods.priv.PrivFindPrivacyGroup)1