alloy_rpc_types_trace/
opcode.rs1use alloy_primitives::{BlockHash, TxHash};
4use serde::{Deserialize, Serialize};
5
6#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct BlockOpcodeGas {
10 pub block_hash: BlockHash,
12 pub block_number: u64,
14 pub transactions: Vec<TransactionOpcodeGas>,
17}
18
19impl BlockOpcodeGas {
20 pub fn contains(&self, opcode: &str) -> bool {
22 self.transactions.iter().any(|tx| tx.contains(opcode))
23 }
24}
25
26#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
28#[serde(rename_all = "camelCase")]
29#[doc(alias = "TxOpcodeGas")]
30pub struct TransactionOpcodeGas {
31 #[doc(alias = "tx_hash")]
33 pub transaction_hash: TxHash,
34 pub opcode_gas: Vec<OpcodeGas>,
36}
37
38impl TransactionOpcodeGas {
39 pub fn contains(&self, opcode: &str) -> bool {
41 self.opcode_gas.iter().any(|op| op.opcode.eq_ignore_ascii_case(opcode))
42 }
43}
44
45#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
47#[serde(rename_all = "camelCase")]
48pub struct OpcodeGas {
49 pub opcode: String,
51 pub count: u64,
53 pub gas_used: u64,
57}