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 9191dd1ee..c21720640 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/account.rs b/ethcore/src/state/account.rs
similarity index 100%
rename from ethcore/src/account.rs
rename to ethcore/src/state/account.rs
diff --git a/ethcore/src/state.rs b/ethcore/src/state/mod.rs
similarity index 99%
rename from ethcore/src/state.rs
rename to ethcore/src/state/mod.rs
index ec67c50ed..c62a77d25 100644
--- a/ethcore/src/state.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/substate.rs b/ethcore/src/state/substate.rs
similarity index 100%
rename from ethcore/src/substate.rs
rename to ethcore/src/state/substate.rs
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![],
- }
- ]));
- }
-
-}