moonbeam_rpc_core_debug/
lib.rs1use ethereum::{AccessListItem, AuthorizationList};
18use ethereum_types::{H160, H256, U256};
19use fc_rpc_core::types::Bytes;
20use jsonrpsee::{core::RpcResult, proc_macros::rpc};
21use moonbeam_client_evm_tracing::types::{block, single};
22use moonbeam_rpc_core_types::RequestBlockId;
23use serde::Deserialize;
24
25#[derive(Clone, Eq, PartialEq, Debug, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct TraceParams {
28 pub disable_storage: Option<bool>,
29 pub disable_memory: Option<bool>,
30 pub disable_stack: Option<bool>,
31 pub tracer: Option<String>,
33 pub tracer_config: Option<single::TraceCallConfig>,
34 pub timeout: Option<String>,
35}
36
37#[derive(Debug, Clone, Default, Eq, PartialEq, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct TraceCallParams {
40 pub from: Option<H160>,
42 pub to: H160,
44 pub gas_price: Option<U256>,
46 pub max_fee_per_gas: Option<U256>,
48 pub max_priority_fee_per_gas: Option<U256>,
50 pub gas: Option<U256>,
52 pub value: Option<U256>,
54 pub data: Option<Bytes>,
56 pub nonce: Option<U256>,
58 pub access_list: Option<Vec<AccessListItem>>,
60 pub authorization_list: Option<AuthorizationList>,
62 #[serde(rename = "type")]
64 pub transaction_type: Option<U256>,
65}
66
67#[rpc(server)]
68#[jsonrpsee::core::async_trait]
69pub trait Debug {
70 #[method(name = "debug_traceTransaction")]
71 async fn trace_transaction(
72 &self,
73 transaction_hash: H256,
74 params: Option<TraceParams>,
75 ) -> RpcResult<single::TransactionTrace>;
76 #[method(name = "debug_traceCall")]
77 async fn trace_call(
78 &self,
79 call_params: TraceCallParams,
80 id: RequestBlockId,
81 params: Option<TraceParams>,
82 ) -> RpcResult<single::TransactionTrace>;
83 #[method(name = "debug_traceBlockByNumber", aliases = ["debug_traceBlockByHash"])]
84 async fn trace_block(
85 &self,
86 id: RequestBlockId,
87 params: Option<TraceParams>,
88 ) -> RpcResult<Vec<block::BlockTransactionTrace>>;
89}