pub trait Host {
type BLOCK: Block;
type TX: Transaction;
type CFG: Cfg;
Show 14 methods
// Required methods
fn tx(&self) -> &Self::TX;
fn block(&self) -> &Self::BLOCK;
fn cfg(&self) -> &Self::CFG;
fn load_account_delegated(
&mut self,
address: Address,
) -> Option<AccountLoad>;
fn block_hash(&mut self, number: u64) -> Option<B256>;
fn balance(&mut self, address: Address) -> Option<StateLoad<U256>>;
fn code(&mut self, address: Address) -> Option<Eip7702CodeLoad<Bytes>>;
fn code_hash(&mut self, address: Address) -> Option<Eip7702CodeLoad<B256>>;
fn sload(
&mut self,
address: Address,
index: U256,
) -> Option<StateLoad<U256>>;
fn sstore(
&mut self,
address: Address,
index: U256,
value: U256,
) -> Option<StateLoad<SStoreResult>>;
fn tload(&mut self, address: Address, index: U256) -> U256;
fn tstore(&mut self, address: Address, index: U256, value: U256);
fn log(&mut self, log: Log);
fn selfdestruct(
&mut self,
address: Address,
target: Address,
) -> Option<StateLoad<SelfDestructResult>>;
}
Expand description
EVM context host. TODO move to context-interface
Required Associated Types§
Required Methods§
Sourcefn load_account_delegated(&mut self, address: Address) -> Option<AccountLoad>
fn load_account_delegated(&mut self, address: Address) -> Option<AccountLoad>
Load an account code.
Sourcefn block_hash(&mut self, number: u64) -> Option<B256>
fn block_hash(&mut self, number: u64) -> Option<B256>
Get the block hash of the given block number
.
Sourcefn balance(&mut self, address: Address) -> Option<StateLoad<U256>>
fn balance(&mut self, address: Address) -> Option<StateLoad<U256>>
Get balance of address
and if the account is cold.
Sourcefn code(&mut self, address: Address) -> Option<Eip7702CodeLoad<Bytes>>
fn code(&mut self, address: Address) -> Option<Eip7702CodeLoad<Bytes>>
Get code of address
and if the account is cold.
Sourcefn code_hash(&mut self, address: Address) -> Option<Eip7702CodeLoad<B256>>
fn code_hash(&mut self, address: Address) -> Option<Eip7702CodeLoad<B256>>
Get code hash of address
and if the account is cold.
Sourcefn sload(&mut self, address: Address, index: U256) -> Option<StateLoad<U256>>
fn sload(&mut self, address: Address, index: U256) -> Option<StateLoad<U256>>
Get storage value of address
at index
and if the account is cold.
Sourcefn sstore(
&mut self,
address: Address,
index: U256,
value: U256,
) -> Option<StateLoad<SStoreResult>>
fn sstore( &mut self, address: Address, index: U256, value: U256, ) -> Option<StateLoad<SStoreResult>>
Set storage value of account address at index.
Returns StateLoad
with SStoreResult
that contains original/new/old storage value.
Sourcefn tload(&mut self, address: Address, index: U256) -> U256
fn tload(&mut self, address: Address, index: U256) -> U256
Get the transient storage value of address
at index
.
Sourcefn tstore(&mut self, address: Address, index: U256, value: U256)
fn tstore(&mut self, address: Address, index: U256, value: U256)
Set the transient storage value of address
at index
.
Sourcefn selfdestruct(
&mut self,
address: Address,
target: Address,
) -> Option<StateLoad<SelfDestructResult>>
fn selfdestruct( &mut self, address: Address, target: Address, ) -> Option<StateLoad<SelfDestructResult>>
Mark address
to be deleted, with funds transferred to target
.