moonbeam_client_evm_tracing/types/
single.rs1use super::serialization::*;
23use serde::{Deserialize, Serialize};
24
25use ethereum_types::{H160, H256, U256};
26use parity_scale_codec::{Decode, Encode};
27use sp_std::{collections::btree_map::BTreeMap, vec::Vec};
28
29#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize)]
30#[serde(rename_all = "camelCase", untagged)]
31pub enum Call {
32 Blockscout(crate::formatters::blockscout::BlockscoutCall),
33 CallTracer(crate::formatters::call_tracer::CallTracerCall),
34}
35
36#[derive(Clone, Copy, Eq, PartialEq, Debug, Encode, Decode)]
37pub enum TraceType {
38 Raw {
40 disable_storage: bool,
41 disable_memory: bool,
42 disable_stack: bool,
43 },
44 CallList,
46 Block,
48}
49
50#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize)]
52#[serde(rename_all = "camelCase", untagged)]
53pub enum TransactionTrace {
54 #[serde(rename_all = "camelCase")]
56 Raw {
57 gas: U256,
58 #[serde(with = "hex")]
59 return_value: Vec<u8>,
60 struct_logs: Vec<RawStepLog>,
61 },
62 CallList(Vec<Call>),
65 CallListNested(Call),
67}
68
69#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize)]
70#[serde(rename_all = "camelCase")]
71pub struct RawStepLog {
72 #[serde(serialize_with = "u256_serialize")]
73 pub depth: U256,
74
75 #[serde(serialize_with = "u256_serialize")]
77 pub gas: U256,
78
79 #[serde(serialize_with = "u256_serialize")]
80 pub gas_cost: U256,
81
82 #[serde(
83 serialize_with = "seq_h256_serialize",
84 skip_serializing_if = "Option::is_none"
85 )]
86 pub memory: Option<Vec<H256>>,
87
88 #[serde(serialize_with = "opcode_serialize")]
89 pub op: Vec<u8>,
90
91 #[serde(serialize_with = "u256_serialize")]
92 pub pc: U256,
93
94 #[serde(
95 serialize_with = "seq_h256_serialize",
96 skip_serializing_if = "Option::is_none"
97 )]
98 pub stack: Option<Vec<H256>>,
99
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub storage: Option<BTreeMap<H256, H256>>,
102}
103
104#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize, Deserialize)]
105#[serde(rename_all = "camelCase")]
106pub struct TraceCallConfig {
107 pub with_log: bool,
108}
109
110impl Default for TraceCallConfig {
111 fn default() -> Self {
112 Self { with_log: false }
113 }
114}
115
116#[derive(Clone, Debug, Encode, Decode, PartialEq, Eq, Serialize)]
117pub struct Log {
118 pub address: H160,
120 pub topics: Vec<H256>,
122 #[serde(serialize_with = "bytes_0x_serialize")]
124 pub data: Vec<u8>,
125}