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<B256>;
fn balance(&mut self, address: Address) -> Option<StateLoad<U256>>;
fn code(&mut self, address: Address) -> Option<StateLoad<Bytes>>;
fn code_hash(&mut self, address: Address) -> Option<StateLoad<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.
Required Methods§
Sourcefn load_account_delegated(
&mut self,
address: Address,
) -> Option<StateLoad<AccountLoad>>
fn load_account_delegated( &mut self, address: Address, ) -> Option<StateLoad<AccountLoad>>
Load an account code.
Sourcefn block_hash(&mut self, number: u64) -> Option<B256>
fn block_hash(&mut self, number: u64) -> Option<B256>
Gets 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>>
Gets balance of address
and if the account is cold.
Sourcefn code(&mut self, address: Address) -> Option<StateLoad<Bytes>>
fn code(&mut self, address: Address) -> Option<StateLoad<Bytes>>
Gets code of address
and if the account is cold.
Sourcefn code_hash(&mut self, address: Address) -> Option<StateLoad<B256>>
fn code_hash(&mut self, address: Address) -> Option<StateLoad<B256>>
Gets 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>>
Gets 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>>
Sets 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
Gets 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)
Sets 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>>
Marks address
to be deleted, with funds transferred to target
.