pub trait NestedEvm {
type Spec;
type Block;
type Tx: FoundryTransaction;
type Chain: FoundryChain<Self::Tx>;
type Journal: FoundryJournal;
// Required methods
fn journal_inner_mut(&mut self) -> &mut JournaledState;
fn tx_mut(&mut self) -> &mut Self::Tx;
fn chain_mut(&mut self) -> &mut Self::Chain;
fn journal_mut(&mut self) -> &mut Self::Journal;
fn run_execution(
&mut self,
frame: FrameInput,
) -> Result<FrameResult, EVMError<DatabaseError>>;
fn transact_raw(
&mut self,
tx: Self::Tx,
) -> Result<ResultAndState<HaltReason>>;
fn to_evm_env(&self) -> EvmEnv<Self::Spec, Self::Block>;
}Expand description
Object-safe trait exposing the operations that cheatcode nested EVM closures need.
This abstracts over the concrete EVM type (FoundryEvm, future TempoEvm, etc.)
so that cheatcode impls can build and run nested EVMs without knowing the concrete type.
Required Associated Types§
Sourcetype Tx: FoundryTransaction
type Tx: FoundryTransaction
The transaction environment type.
Sourcetype Chain: FoundryChain<Self::Tx>
type Chain: FoundryChain<Self::Tx>
Chain context identifying the active transaction position.
Sourcetype Journal: FoundryJournal
type Journal: FoundryJournal
The Journal type, which may own Monad’s reserve-balance-tracker state.
Required Methods§
Sourcefn journal_inner_mut(&mut self) -> &mut JournaledState
fn journal_inner_mut(&mut self) -> &mut JournaledState
Returns a mutable reference to the journal inner state (JournaledState).
Sourcefn tx_mut(&mut self) -> &mut Self::Tx
fn tx_mut(&mut self) -> &mut Self::Tx
Returns a mutable reference to the transaction environment.
Sourcefn chain_mut(&mut self) -> &mut Self::Chain
fn chain_mut(&mut self) -> &mut Self::Chain
Returns a mutable reference to the chain-position context.
Sourcefn journal_mut(&mut self) -> &mut Self::Journal
fn journal_mut(&mut self) -> &mut Self::Journal
Returns a mutable reference to the Journal.
Sourcefn run_execution(
&mut self,
frame: FrameInput,
) -> Result<FrameResult, EVMError<DatabaseError>>
fn run_execution( &mut self, frame: FrameInput, ) -> Result<FrameResult, EVMError<DatabaseError>>
Runs a single execution frame (create or call) through the EVM handler loop.
Sourcefn transact_raw(&mut self, tx: Self::Tx) -> Result<ResultAndState<HaltReason>>
fn transact_raw(&mut self, tx: Self::Tx) -> Result<ResultAndState<HaltReason>>
Executes a full transaction with the given tx env.
fn to_evm_env(&self) -> EvmEnv<Self::Spec, Self::Block>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementors§
Source§impl<'db, I: FoundryInspectorExt<EthEvmContext<&'db mut dyn DatabaseExt<EthEvmFactory>>>> NestedEvm for EthRevmEvm<'db, I>
impl<'db, I: FoundryInspectorExt<EthEvmContext<&'db mut dyn DatabaseExt<EthEvmFactory>>>> NestedEvm for EthRevmEvm<'db, I>
Source§impl<'db, I: FoundryInspectorExt<MonadContext<&'db mut dyn DatabaseExt<MonadEvmFactory>>>> NestedEvm for MonadRevmEvm<'db, I>
Available on crate feature monad only.
impl<'db, I: FoundryInspectorExt<MonadContext<&'db mut dyn DatabaseExt<MonadEvmFactory>>>> NestedEvm for MonadRevmEvm<'db, I>
monad only.Source§impl<'db, I: FoundryInspectorExt<OpEvmContext<&'db mut dyn DatabaseExt<OpEvmFactory>>>> NestedEvm for OpRevmEvm<'db, I>
Available on crate feature optimism only.
impl<'db, I: FoundryInspectorExt<OpEvmContext<&'db mut dyn DatabaseExt<OpEvmFactory>>>> NestedEvm for OpRevmEvm<'db, I>
optimism only.