Skip to content

Commit de01f08

Browse files
authored
fix: use correct trace_call params (#5214)
1 parent aa4a39e commit de01f08

File tree

4 files changed

+33
-17
lines changed

4 files changed

+33
-17
lines changed

crates/rpc/rpc-api/src/trace.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
use jsonrpsee::{core::RpcResult, proc_macros::rpc};
22
use reth_primitives::{BlockId, Bytes, B256};
33
use reth_rpc_types::{
4-
trace::{filter::TraceFilter, parity::*, tracerequest::TraceRequest},
5-
CallRequest, Index,
4+
state::StateOverride,
5+
trace::{filter::TraceFilter, parity::*},
6+
BlockOverrides, CallRequest, Index,
67
};
78
use std::collections::HashSet;
89

@@ -12,7 +13,14 @@ use std::collections::HashSet;
1213
pub trait TraceApi {
1314
/// Executes the given call and returns a number of possible traces for it.
1415
#[method(name = "call")]
15-
async fn trace_call(&self, trace_request: TraceRequest) -> RpcResult<TraceResults>;
16+
async fn trace_call(
17+
&self,
18+
call: CallRequest,
19+
trace_types: HashSet<TraceType>,
20+
block_id: Option<BlockId>,
21+
state_overrides: Option<StateOverride>,
22+
block_overrides: Option<Box<BlockOverrides>>,
23+
) -> RpcResult<TraceResults>;
1624

1725
/// Performs multiple call traces on top of the same block. i.e. transaction n will be executed
1826
/// on top of a pending block with all n-1 transactions applied (traced) first. Allows to trace

crates/rpc/rpc-types/src/eth/trace/tracerequest.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ use crate::{
77
use serde::{Deserialize, Serialize};
88
use std::collections::HashSet;
99

10-
/// Trace Request builder style function implementation
10+
/// Container type for `trace_call` arguments
1111
#[derive(Debug, Serialize, Deserialize)]
12-
pub struct TraceRequest {
12+
pub struct TraceCallRequest {
1313
/// call request object
1414
pub call: CallRequest,
1515
/// trace types
@@ -22,8 +22,8 @@ pub struct TraceRequest {
2222
pub block_overrides: Option<Box<BlockOverrides>>,
2323
}
2424

25-
impl TraceRequest {
26-
/// Returns a new [`TraceRequest`] given a [`CallRequest`] and [`HashSet<TraceType>`]
25+
impl TraceCallRequest {
26+
/// Returns a new [`TraceCallRequest`] given a [`CallRequest`] and [`HashSet<TraceType>`]
2727
pub fn new(call: CallRequest) -> Self {
2828
Self {
2929
call,

crates/rpc/rpc/src/trace.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ use reth_revm::{
2020
};
2121
use reth_rpc_api::TraceApiServer;
2222
use reth_rpc_types::{
23-
trace::{filter::TraceFilter, parity::*, tracerequest::TraceRequest},
24-
BlockError, CallRequest, Index,
23+
state::StateOverride,
24+
trace::{filter::TraceFilter, parity::*, tracerequest::TraceCallRequest},
25+
BlockError, BlockOverrides, CallRequest, Index,
2526
};
2627
use revm::{db::CacheDB, primitives::Env};
2728
use revm_primitives::db::DatabaseCommit;
@@ -65,10 +66,8 @@ where
6566
Eth: EthTransactions + 'static,
6667
{
6768
/// Executes the given call and returns a number of possible traces for it.
68-
pub async fn trace_call(&self, trace_request: TraceRequest) -> EthResult<TraceResults> {
69-
let at = trace_request
70-
.block_id
71-
.unwrap_or(reth_rpc_types::BlockId::Number(reth_rpc_types::BlockNumberOrTag::Latest));
69+
pub async fn trace_call(&self, trace_request: TraceCallRequest) -> EthResult<TraceResults> {
70+
let at = trace_request.block_id.unwrap_or(BlockId::Number(BlockNumberOrTag::Latest));
7271
let config = tracing_config(&trace_request.trace_types);
7372
let overrides =
7473
EvmOverrides::new(trace_request.state_overrides, trace_request.block_overrides);
@@ -435,9 +434,18 @@ where
435434
/// Executes the given call and returns a number of possible traces for it.
436435
///
437436
/// Handler for `trace_call`
438-
async fn trace_call(&self, trace_request: TraceRequest) -> Result<TraceResults> {
437+
async fn trace_call(
438+
&self,
439+
call: CallRequest,
440+
trace_types: HashSet<TraceType>,
441+
block_id: Option<BlockId>,
442+
state_overrides: Option<StateOverride>,
443+
block_overrides: Option<Box<BlockOverrides>>,
444+
) -> Result<TraceResults> {
439445
let _permit = self.acquire_trace_permit().await;
440-
Ok(TraceApi::trace_call(self, trace_request).await?)
446+
let request =
447+
TraceCallRequest { call, trace_types, block_id, state_overrides, block_overrides };
448+
Ok(TraceApi::trace_call(self, request).await?)
441449
}
442450

443451
/// Handler for `trace_callMany`

examples/trace-transaction-cli/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use reth::{
1919
primitives::{Address, IntoRecoveredTransaction},
2020
rpc::{
2121
compat::transaction::transaction_to_call_request,
22-
types::trace::{parity::TraceType, tracerequest::TraceRequest},
22+
types::trace::{parity::TraceType, tracerequest::TraceCallRequest},
2323
},
2424
tasks::TaskSpawner,
2525
transaction_pool::TransactionPool,
@@ -80,7 +80,7 @@ impl RethNodeCommandConfig for RethCliTxpoolExt {
8080
let callrequest =
8181
transaction_to_call_request(tx.to_recovered_transaction());
8282
let tracerequest =
83-
TraceRequest::new(callrequest).with_trace_type(TraceType::Trace);
83+
TraceCallRequest::new(callrequest).with_trace_type(TraceType::Trace);
8484
if let Ok(trace_result) = traceapi.trace_call(tracerequest).await {
8585
println!(
8686
"trace result for transaction : {:?} is {:?}",

0 commit comments

Comments
 (0)