From 35b005ea0a774b60cdf44f9fc429ab7cde2d93e8 Mon Sep 17 00:00:00 2001 From: Thomas Coratger <60488569+tcoratger@users.noreply.github.com> Date: Wed, 21 Jun 2023 15:36:26 +0200 Subject: [PATCH] feat(revm): `record_logs` boolean in `TracingInspectorConfig` to limit log record (#3286) Co-authored-by: Matthias Seitz --- crates/revm/revm-inspectors/src/tracing/config.rs | 11 +++++++++++ crates/revm/revm-inspectors/src/tracing/mod.rs | 7 +++++-- crates/rpc/rpc/src/debug.rs | 3 ++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/crates/revm/revm-inspectors/src/tracing/config.rs b/crates/revm/revm-inspectors/src/tracing/config.rs index 76821b29ff..2a0cb69bd6 100644 --- a/crates/revm/revm-inspectors/src/tracing/config.rs +++ b/crates/revm/revm-inspectors/src/tracing/config.rs @@ -16,6 +16,8 @@ pub struct TracingInspectorConfig { pub record_state_diff: bool, /// Whether to ignore precompile calls. pub exclude_precompile_calls: bool, + /// Whether to record logs + pub record_logs: bool, } impl TracingInspectorConfig { @@ -27,6 +29,7 @@ impl TracingInspectorConfig { record_stack_snapshots: true, record_state_diff: false, exclude_precompile_calls: false, + record_logs: true, } } @@ -40,6 +43,7 @@ impl TracingInspectorConfig { record_stack_snapshots: false, record_state_diff: false, exclude_precompile_calls: true, + record_logs: false, } } @@ -53,6 +57,7 @@ impl TracingInspectorConfig { record_stack_snapshots: true, record_state_diff: true, exclude_precompile_calls: false, + record_logs: false, } } @@ -97,4 +102,10 @@ impl TracingInspectorConfig { self.record_state_diff = record_state_diff; self } + + /// Configure whether the tracer should record logs + pub fn set_record_logs(mut self, record_logs: bool) -> Self { + self.record_logs = record_logs; + self + } } diff --git a/crates/revm/revm-inspectors/src/tracing/mod.rs b/crates/revm/revm-inspectors/src/tracing/mod.rs index 1bbad26874..51bbc46f7a 100644 --- a/crates/revm/revm-inspectors/src/tracing/mod.rs +++ b/crates/revm/revm-inspectors/src/tracing/mod.rs @@ -336,8 +336,11 @@ where let trace_idx = self.last_trace_idx(); let trace = &mut self.traces.arena[trace_idx]; - trace.ordering.push(LogCallOrder::Log(trace.logs.len())); - trace.logs.push(RawLog { topics: topics.to_vec(), data: data.clone() }); + + if self.config.record_logs { + trace.ordering.push(LogCallOrder::Log(trace.logs.len())); + trace.logs.push(RawLog { topics: topics.to_vec(), data: data.clone() }); + } } fn step_end( diff --git a/crates/rpc/rpc/src/debug.rs b/crates/rpc/rpc/src/debug.rs index 3eb98eabcc..3cdf35b8b4 100644 --- a/crates/rpc/rpc/src/debug.rs +++ b/crates/rpc/rpc/src/debug.rs @@ -290,7 +290,8 @@ where .map_err(|_| EthApiError::InvalidTracerConfig)?; let mut inspector = TracingInspector::new( - TracingInspectorConfig::from_geth_config(&config), + TracingInspectorConfig::from_geth_config(&config) + .set_record_logs(call_config.with_log.unwrap_or_default()), ); let _ = self