Vec<u8> -> Bytes and clearing log API
This commit is contained in:
parent
09c46be74d
commit
79c1cc02f7
@ -1,5 +1,6 @@
|
|||||||
//! Interface for Evm externalities.
|
//! Interface for Evm externalities.
|
||||||
|
|
||||||
|
use common::Bytes;
|
||||||
use util::hash::*;
|
use util::hash::*;
|
||||||
use util::uint::*;
|
use util::uint::*;
|
||||||
use evm::{Schedule, Error};
|
use evm::{Schedule, Error};
|
||||||
@ -38,10 +39,10 @@ pub trait Ext {
|
|||||||
output: &mut [u8]) -> Result<(U256, bool), Error>;
|
output: &mut [u8]) -> Result<(U256, bool), Error>;
|
||||||
|
|
||||||
/// Returns code at given address
|
/// Returns code at given address
|
||||||
fn extcode(&self, address: &Address) -> Vec<u8>;
|
fn extcode(&self, address: &Address) -> Bytes;
|
||||||
|
|
||||||
/// Creates log entry with given topics and data
|
/// Creates log entry with given topics and data
|
||||||
fn log(&mut self, topics: Vec<H256>, data: Vec<u8>);
|
fn log(&mut self, topics: Vec<H256>, data: &[u8]);
|
||||||
|
|
||||||
/// Should be called when transaction calls `RETURN` opcode.
|
/// Should be called when transaction calls `RETURN` opcode.
|
||||||
/// Returns gas_left if cost of returning the data is not too high.
|
/// Returns gas_left if cost of returning the data is not too high.
|
||||||
|
@ -614,7 +614,7 @@ impl Interpreter {
|
|||||||
.iter()
|
.iter()
|
||||||
.map(H256::from)
|
.map(H256::from)
|
||||||
.collect();
|
.collect();
|
||||||
ext.log(topics, mem.read_slice(offset, size).to_vec());
|
ext.log(topics, mem.read_slice(offset, size));
|
||||||
},
|
},
|
||||||
instructions::PUSH1...instructions::PUSH32 => {
|
instructions::PUSH1...instructions::PUSH32 => {
|
||||||
let bytes = instructions::get_push_bytes(instruction);
|
let bytes = instructions::get_push_bytes(instruction);
|
||||||
|
@ -7,7 +7,7 @@ use evm;
|
|||||||
struct RuntimeData {
|
struct RuntimeData {
|
||||||
gas: U256,
|
gas: U256,
|
||||||
gas_price: U256,
|
gas_price: U256,
|
||||||
call_data: Vec<u8>,
|
call_data: Bytes,
|
||||||
address: Address,
|
address: Address,
|
||||||
caller: Address,
|
caller: Address,
|
||||||
origin: Address,
|
origin: Address,
|
||||||
@ -17,7 +17,7 @@ struct RuntimeData {
|
|||||||
gas_limit: U256,
|
gas_limit: U256,
|
||||||
number: u64,
|
number: u64,
|
||||||
timestamp: u64,
|
timestamp: u64,
|
||||||
code: Vec<u8>
|
code: Bytes
|
||||||
}
|
}
|
||||||
|
|
||||||
impl RuntimeData {
|
impl RuntimeData {
|
||||||
|
@ -66,14 +66,14 @@ impl Ext for FakeExt {
|
|||||||
unimplemented!();
|
unimplemented!();
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extcode(&self, address: &Address) -> Vec<u8> {
|
fn extcode(&self, address: &Address) -> Bytes {
|
||||||
self.codes.get(address).unwrap_or(&Bytes::new()).clone()
|
self.codes.get(address).unwrap_or(&Bytes::new()).clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn log(&mut self, topics: Vec<H256>, data: Vec<u8>) {
|
fn log(&mut self, topics: Vec<H256>, data: &[u8]) {
|
||||||
self.logs.push(FakeLogEntry {
|
self.logs.push(FakeLogEntry {
|
||||||
topics: topics,
|
topics: topics,
|
||||||
data: data
|
data: data.to_vec()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ impl<'a> Ext for Externalities<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extcode(&self, address: &Address) -> Vec<u8> {
|
fn extcode(&self, address: &Address) -> Bytes {
|
||||||
self.state.code(address).unwrap_or(vec![])
|
self.state.code(address).unwrap_or(vec![])
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ impl<'a> Ext for Externalities<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn log(&mut self, topics: Vec<H256>, data: Bytes) {
|
fn log(&mut self, topics: Vec<H256>, data: &[u8]) {
|
||||||
let address = self.params.address.clone();
|
let address = self.params.address.clone();
|
||||||
self.substate.logs.push(LogEntry::new(address, topics, data));
|
self.substate.logs.push(LogEntry::new(address, topics, data.to_vec()));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn suicide(&mut self, refund_address: &Address) {
|
fn suicide(&mut self, refund_address: &Address) {
|
||||||
|
@ -101,7 +101,7 @@ impl State {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Mutate storage of account `a` so that it is `value` for `key`.
|
/// Mutate storage of account `a` so that it is `value` for `key`.
|
||||||
pub fn code(&self, a: &Address) -> Option<Vec<u8>> {
|
pub fn code(&self, a: &Address) -> Option<Bytes> {
|
||||||
self.get(a, true).as_ref().map(|a|a.code().map(|x|x.to_vec())).unwrap_or(None)
|
self.get(a, true).as_ref().map(|a|a.code().map(|x|x.to_vec())).unwrap_or(None)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,11 +132,11 @@ impl<'a> Ext for TestExt<'a> {
|
|||||||
res
|
res
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extcode(&self, address: &Address) -> Vec<u8> {
|
fn extcode(&self, address: &Address) -> Bytes {
|
||||||
self.ext.extcode(address)
|
self.ext.extcode(address)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn log(&mut self, topics: Vec<H256>, data: Vec<u8>) {
|
fn log(&mut self, topics: Vec<H256>, data: &[u8]) {
|
||||||
self.ext.log(topics, data)
|
self.ext.log(topics, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user