pub trait CheatcodesExecutor<FEN: FoundryEvmNetwork> {
// Required methods
fn with_nested_evm(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut FoundryContextFor<'_, FEN>,
f: NestedEvmClosure<'_, SpecFor<FEN>, BlockEnvFor<FEN>, TxEnvFor<FEN>>,
) -> Result<(), EVMError<DatabaseError>>;
fn transact_on_db(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut FoundryContextFor<'_, FEN>,
fork_id: Option<U256>,
transaction: B256,
) -> Result<()>;
fn transact_from_tx_on_db(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut FoundryContextFor<'_, FEN>,
tx: TxEnvFor<FEN>,
) -> Result<()>;
fn with_fresh_nested_evm(
&mut self,
cheats: &mut Cheatcodes<FEN>,
db: &mut <FoundryContextFor<'_, FEN> as ContextTr>::Db,
evm_env: EvmEnv<SpecFor<FEN>, BlockEnvFor<FEN>>,
f: NestedEvmClosure<'_, SpecFor<FEN>, BlockEnvFor<FEN>, TxEnvFor<FEN>>,
) -> Result<EvmEnv<SpecFor<FEN>, BlockEnvFor<FEN>>, 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§
Sourcefn with_nested_evm(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut FoundryContextFor<'_, FEN>,
f: NestedEvmClosure<'_, SpecFor<FEN>, BlockEnvFor<FEN>, TxEnvFor<FEN>>,
) -> Result<(), EVMError<DatabaseError>>
fn with_nested_evm( &mut self, cheats: &mut Cheatcodes<FEN>, ecx: &mut FoundryContextFor<'_, FEN>, f: NestedEvmClosure<'_, SpecFor<FEN>, BlockEnvFor<FEN>, TxEnvFor<FEN>>, ) -> 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.
Sourcefn transact_on_db(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut FoundryContextFor<'_, FEN>,
fork_id: Option<U256>,
transaction: B256,
) -> Result<()>
fn transact_on_db( &mut self, cheats: &mut Cheatcodes<FEN>, ecx: &mut FoundryContextFor<'_, FEN>, fork_id: Option<U256>, transaction: B256, ) -> Result<()>
Replays a historical transaction on the database. Inspector is assembled internally.
Sourcefn transact_from_tx_on_db(
&mut self,
cheats: &mut Cheatcodes<FEN>,
ecx: &mut FoundryContextFor<'_, FEN>,
tx: TxEnvFor<FEN>,
) -> Result<()>
fn transact_from_tx_on_db( &mut self, cheats: &mut Cheatcodes<FEN>, ecx: &mut FoundryContextFor<'_, FEN>, tx: TxEnvFor<FEN>, ) -> Result<()>
Executes a TransactionRequest on the database. Inspector is assembled internally.
Sourcefn with_fresh_nested_evm(
&mut self,
cheats: &mut Cheatcodes<FEN>,
db: &mut <FoundryContextFor<'_, FEN> as ContextTr>::Db,
evm_env: EvmEnv<SpecFor<FEN>, BlockEnvFor<FEN>>,
f: NestedEvmClosure<'_, SpecFor<FEN>, BlockEnvFor<FEN>, TxEnvFor<FEN>>,
) -> Result<EvmEnv<SpecFor<FEN>, BlockEnvFor<FEN>>, EVMError<DatabaseError>>
fn with_fresh_nested_evm( &mut self, cheats: &mut Cheatcodes<FEN>, db: &mut <FoundryContextFor<'_, FEN> as ContextTr>::Db, evm_env: EvmEnv<SpecFor<FEN>, BlockEnvFor<FEN>>, f: NestedEvmClosure<'_, SpecFor<FEN>, BlockEnvFor<FEN>, TxEnvFor<FEN>>, ) -> Result<EvmEnv<SpecFor<FEN>, BlockEnvFor<FEN>>, 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).
Sourcefn console_log(&mut self, msg: &str)
fn console_log(&mut self, msg: &str)
Simulates console.log invocation.
Provided Methods§
Sourcefn 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.
Sourcefn 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.