From f78f0302f10e4c087b306daf92aba40540bad881 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Fri, 14 Jul 2023 09:59:57 +0200 Subject: [PATCH] fix(rpc): serialize traces always as vec (#3770) --- .../revm/revm-inspectors/src/tracing/builder/parity.rs | 7 ++++++- crates/rpc/rpc-types/src/eth/trace/parity.rs | 9 +++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/revm/revm-inspectors/src/tracing/builder/parity.rs b/crates/revm/revm-inspectors/src/tracing/builder/parity.rs index ba73f6cef0..cce86c4344 100644 --- a/crates/revm/revm-inspectors/src/tracing/builder/parity.rs +++ b/crates/revm/revm-inspectors/src/tracing/builder/parity.rs @@ -138,7 +138,12 @@ impl ParityTraceBuilder { let (trace, vm_trace, state_diff) = self.into_trace_type_traces(trace_types); - TraceResults { output: output.into(), trace, vm_trace, state_diff } + TraceResults { + output: output.into(), + trace: trace.unwrap_or_default(), + vm_trace, + state_diff, + } } /// Consumes the inspector and returns the trace results according to the configured trace diff --git a/crates/rpc/rpc-types/src/eth/trace/parity.rs b/crates/rpc/rpc-types/src/eth/trace/parity.rs index 7fbea1bbac..fcc5e54bbb 100644 --- a/crates/rpc/rpc-types/src/eth/trace/parity.rs +++ b/crates/rpc/rpc-types/src/eth/trace/parity.rs @@ -30,12 +30,13 @@ pub enum TraceType { pub struct TraceResults { /// Output of the trace pub output: Bytes, - /// Enabled if [TraceType::Trace] is provided - pub trace: Option>, - /// Enabled if [TraceType::VmTrace] is provided - pub vm_trace: Option, /// Enabled if [TraceType::StateDiff] is provided pub state_diff: Option, + /// Enabled if [TraceType::Trace] is provided, otherwise an empty vec + #[serde(default)] + pub trace: Vec, + /// Enabled if [TraceType::VmTrace] is provided + pub vm_trace: Option, } /// A `FullTrace` with an additional transaction hash