diff --git a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/AbstractDebugTraceBlock.java b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/AbstractDebugTraceBlock.java index 87a239d6a94..f7316faee75 100644 --- a/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/AbstractDebugTraceBlock.java +++ b/ethereum/api/src/main/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/AbstractDebugTraceBlock.java @@ -102,7 +102,7 @@ protected Collection getTraces( block -> Tracer.processTracing( getBlockchainQueries(), - block.getHash(), + Optional.of(block.getHeader()), traceableState -> { List tracesList = Collections.synchronizedList(new ArrayList<>()); diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockByHashTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockByHashTest.java index 6c17661f6a5..04aae980d14 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockByHashTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockByHashTest.java @@ -22,7 +22,6 @@ import static org.mockito.Mockito.mockStatic; import static org.mockito.Mockito.when; -import org.hyperledger.besu.datatypes.Hash; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequest; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.JsonRpcRequestContext; import org.hyperledger.besu.ethereum.api.jsonrpc.internal.exception.InvalidJsonRpcParameters; @@ -33,6 +32,8 @@ import org.hyperledger.besu.ethereum.api.query.BlockchainQueries; import org.hyperledger.besu.ethereum.chain.Blockchain; import org.hyperledger.besu.ethereum.core.Block; +import org.hyperledger.besu.ethereum.core.BlockDataGenerator; +import org.hyperledger.besu.ethereum.mainnet.MainnetBlockHeaderFunctions; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.metrics.ObservableMetricsSystem; import org.hyperledger.besu.testutil.DeterministicEthScheduler; @@ -59,10 +60,7 @@ public class DebugTraceBlockByHashTest { @Mock private BlockchainQueries blockchainQueries; @Mock private ObservableMetricsSystem metricsSystem; @Mock private Blockchain blockchain; - @Mock private Block block; private DebugTraceBlockByHash debugTraceBlockByHash; - private final Hash blockHash = - Hash.fromHexString("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); @BeforeEach public void setUp() { @@ -79,13 +77,18 @@ public void nameShouldBeDebugTraceBlockByHash() { @SuppressWarnings("unchecked") @Test public void shouldReturnCorrectResponse() { - final Object[] params = new Object[] {blockHash}; + final Block block = + new BlockDataGenerator() + .block( + BlockDataGenerator.BlockOptions.create() + .setBlockHeaderFunctions(new MainnetBlockHeaderFunctions())); + + final Object[] params = new Object[] {block.getHash()}; final JsonRpcRequestContext request = new JsonRpcRequestContext(new JsonRpcRequest("2.0", "debug_traceBlockByHash", params)); when(blockchainQueries.getBlockchain()).thenReturn(blockchain); - when(blockchain.getBlockByHash(blockHash)).thenReturn(Optional.of(block)); - when(block.getHash()).thenReturn(blockHash); + when(blockchain.getBlockByHash(block.getHash())).thenReturn(Optional.of(block)); DebugTraceTransactionResult result1 = mock(DebugTraceTransactionResult.class); DebugTraceTransactionResult result2 = mock(DebugTraceTransactionResult.class); @@ -96,7 +99,10 @@ public void shouldReturnCorrectResponse() { mockedTracer .when( () -> - Tracer.processTracing(eq(blockchainQueries), eq(blockHash), any(Function.class))) + Tracer.processTracing( + eq(blockchainQueries), + eq(Optional.of(block.getHeader())), + any(Function.class))) .thenReturn(Optional.of(resultList)); final JsonRpcResponse jsonRpcResponse = debugTraceBlockByHash.response(request); diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockTest.java index 04405b50fdc..a8499d5ebed 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockTest.java @@ -154,7 +154,9 @@ public void shouldReturnCorrectResponse() { .when( () -> Tracer.processTracing( - eq(blockchainQueries), eq(block.getHash()), any(Function.class))) + eq(blockchainQueries), + eq(Optional.of(block.getHeader())), + any(Function.class))) .thenReturn(Optional.of(resultList)); final JsonRpcResponse jsonRpcResponse = debugTraceBlock.response(request);