Skip to main content

BackendStrategyRunner

Trait BackendStrategyRunner 

Source
pub trait BackendStrategyRunner:
    Debug
    + Send
    + Sync {
    // Required methods
    fn inspect(
        &self,
        backend: &mut Backend,
        env: &mut Env,
        inspector: &mut dyn InspectorExt,
        inspect_ctx: Box<dyn Any>,
    ) -> Result<ExecResultAndState<ExecutionResult>, Report>;
    fn update_fork_db(
        &self,
        ctx: &mut (dyn BackendStrategyContext + 'static),
        active_fork: Option<&Fork>,
        mem_db: &CacheDB<EmptyDBWrapper>,
        backend_inner: &BackendInner,
        active_journaled_state: &mut JournalInner<JournalEntry>,
        target_fork: &mut Fork,
    );
    fn merge_journaled_state_data(
        &self,
        ctx: &mut (dyn BackendStrategyContext + 'static),
        addr: Address,
        active_journaled_state: &JournalInner<JournalEntry>,
        fork_journaled_state: &mut JournalInner<JournalEntry>,
    );
    fn merge_db_account_data(
        &self,
        ctx: &mut (dyn BackendStrategyContext + 'static),
        addr: Address,
        active: &CacheDB<SharedBackend>,
        fork_db: &mut CacheDB<SharedBackend>,
    );
    fn transact_from_tx(
        &self,
        backend: &mut Backend,
        tx: &TransactionRequest,
        env: Env,
        journaled_state: &mut JournalInner<JournalEntry>,
        inspector: &mut dyn InspectorExt,
        inspect_ctx: Box<dyn Any>,
    ) -> Result<(), Report>;
}

Required Methods§

Source

fn inspect( &self, backend: &mut Backend, env: &mut Env, inspector: &mut dyn InspectorExt, inspect_ctx: Box<dyn Any>, ) -> Result<ExecResultAndState<ExecutionResult>, Report>

Source

fn update_fork_db( &self, ctx: &mut (dyn BackendStrategyContext + 'static), active_fork: Option<&Fork>, mem_db: &CacheDB<EmptyDBWrapper>, backend_inner: &BackendInner, active_journaled_state: &mut JournalInner<JournalEntry>, target_fork: &mut Fork, )

When creating or switching forks, we update the AccountInfo of the contract

Source

fn merge_journaled_state_data( &self, ctx: &mut (dyn BackendStrategyContext + 'static), addr: Address, active_journaled_state: &JournalInner<JournalEntry>, fork_journaled_state: &mut JournalInner<JournalEntry>, )

Clones the account data from the active_journaled_state into the fork_journaled_state

Source

fn merge_db_account_data( &self, ctx: &mut (dyn BackendStrategyContext + 'static), addr: Address, active: &CacheDB<SharedBackend>, fork_db: &mut CacheDB<SharedBackend>, )

Source

fn transact_from_tx( &self, backend: &mut Backend, tx: &TransactionRequest, env: Env, journaled_state: &mut JournalInner<JournalEntry>, inspector: &mut dyn InspectorExt, inspect_ctx: Box<dyn Any>, ) -> Result<(), Report>

Implementors§