Skip to main content

CheatcodesExecutor

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>>

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>

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>

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>>

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)

Simulates console.log invocation.

Provided Methods§

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>, )

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.

Implementors§