diff --git a/ethcore/src/common.rs b/ethcore/src/common.rs index 2c66710c0..41fdd5397 100644 --- a/ethcore/src/common.rs +++ b/ethcore/src/common.rs @@ -21,7 +21,6 @@ pub use env_info::*; pub use views::*; pub use builtin::*; pub use header::*; -pub use account::*; pub use transaction::*; pub use log_entry::*; pub use receipt::*; diff --git a/ethcore/src/executive.rs b/ethcore/src/executive.rs index 748582eba..4cceb137b 100644 --- a/ethcore/src/executive.rs +++ b/ethcore/src/executive.rs @@ -16,12 +16,11 @@ //! Transaction Execution environment. use common::*; -use state::*; +use state::{State, Substate}; use engines::Engine; use types::executed::CallType; use evm::{self, Ext, Factory, Finalize}; use externalities::*; -use substate::*; use trace::{FlatTrace, Tracer, NoopTracer, ExecutiveTracer, VMTrace, VMTracer, ExecutiveVMTracer, NoopVMTracer}; use crossbeam; pub use types::executed::{Executed, ExecutionResult}; @@ -487,7 +486,7 @@ mod tests { use super::*; use common::*; use evm::{Factory, VMType}; - use substate::*; + use state::Substate; use tests::helpers::*; use trace::trace; use trace::{FlatTrace, Tracer, NoopTracer, ExecutiveTracer}; diff --git a/ethcore/src/externalities.rs b/ethcore/src/externalities.rs index bfaa15d38..09c4b4e11 100644 --- a/ethcore/src/externalities.rs +++ b/ethcore/src/externalities.rs @@ -16,11 +16,10 @@ //! Transaction Execution environment. use common::*; -use state::*; +use state::{State, Substate}; use engines::Engine; use executive::*; use evm::{self, Schedule, Ext, ContractCreateResult, MessageCallResult, Factory}; -use substate::*; use types::executed::CallType; use trace::{Tracer, VMTracer}; @@ -299,10 +298,9 @@ impl<'a, T, V> Ext for Externalities<'a, T, V> where T: 'a + Tracer, V: 'a + VMT #[cfg(test)] mod tests { use common::*; - use state::*; use engines::Engine; - use evm::{Ext}; - use substate::*; + use evm::Ext; + use state::{State, Substate}; use tests::helpers::*; use devtools::GuardedTempResult; use super::*; diff --git a/ethcore/src/json_tests/executive.rs b/ethcore/src/json_tests/executive.rs index adba16703..7304f5931 100644 --- a/ethcore/src/json_tests/executive.rs +++ b/ethcore/src/json_tests/executive.rs @@ -15,13 +15,12 @@ // along with Parity. If not, see . use super::test_common::*; -use state::*; +use state::{State, Substate}; use executive::*; use engines::Engine; use evm; use evm::{Schedule, Ext, Factory, Finalize, VMType, ContractCreateResult, MessageCallResult}; use externalities::*; -use substate::*; use types::executed::CallType; use tests::helpers::*; use ethjson; diff --git a/ethcore/src/lib.rs b/ethcore/src/lib.rs index 5c9d2c5fe..d74139d8a 100644 --- a/ethcore/src/lib.rs +++ b/ethcore/src/lib.rs @@ -132,10 +132,8 @@ mod basic_types; mod env_info; mod pod_account; mod state; -mod account; mod account_db; mod builtin; -mod substate; mod executive; mod externalities; mod verification; diff --git a/ethcore/src/pod_account.rs b/ethcore/src/pod_account.rs index 80332b3e8..797d1a265 100644 --- a/ethcore/src/pod_account.rs +++ b/ethcore/src/pod_account.rs @@ -15,8 +15,8 @@ // along with Parity. If not, see . use util::*; -use account::*; -use account_db::*; +use state::Account; +use account_db::AccountDBMut; use ethjson; use types::account_diff::*; diff --git a/ethcore/src/snapshot/tests/helpers.rs b/ethcore/src/snapshot/tests/helpers.rs index aa0fc3ae5..e6a92642e 100644 --- a/ethcore/src/snapshot/tests/helpers.rs +++ b/ethcore/src/snapshot/tests/helpers.rs @@ -79,7 +79,7 @@ impl StateProducer { let address_hash = H256::random(); let balance: usize = rng.gen(); let nonce: usize = rng.gen(); - let acc = ::account::Account::new_basic(balance.into(), nonce.into()).rlp(); + let acc = ::state::Account::new_basic(balance.into(), nonce.into()).rlp(); trie.insert(&address_hash[..], &acc).unwrap(); } } diff --git a/ethcore/src/state/mod.rs b/ethcore/src/state/mod.rs index ec67c50ed..c62a77d25 100644 --- a/ethcore/src/state/mod.rs +++ b/ethcore/src/state/mod.rs @@ -15,7 +15,6 @@ // along with Parity. If not, see . use std::cell::{RefCell, RefMut}; - use common::*; use engines::Engine; use executive::{Executive, TransactOptions}; @@ -26,6 +25,12 @@ use pod_account::*; use pod_state::{self, PodState}; use types::state_diff::StateDiff; +mod account; +mod substate; + +pub use self::account::Account; +pub use self::substate::Substate; + /// Used to return information about an `State::apply` operation. pub struct ApplyOutcome { /// The receipt for the applied transaction. @@ -428,7 +433,6 @@ use std::str::FromStr; use rustc_serialize::hex::FromHex; use super::*; use util::{U256, H256, FixedHash, Address, Hashable}; -use account::*; use tests::helpers::*; use devtools::*; use env_info::*; diff --git a/ethcore/src/state_diff.rs b/ethcore/src/state_diff.rs deleted file mode 100644 index c362d96d1..000000000 --- a/ethcore/src/state_diff.rs +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2015, 2016 Ethcore (UK) Ltd. -// This file is part of Parity. - -// Parity is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Parity is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Parity. If not, see . - -use util::*; -#[cfg(test)] -use pod_state::*; -use account_diff::*; - -#[derive(Debug,Clone,PartialEq,Eq)] -/// Expression for the delta between two system states. Encoded the -/// delta of every altered account. -pub struct StateDiff (BTreeMap); - -impl StateDiff { - #[cfg(test)] - /// Calculate and return diff between `pre` state and `post` state. - pub fn diff_pod(pre: &PodState, post: &PodState) -> StateDiff { - StateDiff(pre.get().keys().merge(post.get().keys()).filter_map(|acc| AccountDiff::diff_pod(pre.get().get(acc), post.get().get(acc)).map(|d|(acc.clone(), d))).collect()) - } -} - -impl fmt::Display for StateDiff { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - for (add, acc) in &self.0 { - try!(write!(f, "{} {}: {}", acc.existance(), add, acc)); - } - Ok(()) - } -} - -impl Deref for StateDiff { - type Target = BTreeMap; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -#[cfg(test)] -mod test { - use common::*; - use pod_state::*; - use account_diff::*; - use pod_account::*; - use super::*; - - #[test] - fn create_delete() { - let a = PodState::from(map![ 1.into() => PodAccount::new(69.into(), 0.into(), vec![], map![]) ]); - assert_eq!(StateDiff::diff_pod(&a, &PodState::new()), StateDiff(map![ - 1.into() => AccountDiff{ - balance: Diff::Died(69.into()), - nonce: Diff::Died(0.into()), - code: Diff::Died(vec![]), - storage: map![], - } - ])); - assert_eq!(StateDiff::diff_pod(&PodState::new(), &a), StateDiff(map![ - 1.into() => AccountDiff{ - balance: Diff::Born(69.into()), - nonce: Diff::Born(0.into()), - code: Diff::Born(vec![]), - storage: map![], - } - ])); - } - - #[test] - fn create_delete_with_unchanged() { - let a = PodState::from(map![ 1.into() => PodAccount::new(69.into(), 0.into(), vec![], map![]) ]); - let b = PodState::from(map![ - 1.into() => PodAccount::new(69.into(), 0.into(), vec![], map![]), - 2.into() => PodAccount::new(69.into(), 0.into(), vec![], map![]) - ]); - assert_eq!(StateDiff::diff_pod(&a, &b), StateDiff(map![ - 2.into() => AccountDiff{ - balance: Diff::Born(69.into()), - nonce: Diff::Born(0.into()), - code: Diff::Born(vec![]), - storage: map![], - } - ])); - assert_eq!(StateDiff::diff_pod(&b, &a), StateDiff(map![ - 2.into() => AccountDiff{ - balance: Diff::Died(69.into()), - nonce: Diff::Died(0.into()), - code: Diff::Died(vec![]), - storage: map![], - } - ])); - } - - #[test] - fn change_with_unchanged() { - let a = PodState::from(map![ - 1.into() => PodAccount::new(69.into(), 0.into(), vec![], map![]), - 2.into() => PodAccount::new(69.into(), 0.into(), vec![], map![]) - ]); - let b = PodState::from(map![ - 1.into() => PodAccount::new(69.into(), 1.into(), vec![], map![]), - 2.into() => PodAccount::new(69.into(), 0.into(), vec![], map![]) - ]); - assert_eq!(StateDiff::diff_pod(&a, &b), StateDiff(map![ - 1.into() => AccountDiff{ - balance: Diff::Same, - nonce: Diff::Changed(0.into(), 1.into()), - code: Diff::Same, - storage: map![], - } - ])); - } - -}