Merge branch 'pv63-state' into pv63-receipts
This commit is contained in:
@@ -13,17 +13,14 @@ pub struct AccountDB<'db> {
|
||||
|
||||
#[inline]
|
||||
fn combine_key<'a>(address: &'a H256, key: &'a H256) -> H256 {
|
||||
let mut addr_hash = address.sha3();
|
||||
// preserve 96 bits of original key for db lookup
|
||||
addr_hash[0..12].clone_from_slice(&[0u8; 12]);
|
||||
&addr_hash ^ key
|
||||
address ^ key
|
||||
}
|
||||
|
||||
impl<'db> AccountDB<'db> {
|
||||
pub fn new(db: &'db HashDB, address: &Address) -> AccountDB<'db> {
|
||||
AccountDB {
|
||||
db: db,
|
||||
address: x!(address.clone()),
|
||||
address: x!(address),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -70,7 +67,7 @@ impl<'db> AccountDBMut<'db> {
|
||||
pub fn new(db: &'db mut HashDB, address: &Address) -> AccountDBMut<'db> {
|
||||
AccountDBMut {
|
||||
db: db,
|
||||
address: x!(address.clone()),
|
||||
address: x!(address),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ pub struct Client<V = CanonVerifier> where V: Verifier {
|
||||
}
|
||||
|
||||
const HISTORY: u64 = 1200;
|
||||
const CLIENT_DB_VER_STR: &'static str = "5.1";
|
||||
const CLIENT_DB_VER_STR: &'static str = "5.3";
|
||||
|
||||
impl Client<CanonVerifier> {
|
||||
/// Create a new client with given spec and DB path.
|
||||
|
||||
@@ -35,13 +35,13 @@ pub enum ExtrasIndex {
|
||||
BlocksBlooms = 4,
|
||||
/// Block receipts index
|
||||
BlockReceipts = 5,
|
||||
}
|
||||
}
|
||||
|
||||
/// trait used to write Extras data to db
|
||||
pub trait ExtrasWritable {
|
||||
/// Write extra data to db
|
||||
fn put_extras<K, T>(&self, hash: &K, value: &T) where
|
||||
T: ExtrasIndexable + Encodable,
|
||||
T: ExtrasIndexable + Encodable,
|
||||
K: ExtrasSliceConvertable;
|
||||
}
|
||||
|
||||
@@ -60,9 +60,9 @@ pub trait ExtrasReadable {
|
||||
|
||||
impl ExtrasWritable for DBTransaction {
|
||||
fn put_extras<K, T>(&self, hash: &K, value: &T) where
|
||||
T: ExtrasIndexable + Encodable,
|
||||
T: ExtrasIndexable + Encodable,
|
||||
K: ExtrasSliceConvertable {
|
||||
|
||||
|
||||
self.put(&hash.to_extras_slice(T::extras_index()), &encode(value)).unwrap()
|
||||
}
|
||||
}
|
||||
@@ -215,6 +215,12 @@ pub struct BlocksBlooms {
|
||||
pub blooms: [H2048; 16],
|
||||
}
|
||||
|
||||
impl Default for BlocksBlooms {
|
||||
fn default() -> Self {
|
||||
BlocksBlooms::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl BlocksBlooms {
|
||||
pub fn new() -> Self {
|
||||
BlocksBlooms { blooms: unsafe { ::std::mem::zeroed() }}
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#![cfg_attr(feature="dev", allow(match_bool))]
|
||||
// Keeps consistency (all lines with `.clone()`) and helpful when changing ref to non-ref.
|
||||
#![cfg_attr(feature="dev", allow(clone_on_copy))]
|
||||
// In most cases it expresses function flow better
|
||||
#![cfg_attr(feature="dev", allow(if_not_else))]
|
||||
|
||||
//! Ethcore library
|
||||
//!
|
||||
|
||||
@@ -31,6 +31,12 @@ pub struct Substate {
|
||||
pub contracts_created: Vec<Address>
|
||||
}
|
||||
|
||||
impl Default for Substate {
|
||||
fn default() -> Self {
|
||||
Substate::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl Substate {
|
||||
/// Creates new substate.
|
||||
pub fn new() -> Self {
|
||||
@@ -67,8 +73,8 @@ mod tests {
|
||||
let mut sub_state = Substate::new();
|
||||
sub_state.contracts_created.push(address_from_u64(1u64));
|
||||
sub_state.logs.push(LogEntry {
|
||||
address: address_from_u64(1u64),
|
||||
topics: vec![],
|
||||
address: address_from_u64(1u64),
|
||||
topics: vec![],
|
||||
data: vec![]
|
||||
});
|
||||
sub_state.sstore_clears_count = x!(5);
|
||||
@@ -77,8 +83,8 @@ mod tests {
|
||||
let mut sub_state_2 = Substate::new();
|
||||
sub_state_2.contracts_created.push(address_from_u64(2u64));
|
||||
sub_state_2.logs.push(LogEntry {
|
||||
address: address_from_u64(1u64),
|
||||
topics: vec![],
|
||||
address: address_from_u64(1u64),
|
||||
topics: vec![],
|
||||
data: vec![]
|
||||
});
|
||||
sub_state_2.sstore_clears_count = x!(7);
|
||||
|
||||
Reference in New Issue
Block a user