Skip to main content

CheatcodesExecutor

Trait CheatcodesExecutor 

Source
pub trait CheatcodesExecutor<CTX: ContextTr> {
    // Required methods
    fn with_nested_evm(
        &mut self,
        cheats: &mut Cheatcodes,
        ecx: &mut CTX,
        f: NestedEvmClosure<'_, CTX::Block, CTX::Tx, <CTX::Cfg as Cfg>::Spec>,
    ) -> Result<(), EVMError<DatabaseError>>;
    fn transact_on_db(
        &mut self,
        cheats: &mut Cheatcodes,
        ecx: &mut CTX,
        fork_id: Option<U256>,
        transaction: B256,
    ) -> Result<()>;
    fn transact_from_tx_on_db(
        &mut self,
        cheats: &mut Cheatcodes,
        ecx: &mut CTX,
        tx: &CTX::Tx,
    ) -> Result<()>;
    fn with_fresh_nested_evm(
        &mut self,
        cheats: &mut Cheatcodes,
        db: &mut dyn DatabaseExt<CTX::Block, CTX::Tx, <CTX::Cfg as Cfg>::Spec>,
        evm_env: EvmEnv<<CTX::Cfg as Cfg>::Spec, CTX::Block>,
        tx_env: CTX::Tx,
        f: NestedEvmClosure<'_, CTX::Block, CTX::Tx, <CTX::Cfg as Cfg>::Spec>,
    ) -> Result<(), EVMError<DatabaseError>>;
    fn console_log(&mut self, cheats: &mut Cheatcodes, 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, ecx: &mut CTX, f: NestedEvmClosure<'_, CTX::Block, CTX::Tx, <CTX::Cfg as Cfg>::Spec>, ) -> 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, ecx: &mut CTX, 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, ecx: &mut CTX, tx: &CTX::Tx, ) -> Result<()>

Executes a TransactionRequest on the database. Inspector is assembled internally.

Source

fn with_fresh_nested_evm( &mut self, cheats: &mut Cheatcodes, db: &mut dyn DatabaseExt<CTX::Block, CTX::Tx, <CTX::Cfg as Cfg>::Spec>, evm_env: EvmEnv<<CTX::Cfg as Cfg>::Spec, CTX::Block>, tx_env: CTX::Tx, f: NestedEvmClosure<'_, CTX::Block, CTX::Tx, <CTX::Cfg as Cfg>::Spec>, ) -> Result<(), 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.

Source

fn console_log(&mut self, cheats: &mut Cheatcodes, 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§