revm_interpreter

Trait Host

pub trait Host:
    TransactionGetter
    + BlockGetter
    + CfgGetter {
    // Required methods
    fn load_account_delegated(
        &mut self,
        address: Address,
    ) -> Option<StateLoad<AccountLoad>>;
    fn block_hash(&mut self, number: u64) -> Option<FixedBytes<32>>;
    fn balance(&mut self, address: Address) -> Option<StateLoad<Uint<256, 4>>>;
    fn code(&mut self, address: Address) -> Option<StateLoad<Bytes>>;
    fn code_hash(
        &mut self,
        address: Address,
    ) -> Option<StateLoad<FixedBytes<32>>>;
    fn sload(
        &mut self,
        address: Address,
        index: Uint<256, 4>,
    ) -> Option<StateLoad<Uint<256, 4>>>;
    fn sstore(
        &mut self,
        address: Address,
        index: Uint<256, 4>,
        value: Uint<256, 4>,
    ) -> Option<StateLoad<SStoreResult>>;
    fn tload(&mut self, address: Address, index: Uint<256, 4>) -> Uint<256, 4>;
    fn tstore(
        &mut self,
        address: Address,
        index: Uint<256, 4>,
        value: Uint<256, 4>,
    );
    fn log(&mut self, log: Log);
    fn selfdestruct(
        &mut self,
        address: Address,
        target: Address,
    ) -> Option<StateLoad<SelfDestructResult>>;
}
Expand description

EVM context host.

Required Methods§

fn load_account_delegated( &mut self, address: Address, ) -> Option<StateLoad<AccountLoad>>

Load an account code.

fn block_hash(&mut self, number: u64) -> Option<FixedBytes<32>>

Gets the block hash of the given block number.

fn balance(&mut self, address: Address) -> Option<StateLoad<Uint<256, 4>>>

Gets balance of address and if the account is cold.

fn code(&mut self, address: Address) -> Option<StateLoad<Bytes>>

Gets code of address and if the account is cold.

fn code_hash(&mut self, address: Address) -> Option<StateLoad<FixedBytes<32>>>

Gets code hash of address and if the account is cold.

fn sload( &mut self, address: Address, index: Uint<256, 4>, ) -> Option<StateLoad<Uint<256, 4>>>

Gets storage value of address at index and if the account is cold.

fn sstore( &mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>, ) -> Option<StateLoad<SStoreResult>>

Sets storage value of account address at index.

Returns StateLoad with SStoreResult that contains original/new/old storage value.

fn tload(&mut self, address: Address, index: Uint<256, 4>) -> Uint<256, 4>

Gets the transient storage value of address at index.

fn tstore(&mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>)

Sets the transient storage value of address at index.

fn log(&mut self, log: Log)

Emits a log owned by address with given LogData.

fn selfdestruct( &mut self, address: Address, target: Address, ) -> Option<StateLoad<SelfDestructResult>>

Marks address to be deleted, with funds transferred to target.

Implementations on Foreign Types§

§

impl<'a, T> Host for &'a mut T
where T: 'a + Host + ?Sized, &'a mut T: TransactionGetter + BlockGetter + CfgGetter,

§

fn load_account_delegated( &mut self, address: Address, ) -> Option<StateLoad<AccountLoad>>

§

fn block_hash(&mut self, number: u64) -> Option<FixedBytes<32>>

§

fn balance(&mut self, address: Address) -> Option<StateLoad<Uint<256, 4>>>

§

fn code(&mut self, address: Address) -> Option<StateLoad<Bytes>>

§

fn code_hash(&mut self, address: Address) -> Option<StateLoad<FixedBytes<32>>>

§

fn sload( &mut self, address: Address, index: Uint<256, 4>, ) -> Option<StateLoad<Uint<256, 4>>>

§

fn sstore( &mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>, ) -> Option<StateLoad<SStoreResult>>

§

fn tload(&mut self, address: Address, index: Uint<256, 4>) -> Uint<256, 4>

§

fn tstore(&mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>)

§

fn log(&mut self, log: Log)

§

fn selfdestruct( &mut self, address: Address, target: Address, ) -> Option<StateLoad<SelfDestructResult>>

§

impl<T> Host for Box<T>
where T: Host + ?Sized, Box<T>: TransactionGetter + BlockGetter + CfgGetter,

§

fn load_account_delegated( &mut self, address: Address, ) -> Option<StateLoad<AccountLoad>>

§

fn block_hash(&mut self, number: u64) -> Option<FixedBytes<32>>

§

fn balance(&mut self, address: Address) -> Option<StateLoad<Uint<256, 4>>>

§

fn code(&mut self, address: Address) -> Option<StateLoad<Bytes>>

§

fn code_hash(&mut self, address: Address) -> Option<StateLoad<FixedBytes<32>>>

§

fn sload( &mut self, address: Address, index: Uint<256, 4>, ) -> Option<StateLoad<Uint<256, 4>>>

§

fn sstore( &mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>, ) -> Option<StateLoad<SStoreResult>>

§

fn tload(&mut self, address: Address, index: Uint<256, 4>) -> Uint<256, 4>

§

fn tstore(&mut self, address: Address, index: Uint<256, 4>, value: Uint<256, 4>)

§

fn log(&mut self, log: Log)

§

fn selfdestruct( &mut self, address: Address, target: Address, ) -> Option<StateLoad<SelfDestructResult>>

Implementors§

§

impl<TX, BLOCK, CFG> Host for DummyHost<BLOCK, TX, CFG>
where TX: Transaction, BLOCK: Block, CFG: Cfg,