From 0aa41a35f3c18ad241c11be35dd720a699715dbc Mon Sep 17 00:00:00 2001 From: rakita Date: Fri, 14 Feb 2025 23:28:49 +0100 Subject: [PATCH] rest of it --- bins/revme/CHANGELOG.md | 2 +- book/src/architecture.md | 12 +- book/src/framework.md | 2 +- crates/context/interface/src/result.rs | 20 +-- crates/context/interface/src/transaction.rs | 8 +- .../interface/src/transaction/alloy_types.rs | 8 +- .../interface/src/transaction/eip2930.rs | 2 +- .../interface/src/transaction/eip7702.rs | 2 +- crates/database/interface/src/lib.rs | 1 - crates/handler/src/handler.rs | 6 +- crates/handler/src/lib.rs | 2 +- crates/handler/src/mainnet_handler.rs | 4 +- crates/handler/src/post_execution.rs | 4 +- crates/handler/src/pre_execution.rs | 2 +- crates/handler/src/validation.rs | 2 +- crates/inspector/src/inspector.rs | 11 +- crates/inspector/src/mainnet_inspect.rs | 8 +- crates/inspector/src/traits.rs | 9 +- crates/interpreter/src/instruction_result.rs | 10 +- .../src/interpreter/loop_control.rs | 4 +- crates/optimism/src/api/builder.rs | 4 +- crates/optimism/src/api/exec.rs | 12 +- crates/optimism/src/handler.rs | 18 +-- crates/optimism/src/transaction.rs | 2 +- .../optimism/src/transaction/abstraction.rs | 4 +- crates/revm/CHANGELOG.md | 4 +- crates/revm/src/mainnet_exec.rs | 2 +- examples/erc20_gas/src/exec.rs | 2 +- examples/erc20_gas/src/handler.rs | 4 +- tests/pectra/.meta/index.json | 128 +++++++++--------- 30 files changed, 148 insertions(+), 151 deletions(-) diff --git a/bins/revme/CHANGELOG.md b/bins/revme/CHANGELOG.md index 6598ae6748..938ef259b5 100644 --- a/bins/revme/CHANGELOG.md +++ b/bins/revme/CHANGELOG.md @@ -144,7 +144,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - k256 compile error ([#451](https://github.com/bluealloy/revm/pull/451)) ### Other -- *(EvmBuilder)* rename builder functions toHandlerTrCfg ([#1050](https://github.com/bluealloy/revm/pull/1050)) +- *(EvmBuilder)* rename builder functions to HandlerCfg ([#1050](https://github.com/bluealloy/revm/pull/1050)) - *(Interpreter)* Split calls to separate functions ([#1005](https://github.com/bluealloy/revm/pull/1005)) - *(revme)* EmptyDb Blockhash string, json-outcome flag, set prevrandao in statetest ([#994](https://github.com/bluealloy/revm/pull/994)) - *(revme)* add recovery of address from secret key ([#992](https://github.com/bluealloy/revm/pull/992)) diff --git a/book/src/architecture.md b/book/src/architecture.md index b3d498efd0..f21a7754a4 100644 --- a/book/src/architecture.md +++ b/book/src/architecture.md @@ -10,12 +10,12 @@ Revm consist of few traits that implement functionality of the EVM. The main tra * **EvmTr**: This trait allows as to access main EVM fields and to run interpreter. It defines **Context**, **Precompiles**, **Instructions**. Docs * **ContextTr**: is gained from EvmTr and consist of types needed for execution. It defines environment such as block and transaction, database for runtime fetching of accounts and storage, journal for status changes and revert handling and few more fields. Docs * **Handler**: is a trait that by default implements Ethereum logic, it takes EvmTr as a input. Entry point is a `run` function. Docs -* **Frame**: is a associate type ofHandlerTr and contains runtime data of the call and logic of executing the call, default impl is a type is EthFrame. Docs +* **Frame**: is a associate type ofHandler and contains runtime data of the call and logic of executing the call, default impl is a type is EthFrame. Docs Inspection for tracing is extensing above traits with: -* **InspectorEvmTrr** is derived from EvmTr and allows running Evm in Inspection mode. It contains **Inspector** associate type. Docs -* **InspectorHandler** is derived fromHandlerTr and allows running Evm in Inspection mode. Entry point is `inspect_run` function and it calls a alternative functions for execution loop that includes inspector calls. Docs -* **Inspector** is a a user oriented trait that is used for inspection of the EVM. It is used for tracing. It is part of Evm struct and it is called from InspectorHandler and InspectorEvmTrr. Docs +* **InspectorEvmTr** is derived from EvmTr and allows running Evm in Inspection mode. It contains **Inspector** associate type. Docs +* **InspectorHandler** is derived fromHandler and allows running Evm in Inspection mode. Entry point is `inspect_run` function and it calls a alternative functions for execution loop that includes inspector calls. Docs +* **Inspector** is a a user oriented trait that is used for inspection of the EVM. It is used for tracing. It is part of Evm struct and it is called from InspectorHandler and InspectorEvmTr. Docs ### Simplified code @@ -27,7 +27,7 @@ pub trait EvmTr { fn execute_interpreter(..); } -pub trait HandlerTr { +pub trait Handler { type Evm: EvmTr; type Frame: Frame; ... @@ -36,7 +36,7 @@ pub trait HandlerTr { ``` ### flow of execution -Execution flow can be found here (TODO Move to codebase toHandlerTr trait): +Execution flow can be found here (TODO Move to codebase toHandler trait): * It starts with creation of new EVM instance * Building of the Context * Building of the EVM. Inspector/Precompiles are created. diff --git a/book/src/framework.md b/book/src/framework.md index 476d405431..b223fe0766 100644 --- a/book/src/framework.md +++ b/book/src/framework.md @@ -8,7 +8,7 @@ Steps to implement a new variant: 1. Include Revm 2. Add main Evm type `MyEvm` and give it a Context, Precompile, Instructions and optionally Inspector. 3. Implement EvmTr for `MyEvm`. -4. Create a empty `MyEvmHandler` type and implementHandlerTr for it. Override any logic that you want. +4. Create a empty `MyEvmHandler` type and implementHandler for it. Override any logic that you want. 5. Now you can use `MyEvmHandler` to run your own `MyEvm` instance. Other steps are more for agronomics and easier usage. 6. Create a `MyContextBuilder` trait that will build your context with default types you want to use. 7. Create a `MyEvmBuilder` trait that will build your Evm with default instructions and precompiles. diff --git a/crates/context/interface/src/result.rs b/crates/context/interface/src/result.rs index 1e986b0dfc..0cd6fc7174 100644 --- a/crates/context/interface/src/result.rs +++ b/crates/context/interface/src/result.rs @@ -5,24 +5,24 @@ use primitives::{Address, Bytes, Log, U256}; use state::EvmState; use std::{boxed::Box, string::String, vec::Vec}; -pub trait HaltReasonT: Clone + Debug + PartialEq + Eq + From {} +pub trait HaltReasonTr: Clone + Debug + PartialEq + Eq + From {} -impl HaltReasonT for T where T: Clone + Debug + PartialEq + Eq + From {} +impl HaltReasonTr for T where T: Clone + Debug + PartialEq + Eq + From {} #[derive(Debug, Clone, PartialEq, Eq)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub struct ResultAndState { +pub struct ResultAndState { /// Status of execution - pub result: ExecutionResult, + pub result: ExecutionResult, /// State that got updated pub state: EvmState, } -impl ResultAndState { +impl ResultAndState { /// Maps a `DBError` to a new error type using the provided closure, leaving other variants unchanged. pub fn map_haltreason(self, op: F) -> ResultAndState where - F: FnOnce(HaltReasonT) -> OHR, + F: FnOnce(HaltReasonTr) -> OHR, { ResultAndState { result: self.result.map_haltreason(op), @@ -34,7 +34,7 @@ impl ResultAndState { /// Result of a transaction execution #[derive(Clone, Debug, PartialEq, Eq, Hash)] #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -pub enum ExecutionResult { +pub enum ExecutionResult { /// Returned successfully Success { reason: SuccessReason, @@ -47,13 +47,13 @@ pub enum ExecutionResult { Revert { gas_used: u64, output: Bytes }, /// Reverted for various reasons and spend all gas Halt { - reason: HaltReasonT, + reason: HaltReasonTr, /// Halting will spend all the gas, and will be equal to gas_limit. gas_used: u64, }, } -impl ExecutionResult { +impl ExecutionResult { /// Returns if transaction execution is successful. /// /// 1 indicates success, 0 indicates revert. @@ -66,7 +66,7 @@ impl ExecutionResult { /// Maps a `DBError` to a new error type using the provided closure, leaving other variants unchanged. pub fn map_haltreason(self, op: F) -> ExecutionResult where - F: FnOnce(HaltReasonT) -> OHR, + F: FnOnce(HaltReasonTr) -> OHR, { match self { Self::Success { diff --git a/crates/context/interface/src/transaction.rs b/crates/context/interface/src/transaction.rs index f71306bb17..8ee1820dff 100644 --- a/crates/context/interface/src/transaction.rs +++ b/crates/context/interface/src/transaction.rs @@ -3,8 +3,8 @@ pub mod eip2930; pub mod eip7702; pub mod transaction_type; -pub use eip2930::AccessListT; -pub use eip7702::AuthorizationT; +pub use eip2930::AccessListTr; +pub use eip7702::AuthorizationTr; use specification::eip4844::GAS_PER_BLOB; pub use transaction_type::TransactionType; @@ -24,8 +24,8 @@ pub trait TransactionError: Debug + core::error::Error {} /// deprecated by not returning tx_type. #[auto_impl(&, Box, Arc, Rc)] pub trait Transaction { - type AccessList: AccessListT; - type Authorization: AuthorizationT; + type AccessList: AccessListTr; + type Authorization: AuthorizationTr; /// Returns the transaction type. /// diff --git a/crates/context/interface/src/transaction/alloy_types.rs b/crates/context/interface/src/transaction/alloy_types.rs index 0bc18d246d..87c4c13a35 100644 --- a/crates/context/interface/src/transaction/alloy_types.rs +++ b/crates/context/interface/src/transaction/alloy_types.rs @@ -1,10 +1,10 @@ -use super::{AccessListT, AuthorizationT}; +use super::{AccessListTr, AuthorizationTr}; use primitives::{Address, B256, U256}; use alloy_eip2930::AccessList; use alloy_eip7702::{RecoveredAuthorization, SignedAuthorization}; -impl AccessListT for AccessList { +impl AccessListTr for AccessList { fn access_list(&self) -> impl Iterator)> { self.0 .iter() @@ -12,7 +12,7 @@ impl AccessListT for AccessList { } } -impl AuthorizationT for SignedAuthorization { +impl AuthorizationTr for SignedAuthorization { fn authority(&self) -> Option
{ self.recover_authority().ok() } @@ -30,7 +30,7 @@ impl AuthorizationT for SignedAuthorization { } } -impl AuthorizationT for RecoveredAuthorization { +impl AuthorizationTr for RecoveredAuthorization { fn authority(&self) -> Option
{ self.authority() } diff --git a/crates/context/interface/src/transaction/eip2930.rs b/crates/context/interface/src/transaction/eip2930.rs index 63d2ff1c98..7621c11b12 100644 --- a/crates/context/interface/src/transaction/eip2930.rs +++ b/crates/context/interface/src/transaction/eip2930.rs @@ -9,7 +9,7 @@ use primitives::{Address, B256}; /// /// Number of account and storage slots is used to calculate initial tx gas cost. #[auto_impl(&, Box, Arc, Rc)] -pub trait AccessListT { +pub trait AccessListTr { /// Iterate over access list. fn access_list(&self) -> impl Iterator)>; diff --git a/crates/context/interface/src/transaction/eip7702.rs b/crates/context/interface/src/transaction/eip7702.rs index 9a9a2d30c9..85b1702e13 100644 --- a/crates/context/interface/src/transaction/eip7702.rs +++ b/crates/context/interface/src/transaction/eip7702.rs @@ -3,7 +3,7 @@ use primitives::{Address, U256}; /// Authorization trait. #[auto_impl(&, Box, Arc, Rc)] -pub trait AuthorizationT { +pub trait AuthorizationTr { /// Authority address. /// /// # Note diff --git a/crates/database/interface/src/lib.rs b/crates/database/interface/src/lib.rs index 825566fb5c..51676c4072 100644 --- a/crates/database/interface/src/lib.rs +++ b/crates/database/interface/src/lib.rs @@ -34,7 +34,6 @@ impl DBErrorMarker for String {} pub trait Database { /// The database error type. type Error: DBErrorMarker + Error; - //type Bytecode: BytecodeT; /// Gets basic account information. fn basic(&mut self, address: Address) -> Result, Self::Error>; diff --git a/crates/handler/src/handler.rs b/crates/handler/src/handler.rs index ef28d609bc..3a3c9002cd 100644 --- a/crates/handler/src/handler.rs +++ b/crates/handler/src/handler.rs @@ -6,7 +6,7 @@ use auto_impl::auto_impl; use context::Evm; use context_interface::ContextTr; use context_interface::{ - result::{HaltReasonT, InvalidHeader, InvalidTransaction, ResultAndState}, + result::{HaltReasonTr, InvalidHeader, InvalidTransaction, ResultAndState}, Cfg, Database, Journal, Transaction, }; use core::mem; @@ -97,7 +97,7 @@ pub trait EvmTr { fn ctx_precompiles(&mut self) -> (&mut Self::Context, &mut Self::Precompiles); } -pub trait HandlerTr { +pub trait Handler { type Evm: EvmTr)>>>; type Error: EvmTrError; // TODO `FrameResult` should be a generic trait. @@ -109,7 +109,7 @@ pub trait HandlerTr { FrameInit = FrameInput, >; // TODO `HaltReason` should be part of the output. - type HaltReason: HaltReasonT; + type HaltReason: HaltReasonTr; #[inline] fn run( diff --git a/crates/handler/src/lib.rs b/crates/handler/src/lib.rs index 52cfe38cee..dc3dd1b4a0 100644 --- a/crates/handler/src/lib.rs +++ b/crates/handler/src/lib.rs @@ -22,7 +22,7 @@ pub mod validation; // Public exports pub use frame::{return_create, return_eofcreate, ContextTrDbError, EthFrame, Frame}; pub use frame_data::{FrameData, FrameResult}; -pub use handler::{EvmTr, EvmTrError, HandlerTr}; +pub use handler::{EvmTr, EvmTrError, Handler}; pub use item_or_result::{FrameInitOrResult, FrameOrResult, ItemOrResult}; pub use mainnet_handler::MainnetHandler; pub use precompile_provider::{EthPrecompiles, PrecompileProvider}; diff --git a/crates/handler/src/mainnet_handler.rs b/crates/handler/src/mainnet_handler.rs index 7764c44fef..25ecbc2b09 100644 --- a/crates/handler/src/mainnet_handler.rs +++ b/crates/handler/src/mainnet_handler.rs @@ -1,4 +1,4 @@ -use super::{EvmTrError, HandlerTr}; +use super::{EvmTrError, Handler}; use crate::{EvmTr, Frame, FrameResult}; use context_interface::{result::HaltReason, ContextTr, Journal}; use interpreter::FrameInput; @@ -10,7 +10,7 @@ pub struct MainnetHandler { pub _phantom: core::marker::PhantomData<(CTX, ERROR, FRAME)>, } -impl HandlerTr for MainnetHandler +impl Handler for MainnetHandler where EVM: EvmTr)>>>, ERROR: EvmTrError, diff --git a/crates/handler/src/post_execution.rs b/crates/handler/src/post_execution.rs index 5a41c1c624..3a1d1dc47c 100644 --- a/crates/handler/src/post_execution.rs +++ b/crates/handler/src/post_execution.rs @@ -2,7 +2,7 @@ use super::frame_data::FrameResult; use context_interface::ContextTr; use context_interface::{ journaled_state::Journal, - result::{ExecutionResult, HaltReasonT, ResultAndState}, + result::{ExecutionResult, HaltReasonTr, ResultAndState}, Block, Cfg, Database, Transaction, }; use interpreter::{Gas, InitialAndFloorGas, SuccessOrHalt}; @@ -89,7 +89,7 @@ pub fn reward_beneficiary( /// TODO make Journal FinalOutput more generic. pub fn output< CTX: ContextTr)>>, - HALTREASON: HaltReasonT, + HALTREASON: HaltReasonTr, >( context: &mut CTX, // TODO, make this more generic and nice. diff --git a/crates/handler/src/pre_execution.rs b/crates/handler/src/pre_execution.rs index 7f00d7e2c2..5873aec514 100644 --- a/crates/handler/src/pre_execution.rs +++ b/crates/handler/src/pre_execution.rs @@ -3,7 +3,7 @@ //! They handle initial setup of the EVM, call loop and the final return of the EVM use bytecode::Bytecode; -use context_interface::transaction::{AccessListT, AuthorizationT}; +use context_interface::transaction::{AccessListTr, AuthorizationTr}; use context_interface::ContextTr; use context_interface::{ journaled_state::Journal, diff --git a/crates/handler/src/validation.rs b/crates/handler/src/validation.rs index 8d965e148e..3f7e32b085 100644 --- a/crates/handler/src/validation.rs +++ b/crates/handler/src/validation.rs @@ -1,4 +1,4 @@ -use context_interface::transaction::AccessListT; +use context_interface::transaction::AccessListTr; use context_interface::ContextTr; use context_interface::{ journaled_state::Journal, diff --git a/crates/inspector/src/inspector.rs b/crates/inspector/src/inspector.rs index f1219c7942..5ad0558336 100644 --- a/crates/inspector/src/inspector.rs +++ b/crates/inspector/src/inspector.rs @@ -1,10 +1,10 @@ -use crate::{InspectorEvmTrr, InspectorFrame}; +use crate::{InspectorEvmTr, InspectorFrame}; use auto_impl::auto_impl; use revm::{ context::{Cfg, JournalEntry, JournaledState}, context_interface::{result::ResultAndState, ContextTr, Database, Transaction}, handler::{ - execution, EvmTr, Frame, FrameInitOrResult, FrameOrResult, FrameResult, HandlerTr, + execution, EvmTr, Frame, FrameInitOrResult, FrameOrResult, FrameResult, Handler, ItemOrResult, }, interpreter::{ @@ -181,11 +181,10 @@ impl JournalExt for JournaledState { } } -pub trait InspectorHandler: HandlerTr +pub trait InspectorHandler: Handler where - Self::Evm: InspectorEvmTrr< - Inspector: Inspector<<::Evm as EvmTr>::Context, Self::IT>, - >, + Self::Evm: + InspectorEvmTr::Evm as EvmTr>::Context, Self::IT>>, Self::Frame: InspectorFrame, { type IT: InterpreterTypes; diff --git a/crates/inspector/src/mainnet_inspect.rs b/crates/inspector/src/mainnet_inspect.rs index 6d6fac559d..01005b7dd4 100644 --- a/crates/inspector/src/mainnet_inspect.rs +++ b/crates/inspector/src/mainnet_inspect.rs @@ -2,7 +2,7 @@ use revm::{ context::{setters::ContextSetters, Evm}, context_interface::{ContextTr, Journal}, handler::{ - instructions::EthInstructions, EthFrame, EvmTr, EvmTrError, Frame, FrameResult, HandlerTr, + instructions::EthInstructions, EthFrame, EvmTr, EvmTrError, Frame, FrameResult, Handler, MainnetHandler, PrecompileProvider, }, interpreter::{interpreter::EthInterpreter, FrameInput, InterpreterResult}, @@ -13,15 +13,15 @@ use revm::{ use std::vec::Vec; use crate::{ - InspectCommitEvm, InspectEvm, Inspector, InspectorEvmTrr, InspectorFrame, InspectorHandler, + InspectCommitEvm, InspectEvm, Inspector, InspectorEvmTr, InspectorFrame, InspectorHandler, JournalExt, }; impl InspectorHandler for MainnetHandler where - EVM: InspectorEvmTrr< + EVM: InspectorEvmTr< Context: ContextTr)>>, - Inspector: Inspector<<::Evm as EvmTr>::Context, EthInterpreter>, + Inspector: Inspector<<::Evm as EvmTr>::Context, EthInterpreter>, >, ERROR: EvmTrError, FRAME: Frame diff --git a/crates/inspector/src/traits.rs b/crates/inspector/src/traits.rs index 0775e16aca..bb822a6a99 100644 --- a/crates/inspector/src/traits.rs +++ b/crates/inspector/src/traits.rs @@ -1,3 +1,4 @@ +use crate::{inspect_instructions, Inspector, JournalExt}; use revm::{ context::{setters::ContextSetters, Evm}, context_interface::ContextTr, @@ -12,10 +13,8 @@ use revm::{ precompile::PrecompileErrors, }; -use crate::{inspect_instructions, Inspector, JournalExt}; - /// Inspector EVM trait. -pub trait InspectorEvmTrr: EvmTr { +pub trait InspectorEvmTr: EvmTr { type Inspector; fn inspector(&mut self) -> &mut Self::Inspector; @@ -30,7 +29,7 @@ pub trait InspectorEvmTrr: EvmTr { ) -> ::Output; } -impl InspectorEvmTrr for Evm +impl InspectorEvmTr for Evm where CTX: ContextTr + ContextSetters, I: InstructionProvider, @@ -86,7 +85,7 @@ where InterpreterTypes = EthInterpreter, Output = InterpreterAction, >, - > + InspectorEvmTrr, + > + InspectorEvmTr, ERROR: From> + From, { type IT = EthInterpreter; diff --git a/crates/interpreter/src/instruction_result.rs b/crates/interpreter/src/instruction_result.rs index 0da3ad5305..f440724c68 100644 --- a/crates/interpreter/src/instruction_result.rs +++ b/crates/interpreter/src/instruction_result.rs @@ -262,15 +262,15 @@ pub enum InternalResult { } #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] -pub enum SuccessOrHalt { +pub enum SuccessOrHalt { Success(SuccessReason), Revert, - Halt(HaltReasonT), + Halt(HaltReasonTr), FatalExternalError, Internal(InternalResult), } -impl SuccessOrHalt { +impl SuccessOrHalt { /// Returns true if the transaction returned successfully without halts. #[inline] pub fn is_success(self) -> bool { @@ -300,7 +300,7 @@ impl SuccessOrHalt { /// Returns the [HaltReason] value the EVM has experienced an exceptional halt #[inline] - pub fn to_halt(self) -> Option { + pub fn to_halt(self) -> Option { match self { SuccessOrHalt::Halt(reason) => Some(reason), _ => None, @@ -314,7 +314,7 @@ impl> From for SuccessOrHalt { } } -impl> From for SuccessOrHalt { +impl> From for SuccessOrHalt { fn from(result: InstructionResult) -> Self { match result { InstructionResult::Continue => Self::Internal(InternalResult::InternalContinue), // used only in interpreter loop diff --git a/crates/interpreter/src/interpreter/loop_control.rs b/crates/interpreter/src/interpreter/loop_control.rs index 9f60b8cfc0..8e7b609290 100644 --- a/crates/interpreter/src/interpreter/loop_control.rs +++ b/crates/interpreter/src/interpreter/loop_control.rs @@ -1,4 +1,4 @@ -use crate::interpreter_types::LoopControl as LoopControlT; +use crate::interpreter_types::LoopControl as LoopControlTr; use crate::{Gas, InstructionResult, InterpreterAction}; #[cfg(feature = "serde")] use serde::{Deserialize, Serialize}; @@ -30,7 +30,7 @@ impl LoopControl { } } -impl LoopControlT for LoopControl { +impl LoopControlTr for LoopControl { fn set_instruction_result(&mut self, result: InstructionResult) { self.instruction_result = result; } diff --git a/crates/optimism/src/api/builder.rs b/crates/optimism/src/api/builder.rs index 8d00f55faa..931df3d04f 100644 --- a/crates/optimism/src/api/builder.rs +++ b/crates/optimism/src/api/builder.rs @@ -1,4 +1,4 @@ -use crate::{evm::OpEvm, transaction::OpTxT, L1BlockInfo, OpSpecId, OpTransaction}; +use crate::{evm::OpEvm, transaction::OpTxTr, L1BlockInfo, OpSpecId, OpTransaction}; use precompile::Log; use revm::{ context::{BlockEnv, Cfg, CfgEnv, TxEnv}, @@ -24,7 +24,7 @@ pub trait OpBuilder: Sized { impl OpBuilder for Context where BLOCK: Block, - TX: OpTxT, + TX: OpTxTr, CFG: Cfg, DB: Database, JOURNAL: Journal)>, diff --git a/crates/optimism/src/api/exec.rs b/crates/optimism/src/api/exec.rs index 95ce12ad43..47b4d7e207 100644 --- a/crates/optimism/src/api/exec.rs +++ b/crates/optimism/src/api/exec.rs @@ -1,5 +1,5 @@ use crate::{ - evm::OpEvm, handler::OpHandler, transaction::OpTxT, L1BlockInfo, OpHaltReason, OpSpecId, + evm::OpEvm, handler::OpHandler, transaction::OpTxTr, L1BlockInfo, OpHaltReason, OpSpecId, OpTransactionError, }; use inspector::{InspectCommitEvm, InspectEvm, Inspector, JournalExt}; @@ -9,7 +9,7 @@ use revm::{ result::{EVMError, ExecutionResult, ResultAndState}, Block, Cfg, ContextTr, Database, Journal, }, - handler::{handler::EvmTr, instructions::EthInstructions, EthFrame, HandlerTr}, + handler::{handler::EvmTr, instructions::EthInstructions, EthFrame, Handler}, interpreter::interpreter::EthInterpreter, state::EvmState, Context, DatabaseCommit, ExecuteCommitEvm, ExecuteEvm, @@ -24,7 +24,7 @@ impl ExecuteEvm > where BLOCK: Block, - TX: OpTxT, + TX: OpTxTr, CFG: Cfg, DB: Database, JOURNAL: Journal)>, @@ -46,7 +46,7 @@ impl ExecuteCommitEvm > where BLOCK: Block, - TX: OpTxT, + TX: OpTxTr, CFG: Cfg, DB: Database + DatabaseCommit, JOURNAL: Journal)> + JournalExt, @@ -72,7 +72,7 @@ impl InspectEvm > where BLOCK: Block, - TX: OpTxT, + TX: OpTxTr, CFG: Cfg, DB: Database, JOURNAL: Journal)> + JournalExt, @@ -98,7 +98,7 @@ impl InspectCommitEvm > where BLOCK: Block, - TX: OpTxT, + TX: OpTxTr, CFG: Cfg, DB: Database + DatabaseCommit, JOURNAL: Journal)> + JournalExt, diff --git a/crates/optimism/src/handler.rs b/crates/optimism/src/handler.rs index 1bae347cf6..28b5f87368 100644 --- a/crates/optimism/src/handler.rs +++ b/crates/optimism/src/handler.rs @@ -1,4 +1,4 @@ -//!HandlerTr related to Optimism chain +//!Handler related to Optimism chain pub mod precompiles; @@ -6,11 +6,11 @@ use crate::{ constants::{BASE_FEE_RECIPIENT, L1_FEE_RECIPIENT, OPERATOR_FEE_RECIPIENT}, transaction::{ deposit::{DepositTransaction, DEPOSIT_TRANSACTION_TYPE}, - OpTransactionError, OpTxT, + OpTransactionError, OpTxTr, }, L1BlockInfo, OpHaltReason, OpSpecId, }; -use inspector::{Inspector, InspectorEvmTrr, InspectorFrame, InspectorHandler}; +use inspector::{Inspector, InspectorEvmTr, InspectorFrame, InspectorHandler}; use precompile::Log; use revm::{ context_interface::{ @@ -20,7 +20,7 @@ use revm::{ handler::{ handler::{EvmTr, EvmTrError}, validation::validate_tx_against_account, - Frame, FrameResult, HandlerTr, MainnetHandler, + Frame, FrameResult, Handler, MainnetHandler, }, interpreter::{interpreter::EthInterpreter, FrameInput, Gas}, primitives::{hash_map::HashMap, U256}, @@ -60,12 +60,12 @@ impl IsTxError for EVMError { } } -impl HandlerTr for OpHandler +impl Handler for OpHandler where EVM: EvmTr< Context: ContextTr< Journal: Journal)>, - Tx: OpTxT, + Tx: OpTxTr, Cfg: Cfg, Chain = L1BlockInfo, >, @@ -470,14 +470,14 @@ where impl InspectorHandler for OpHandler where - EVM: InspectorEvmTrr< + EVM: InspectorEvmTr< Context: ContextTr< Journal: Journal)>, - Tx: OpTxT, + Tx: OpTxTr, Cfg: Cfg, Chain = L1BlockInfo, >, - Inspector: Inspector<<::Evm as EvmTr>::Context, EthInterpreter>, + Inspector: Inspector<<::Evm as EvmTr>::Context, EthInterpreter>, >, ERROR: EvmTrError + From + FromStringError + IsTxError, // TODO `FrameResult` should be a generic trait. diff --git a/crates/optimism/src/transaction.rs b/crates/optimism/src/transaction.rs index c837b23d90..cbe16fb624 100644 --- a/crates/optimism/src/transaction.rs +++ b/crates/optimism/src/transaction.rs @@ -2,7 +2,7 @@ pub mod abstraction; pub mod deposit; pub mod error; -pub use abstraction::{OpTransaction, OpTxT}; +pub use abstraction::{OpTransaction, OpTxTr}; pub use error::OpTransactionError; use crate::fast_lz::flz_compress_len; diff --git a/crates/optimism/src/transaction/abstraction.rs b/crates/optimism/src/transaction/abstraction.rs index 6df5ecb181..77e8d3909a 100644 --- a/crates/optimism/src/transaction/abstraction.rs +++ b/crates/optimism/src/transaction/abstraction.rs @@ -8,7 +8,7 @@ use revm::{ use std::vec; #[auto_impl(&, &mut, Box, Arc)] -pub trait OpTxT: Transaction + DepositTransaction { +pub trait OpTxTr: Transaction + DepositTransaction { fn enveloped_tx(&self) -> Option<&Bytes>; } @@ -132,7 +132,7 @@ impl DepositTransaction for OpTransaction { } } -impl OpTxT for OpTransaction { +impl OpTxTr for OpTransaction { fn enveloped_tx(&self) -> Option<&Bytes> { self.enveloped_tx.as_ref() } diff --git a/crates/revm/CHANGELOG.md b/crates/revm/CHANGELOG.md index 7809236dd3..15c4ceb8f3 100644 --- a/crates/revm/CHANGELOG.md +++ b/crates/revm/CHANGELOG.md @@ -276,7 +276,7 @@ This release got yanked and replaced with 7.1.0 ## [4.0.0](https://github.com/bluealloy/revm/compare/revm-v3.5.0...revm-v4.0.0) - 2024-02-07 -Refactored the logic insideHandlerTr and added EvmBuilder that allows overwriting the default behavior. +Refactored the logic inside Handler and added EvmBuilder that allows overwriting the default behavior. Few major renaming: EVMImpl to Evm, EVM to EvmFactory and EVMData to EvmContext. ### Added @@ -320,7 +320,7 @@ Few major renaming: EVMImpl to Evm, EVM to EvmFactory and EVMData to EvmContext. - spelling on last commit ([#1058](https://github.com/bluealloy/revm/pull/1058)) - helper functions around Env ([#1057](https://github.com/bluealloy/revm/pull/1057)) - *(deps)* bump tokio from 1.35.1 to 1.36.0 ([#1052](https://github.com/bluealloy/revm/pull/1052)) -- *(EvmBuilder)* rename builder functions toHandlerTrCfg ([#1050](https://github.com/bluealloy/revm/pull/1050)) +- *(EvmBuilder)* rename builder functions to HandlerCfg ([#1050](https://github.com/bluealloy/revm/pull/1050)) - *(deps)* bump ethers-contract from 2.0.11 to 2.0.13 ([#1034](https://github.com/bluealloy/revm/pull/1034)) - *(std)* Add std HashMap,HashSet ([#1041](https://github.com/bluealloy/revm/pull/1041)) - group handlers ([#1030](https://github.com/bluealloy/revm/pull/1030)) diff --git a/crates/revm/src/mainnet_exec.rs b/crates/revm/src/mainnet_exec.rs index 6a976365af..6366e94f77 100644 --- a/crates/revm/src/mainnet_exec.rs +++ b/crates/revm/src/mainnet_exec.rs @@ -7,7 +7,7 @@ use context_interface::{ }; use database_interface::DatabaseCommit; use handler::{ - instructions::EthInstructions, EthFrame, HandlerTr, MainnetHandler, PrecompileProvider, + instructions::EthInstructions, EthFrame, Handler, MainnetHandler, PrecompileProvider, }; use interpreter::interpreter::EthInterpreter; diff --git a/examples/erc20_gas/src/exec.rs b/examples/erc20_gas/src/exec.rs index ee5884bb2b..3fad55d34a 100644 --- a/examples/erc20_gas/src/exec.rs +++ b/examples/erc20_gas/src/exec.rs @@ -6,7 +6,7 @@ use revm::{ }, database_interface::DatabaseCommit, handler::{ - instructions::InstructionProvider, ContextTrDbError, EthFrame, EvmTr, HandlerTr, + instructions::InstructionProvider, ContextTrDbError, EthFrame, EvmTr, Handler, PrecompileProvider, }, interpreter::{interpreter::EthInterpreter, InterpreterAction, InterpreterResult}, diff --git a/examples/erc20_gas/src/handler.rs b/examples/erc20_gas/src/handler.rs index c98c7c9dce..9e349fb07e 100644 --- a/examples/erc20_gas/src/handler.rs +++ b/examples/erc20_gas/src/handler.rs @@ -5,7 +5,7 @@ use revm::{ result::{HaltReason, InvalidTransaction}, Block, ContextTr, Journal, Transaction, TransactionType, }, - handler::{EvmTr, EvmTrError, Frame, FrameResult, HandlerTr}, + handler::{EvmTr, EvmTrError, Frame, FrameResult, Handler}, interpreter::FrameInput, primitives::{Log, U256}, specification::hardfork::SpecId, @@ -32,7 +32,7 @@ impl Default for Erc20MainetHandler { } } -impl HandlerTr for Erc20MainetHandler +impl Handler for Erc20MainetHandler where EVM: EvmTr)>>>, FRAME: Frame, diff --git a/tests/pectra/.meta/index.json b/tests/pectra/.meta/index.json index a84c3e466c..2ee4a9434c 100644 --- a/tests/pectra/.meta/index.json +++ b/tests/pectra/.meta/index.json @@ -36936,224 +36936,224 @@ "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/double_auth.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0xa0b641936e25818e76caa11574f1c7b26281ba3e64941f70c33c9eb4fd19d3ae", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x72ae3a9e64211eeedae94e1ccea7f35476c1531e062bed04b40e7ca60279186a", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0xf92ee6db706bbb766607ab3cbe9c9a20dd99304b3f6b82fe2965170c409fe3e2", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x97bd9e5f6441bbde5fa411dd4775cbc23bf031e7cc93fa26120876608329f6bc", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x328d7407b82adf6b97531bb5301e7f8cc066f43680892507e6ef7f33f6dcf1b4", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x10d89bb7c1fe5cfe3cc3a8d21aa41666182bb3b8fa202391876d2c43d5a79964", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0x12428e4c0ccf41ed08e47dddd00ff5572894de9bd1c34137d9b2e0b46ff6bda5", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0xae4a68b6293735aeafc7a4b13024bf5dd169801c9176631950788f113146f5b0", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x596fce859b0423408d32c424c05d8418beb5280f880d3706809aaae9bf1e1e23", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x655152b9ee84516996b63ab3e6f2b1fbfadfcf8f62f65787a3f9274b52f203d1", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0x96e02d0131f981d1bd434ce87472e7c3936b744a6251a35673f9efbda410e5a8", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x184f95bcac2e32eca14a51346cd8004bb0d96ae082e13a9c2ae2435b54525a1b", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0xa87fc9f35980b69976a03c6776cffd4320a2fcc802087993c4dad032d323bd75", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x18b38decff4647d895b7782a0de0573bdc453bd97a8a44a039eba7015a3b0a9d", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0xca3ec6a346bf76462549fc48f3904b0274b5a80c82c8bcb880155277eba8634f", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x7a467fa055f35eedcc09213286cd68b80b163f0ddead57bf5885e65b2210e4a4", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x8dd6ed963a0396980db64834d52bb461a0be6594e6eeb923dcfa59997d80060c", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x72ae3a9e64211eeedae94e1ccea7f35476c1531e062bed04b40e7ca60279186a", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0x806d03e24509e59eaf17aedb500b3d2a9ebec8268becd6bfaa3c993f03b59694", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x97bd9e5f6441bbde5fa411dd4775cbc23bf031e7cc93fa26120876608329f6bc", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x3c0493d5654421a46d792a7a335416d2a45b1219c281545fa17bb041c6bbf119", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x10d89bb7c1fe5cfe3cc3a8d21aa41666182bb3b8fa202391876d2c43d5a79964", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0x47385e1f4939d529e354e213aa8a9185da2a2e301cb9f3c154c9a616827a55f9", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0xae4a68b6293735aeafc7a4b13024bf5dd169801c9176631950788f113146f5b0", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0xaf47f8c652f346821ef49f146d189a9cfe25384ab318095e5b4859b14a5165c8", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x655152b9ee84516996b63ab3e6f2b1fbfadfcf8f62f65787a3f9274b52f203d1", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0x920e748492cda88d2ca9d36f0c80543ca196b548e48cc7f865b98c1b345a4017", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x184f95bcac2e32eca14a51346cd8004bb0d96ae082e13a9c2ae2435b54525a1b", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x660df6c650e865e9d300272b0cb4c1deba115c5bbbeafa14da90aebda1ee8e29", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x18b38decff4647d895b7782a0de0573bdc453bd97a8a44a039eba7015a3b0a9d", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0x5dfd77c592a8dce37618ffaf9e0d7def33f1c3426c000c232f19f6795193dd19", "fork": "Prague", "format": "blockchain_test", "json_path": "blockchain_tests/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x7a467fa055f35eedcc09213286cd68b80b163f0ddead57bf5885e65b2210e4a4", "fork": "Prague", "format": "blockchain_test", @@ -133893,224 +133893,224 @@ "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/double_auth.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0xb29b3da346c9801cb22e6b8c53ac64b8d5d051650052a60e48706b0737d5bd4d", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x12463eba8a65c61f74aac0b90c15389d227af226b7e1b244ad1e00cef6b7a765", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0xfb93df0ac3f877403a0a6335fca595c6c0dc027ba196a867cc72ce1a0817429e", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0xb39325665c706cb764dd5bbe1d8ed6670a4aee5361244173bfef3925ea3e6dc2", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x7236fe4ac39aa50e23dca76cff46281f320ccf88bbaf67443694dc6ee2d7831c", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0xe3be86df335cbe6606d1265fcfd0f28177fe4a470c03eb4baedd6b23c81ff243", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0xeae996a07ea87fe2ac59c2b420d7077c3a579e3f1dcb9dda18d9cb397d806b8e", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x2e3c6f8f27c00fca4e9a509337bd0adab0189ee73acd7159de21aacf87979d9b", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x4f79a3d22c114e25a0a11ac50e9d6798fafa1cba2a93adc0300177015a17028d", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0xb5dbf19d4e595fa26aa683d2854604e58fc964a1a6317906b9e94436d610e2a8", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0xd88d4d047cb4ed724ed2ffd8af7b2a9223a613088abc32cbb7f474174a954910", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0xd6911b83e8ede80f5c90a39f5a7c162ee4f9045a7e4fe83e1135d1ae0352c537", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x59f34051a1a248705e2a28f4e904b0a37bad44ff4f3575a6bba40a6629135655", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0xeaefad6156bdebfa54c0be5a9053438749a3a21e0e375af476f587bc9679772e", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0xb114a2109301a6cf8989ebbe4e836ec36b0221b21723325dc61a961228a41b1f", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.CONTRACT_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x2da375829123ff7ca211f0818d00e16d65b55f1ff32191c89356a08d4e1df761", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x5743150497ad414b2f01b2ca6684a9644c151df79f507bab637aa95503708368", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0x12463eba8a65c61f74aac0b90c15389d227af226b7e1b244ad1e00cef6b7a765", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0x66ba16a1d3f2e2cff23fc721009f3b84ccb26850ff0b3f80c53d7e9ccec38157", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_BOTH_TX-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0xb39325665c706cb764dd5bbe1d8ed6670a4aee5361244173bfef3925ea3e6dc2", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x2331c303e71920fa7a79c31a40a643b473ac2c3dcd5d6138ffff4d51d4c46e3c", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0xe3be86df335cbe6606d1265fcfd0f28177fe4a470c03eb4baedd6b23c81ff243", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0xc5df1a6fe34882f960f3f744a4bedffac0585be6cb7b989cc0151306cfae5516", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_NORMAL_TX_ONLY-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x2e3c6f8f27c00fca4e9a509337bd0adab0189ee73acd7159de21aacf87979d9b", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0xdb18a6c393cd479fbbc68e4d4c5dfd894d1f9df45b5961237f934ae75d4cd3a3", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0xb5dbf19d4e595fa26aa683d2854604e58fc964a1a6317906b9e94436d610e2a8", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0x840fe5ec52e2a3dd6edcda902634c1cedfc28e42998dd216146fc94d3a5b5a20", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.IN_POINTER_TX_ONLY-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0xd6911b83e8ede80f5c90a39f5a7c162ee4f9045a7e4fe83e1135d1ae0352c537", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_BOTH_TX]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_BOTH_TX]", "fixture_hash": "0x31e6c2b50ba6ce8c9a3a06ca6a0478aa3b4703099b46874b3a7fd9ef8dcac6b1", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_NORMAL_TX_ONLY]", "fixture_hash": "0xeaefad6156bdebfa54c0be5a9053438749a3a21e0e375af476f587bc9679772e", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.IN_POINTER_TX_ONLY]", "fixture_hash": "0xf3f2b0395e24225777c7480ac71b8ad4f217c4d30a3a23f14f3d4bb8c0d70d16", "fork": "Prague", "format": "blockchain_test_engine", "json_path": "blockchain_tests_engine/prague/eip7702_set_code_tx/set_code_txs_2/gas_diff_pointer_vs_direct_call.json" }, { - "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTo.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.NONE]", + "id": "tests/prague/eip7702_set_code_tx/test_set_code_txs_2.py::test_gas_diff_pointer_vs_direct_call[fork_Prague-blockchain_test_engine-access_list_to_AccessListTro.POINTER_ADDRESS-pointer_definition_PointerDefinition.SEPARATE-access_list_rule_AccessListCall.NONE]", "fixture_hash": "0x2da375829123ff7ca211f0818d00e16d65b55f1ff32191c89356a08d4e1df761", "fork": "Prague", "format": "blockchain_test_engine",