Skip to main content

CheatcodesExecutor

Trait CheatcodesExecutor 

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

Source

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.

Source

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.

Source

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.

Source

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

Source

fn console_log(&mut self, msg: &str)

Simulates console.log invocation.

Provided Methods§

Source

fn tracing_inspector(&mut self) -> Option<&mut TracingInspector>

Returns a mutable reference to the tracing inspector if it is available.

Source

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§

Source§

impl<FEN: FoundryEvmNetwork> CheatcodesExecutor<FEN> for TransparentCheatcodesExecutor