moonbeam_client_evm_tracing/types/
block.rs1use super::serialization::*;
20use serde::Serialize;
21
22use ethereum_types::{H160, H256, U256};
23use parity_scale_codec::{Decode, Encode};
24use sp_std::vec::Vec;
25
26#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize)]
28#[serde(rename_all = "camelCase")]
29pub struct BlockTransactionTrace {
30 #[serde(serialize_with = "h256_0x_serialize")]
31 pub tx_hash: H256,
32 pub result: crate::types::single::TransactionTrace,
33 #[serde(skip_serializing)]
34 pub tx_position: u32,
35}
36
37#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize)]
38#[serde(rename_all = "camelCase")]
39pub struct TransactionTrace {
40 #[serde(flatten)]
41 pub action: TransactionTraceAction,
42 #[serde(serialize_with = "h256_0x_serialize")]
43 pub block_hash: H256,
44 pub block_number: u32,
45 #[serde(flatten)]
46 pub output: TransactionTraceOutput,
47 pub subtraces: u32,
48 pub trace_address: Vec<u32>,
49 #[serde(serialize_with = "h256_0x_serialize")]
50 pub transaction_hash: H256,
51 pub transaction_position: u32,
52}
53
54#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize)]
55#[serde(rename_all = "camelCase", tag = "type", content = "action")]
56pub enum TransactionTraceAction {
57 #[serde(rename_all = "camelCase")]
58 Call {
59 call_type: super::CallType,
60 from: H160,
61 gas: U256,
62 #[serde(serialize_with = "bytes_0x_serialize")]
63 input: Vec<u8>,
64 to: H160,
65 value: U256,
66 },
67 #[serde(rename_all = "camelCase")]
68 Create {
69 creation_method: super::CreateType,
70 from: H160,
71 gas: U256,
72 #[serde(serialize_with = "bytes_0x_serialize")]
73 init: Vec<u8>,
74 value: U256,
75 },
76 #[serde(rename_all = "camelCase")]
77 Suicide {
78 address: H160,
79 balance: U256,
80 refund_address: H160,
81 },
82}
83
84#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize)]
85#[serde(rename_all = "camelCase")]
86pub enum TransactionTraceOutput {
87 Result(TransactionTraceResult),
88 Error(#[serde(serialize_with = "string_serialize")] Vec<u8>),
89}
90
91#[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, Serialize)]
92#[serde(rename_all = "camelCase", untagged)]
93pub enum TransactionTraceResult {
94 #[serde(rename_all = "camelCase")]
95 Call {
96 gas_used: U256,
97 #[serde(serialize_with = "bytes_0x_serialize")]
98 output: Vec<u8>,
99 },
100 #[serde(rename_all = "camelCase")]
101 Create {
102 address: H160,
103 #[serde(serialize_with = "bytes_0x_serialize")]
104 code: Vec<u8>,
105 gas_used: U256,
106 },
107 Suicide,
108}