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§
fn inspect( &self, backend: &mut Backend, env: &mut Env, inspector: &mut dyn InspectorExt, inspect_ctx: Box<dyn Any>, ) -> Result<ExecResultAndState<ExecutionResult>, Report>
Sourcefn 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 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
Sourcefn 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_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