Trait ethcore::evm::ext::Ext
[−]
[src]
pub trait Ext { fn storage_at(&self, key: &H256) -> H256; fn set_storage(&mut self, key: H256, value: H256); fn exists(&self, address: &Address) -> bool; fn exists_and_not_null(&self, address: &Address) -> bool; fn origin_balance(&self) -> U256; fn balance(&self, address: &Address) -> U256; fn blockhash(&self, number: &U256) -> H256; fn create(&mut self,
gas: &U256,
value: &U256,
code: &[u8])
-> ContractCreateResult; fn call(&mut self,
gas: &U256,
sender_address: &Address,
receive_address: &Address,
value: Option<U256>,
data: &[u8],
code_address: &Address,
output: &mut [u8],
call_type: CallType)
-> MessageCallResult; fn extcode(&self, address: &Address) -> Arc<Bytes>; fn extcodesize(&self, address: &Address) -> usize; fn log(&mut self, topics: Vec<H256>, data: &[u8]); fn ret(self, gas: &U256, data: &[u8]) -> Result<U256> where Self: Sized; fn suicide(&mut self, refund_address: &Address); fn schedule(&self) -> &Schedule; fn env_info(&self) -> &EnvInfo; fn depth(&self) -> usize; fn inc_sstore_clears(&mut self); fn trace_prepare_execute(&mut self,
_pc: usize,
_instruction: u8,
_gas_cost: &U256)
-> bool { ... } fn trace_executed(&mut self,
_gas_used: U256,
_stack_push: &[U256],
_mem_diff: Option<(usize, &[u8])>,
_store_diff: Option<(U256, U256)>) { ... } }
Externalities interface for EVMs
Required Methods
fn storage_at(&self, key: &H256) -> H256
Returns a value for given key.
fn set_storage(&mut self, key: H256, value: H256)
Stores a value for given key.
fn exists(&self, address: &Address) -> bool
Determine whether an account exists.
fn exists_and_not_null(&self, address: &Address) -> bool
Determine whether an account exists and is not null (zero balance/nonce, no code).
fn origin_balance(&self) -> U256
Balance of the origin account.
fn balance(&self, address: &Address) -> U256
Returns address balance.
fn blockhash(&self, number: &U256) -> H256
Returns the hash of one of the 256 most recent complete blocks.
fn create(&mut self,
gas: &U256,
value: &U256,
code: &[u8])
-> ContractCreateResult
gas: &U256,
value: &U256,
code: &[u8])
-> ContractCreateResult
Creates new contract.
Returns gas_left and contract address if contract creation was succesfull.
fn call(&mut self,
gas: &U256,
sender_address: &Address,
receive_address: &Address,
value: Option<U256>,
data: &[u8],
code_address: &Address,
output: &mut [u8],
call_type: CallType)
-> MessageCallResult
gas: &U256,
sender_address: &Address,
receive_address: &Address,
value: Option<U256>,
data: &[u8],
code_address: &Address,
output: &mut [u8],
call_type: CallType)
-> MessageCallResult
Message call.
Returns Err, if we run out of gas. Otherwise returns call_result which contains gas left and true if subcall was successfull.
fn extcode(&self, address: &Address) -> Arc<Bytes>
Returns code at given address
fn extcodesize(&self, address: &Address) -> usize
Returns code size at given address
fn log(&mut self, topics: Vec<H256>, data: &[u8])
Creates log entry with given topics and data
fn ret(self, gas: &U256, data: &[u8]) -> Result<U256> where Self: Sized
Should be called when transaction calls RETURN
opcode.
Returns gas_left if cost of returning the data is not too high.
fn suicide(&mut self, refund_address: &Address)
Should be called when contract commits suicide. Address to which funds should be refunded.
fn schedule(&self) -> &Schedule
Returns schedule.
fn env_info(&self) -> &EnvInfo
Returns environment info.
fn depth(&self) -> usize
Returns current depth of execution.
If contract A calls contract B, and contract B calls C, then A depth is 0, B is 1, C is 2 and so on.
fn inc_sstore_clears(&mut self)
Increments sstore refunds count by 1.
Provided Methods
fn trace_prepare_execute(&mut self,
_pc: usize,
_instruction: u8,
_gas_cost: &U256)
-> bool
_pc: usize,
_instruction: u8,
_gas_cost: &U256)
-> bool
Prepare to trace an operation. Passthrough for the VM trace.
fn trace_executed(&mut self,
_gas_used: U256,
_stack_push: &[U256],
_mem_diff: Option<(usize, &[u8])>,
_store_diff: Option<(U256, U256)>)
_gas_used: U256,
_stack_push: &[U256],
_mem_diff: Option<(usize, &[u8])>,
_store_diff: Option<(U256, U256)>)
Trace the finalised execution of a single instruction.