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>>
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>>
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>>>
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>>
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>>>
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>>>
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>>
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>
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>)
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)
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>>
fn selfdestruct( &mut self, address: Address, target: Address, ) -> Option<StateLoad<SelfDestructResult>>
Marks address
to be deleted, with funds transferred to target
.