From f96f7e1dd8caaa335a4d99a5b32e377f023f383f Mon Sep 17 00:00:00 2001 From: Gabriel-Trintinalia Date: Fri, 15 Sep 2023 11:10:16 +1000 Subject: [PATCH] Add debug trace call method Signed-off-by: Gabriel-Trintinalia --- .../internal/methods/DebugTraceCall.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceCall.java diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceCall.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceCall.java new file mode 100644 index 00000000000..6ae779c18d5 --- /dev/null +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceCall.java @@ -0,0 +1,50 @@ +/* + * Copyright Hyperledger Besu. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.ethereum.api.jsonrpc.internal.methods; + +import org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.parameters.TraceTypeParameter; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.processor.TransactionTrace; +import org.hyperledger.besu.ethereum.api.jsonrpc.internal.results.DebugTraceTransactionResult; +import org.hyperledger.besu.ethereum.api.query.BlockchainQueries; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.transaction.TransactionSimulatorResult; + +import java.util.Set; + +public class DebugTraceCall extends TraceCall { + + public DebugTraceCall( + final BlockchainQueries blockchainQueries, + final ProtocolSchedule protocolSchedule, + final TransactionSimulator transactionSimulator) { + super(blockchainQueries, protocolSchedule, transactionSimulator); + } + + @Override + public String getName() { + return RpcMethod.DEBUG_TRACE_CALL.getMethodName(); + } + + @Override + protected Object getTraceCallResult( + final ProtocolSchedule protocolSchedule, + final Set traceTypes, + final TransactionSimulatorResult result, + final TransactionTrace transactionTrace) { + return new DebugTraceTransactionResult(transactionTrace); + } +}