Trait CheatcodesExecutor
pub trait CheatcodesExecutor<FEN>where
FEN: FoundryEvmNetwork,{
// Required methods
fn with_nested_evm(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>,
f: &mut dyn FnMut(&mut dyn NestedEvm<Spec = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, Tx = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx, Block = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>) -> Result<(), EVMError<DatabaseError>>,
) -> Result<(), EVMError<DatabaseError>>;
fn transact_on_db(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>,
fork_id: Option<Uint<256, 4>>,
transaction: FixedBytes<32>,
) -> Result<(), Report>;
fn transact_from_tx_on_db(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>,
tx: <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx,
) -> Result<(), Report>;
fn with_fresh_nested_evm(
&mut self,
cheats: &mut Cheatcodes<FEN>,
db: &mut <<<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_> as ContextTr>::Db,
evm_env: EvmEnv<<<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>,
f: &mut dyn FnMut(&mut dyn NestedEvm<Spec = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, Tx = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx, Block = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>) -> Result<(), EVMError<DatabaseError>>,
) -> Result<EvmEnv<<<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>, EVMError<DatabaseError>>;
fn console_log(&mut self, msg: &str);
// Provided methods
fn tracing_inspector(&mut self) -> Option<&mut TracingInspector> { ... }
fn set_in_inner_context(
&mut self,
_enabled: bool,
_original_origin: Option<Address>,
) { ... }
}Expand description
Helper trait for running nested EVM operations from inside cheatcode implementations.
Required Methods§
fn with_nested_evm(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>,
f: &mut dyn FnMut(&mut dyn NestedEvm<Spec = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, Tx = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx, Block = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>) -> Result<(), EVMError<DatabaseError>>,
) -> Result<(), EVMError<DatabaseError>>
fn with_nested_evm( &mut self, cheats: &mut Cheatcodes<FEN>, ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>, f: &mut dyn FnMut(&mut dyn NestedEvm<Spec = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, Tx = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx, Block = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>) -> Result<(), EVMError<DatabaseError>>, ) -> Result<(), EVMError<DatabaseError>>
Runs a closure with a nested EVM built from the current context. The inspector is assembled internally — never exposed to the caller.
fn transact_on_db(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>,
fork_id: Option<Uint<256, 4>>,
transaction: FixedBytes<32>,
) -> Result<(), Report>
fn transact_on_db( &mut self, cheats: &mut Cheatcodes<FEN>, ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>, fork_id: Option<Uint<256, 4>>, transaction: FixedBytes<32>, ) -> Result<(), Report>
Replays a historical transaction on the database. Inspector is assembled internally.
fn transact_from_tx_on_db(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>,
tx: <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx,
) -> Result<(), Report>
fn transact_from_tx_on_db( &mut self, cheats: &mut Cheatcodes<FEN>, ecx: &mut <<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_>, tx: <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx, ) -> Result<(), Report>
Executes a TransactionRequest on the database. Inspector is assembled internally.
fn with_fresh_nested_evm(
&mut self,
cheats: &mut Cheatcodes<FEN>,
db: &mut <<<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_> as ContextTr>::Db,
evm_env: EvmEnv<<<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>,
f: &mut dyn FnMut(&mut dyn NestedEvm<Spec = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, Tx = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx, Block = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>) -> Result<(), EVMError<DatabaseError>>,
) -> Result<EvmEnv<<<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>, EVMError<DatabaseError>>
fn with_fresh_nested_evm( &mut self, cheats: &mut Cheatcodes<FEN>, db: &mut <<<FEN as FoundryEvmNetwork>::EvmFactory as FoundryEvmFactory>::FoundryContext<'_> as ContextTr>::Db, evm_env: EvmEnv<<<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>, f: &mut dyn FnMut(&mut dyn NestedEvm<Spec = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, Tx = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Tx, Block = <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>) -> Result<(), EVMError<DatabaseError>>, ) -> Result<EvmEnv<<<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::Spec, <<FEN as FoundryEvmNetwork>::EvmFactory as EvmFactory>::BlockEnv>, EVMError<DatabaseError>>
Runs a closure with a fresh nested EVM built from a raw database and environment.
Unlike with_nested_evm, this does NOT clone from ecx and does NOT write back.
The caller is responsible for state merging. Used by executeTransactionCall.
Returns the final EVM environment after the closure runs (consumed without cloning).
fn console_log(&mut self, msg: &str)
fn console_log(&mut self, msg: &str)
Simulates console.log invocation.
Provided Methods§
fn tracing_inspector(&mut self) -> Option<&mut TracingInspector>
fn tracing_inspector(&mut self) -> Option<&mut TracingInspector>
Returns a mutable reference to the tracing inspector if it is available.
fn set_in_inner_context(
&mut self,
_enabled: bool,
_original_origin: Option<Address>,
)
fn set_in_inner_context( &mut self, _enabled: bool, _original_origin: Option<Address>, )
Marks that the next EVM frame is an “inner context” so that isolation mode does not
trigger a nested transact_inner. original_origin is stored for the existing
inner-context adjustment logic that restores tx.origin.