openethereum/src/evm/env.rs

64 lines
1.4 KiB
Rust
Raw Normal View History

2015-12-23 13:02:01 +01:00
use util::hash::*;
2015-12-29 12:04:03 +01:00
use util::uint::*;
2015-12-30 12:03:40 +01:00
use state::*;
2015-12-23 13:02:01 +01:00
2015-12-30 12:03:40 +01:00
pub struct Env {
state: State,
address: Address
}
2015-12-23 13:02:01 +01:00
impl Env {
2015-12-30 12:03:40 +01:00
pub fn new(state: State, address: Address) -> Env {
Env {
state: state,
address: address
}
2015-12-23 13:02:01 +01:00
}
2015-12-30 12:03:40 +01:00
pub fn sload(&self, index: &H256) -> H256 {
self.state.storage_at(&self.address, index)
2015-12-23 13:02:01 +01:00
}
2015-12-30 12:03:40 +01:00
pub fn sstore(&mut self, index: H256, value: H256) {
println!("index: {:?}, value: {:?}", index, value);
self.state.set_storage(&self.address, index, value)
2015-12-23 13:02:01 +01:00
}
2015-12-29 12:04:03 +01:00
pub fn balance(&self, _address: &Address) -> U256 {
unimplemented!();
}
pub fn blockhash(&self, _number: &U256) -> H256 {
unimplemented!();
}
/// Creates new contract
/// Returns new contract address gas used
pub fn create(&self, _gas: u64, _endowment: &U256, _code: &[u8]) -> (Address, u64) {
unimplemented!();
}
/// Calls existing contract
/// Returns call output and gas used
pub fn call(&self, _gas: u64, _call_gas: u64, _receive_address: &H256, _value: &U256, _data: &[u8], _code_address: &Address) -> Option<(Vec<u8>, u64)>{
unimplemented!();
}
/// Returns code at given address
pub fn extcode(&self, _address: &Address) -> Vec<u8> {
unimplemented!();
}
pub fn log(&self, _topics: &[H256], _data: &[u8]) {
unimplemented!();
}
2015-12-30 12:03:40 +01:00
/// Drain state
// not sure if this is the best solution, but seems to be the easiest one, mk
pub fn state(self) -> State {
self.state
}
2015-12-23 13:02:01 +01:00
}