diff --git a/ethcore/src/client.rs b/ethcore/src/client.rs index 6ae628f8b..070513c0a 100644 --- a/ethcore/src/client.rs +++ b/ethcore/src/client.rs @@ -36,6 +36,7 @@ use transaction::LocalizedTransaction; use extras::TransactionAddress; use filter::Filter; use log_entry::LocalizedLogEntry; +use util::keys::store::SecretStore; pub use block_queue::{BlockQueueConfig, BlockQueueInfo}; pub use blockchain::{TreeRoute, BlockChainConfig, CacheSize as BlockChainCacheSize}; @@ -202,7 +203,8 @@ pub struct Client where V: Verifier { sealing_block: Mutex>, author: RwLock
, extra_data: RwLock, - verifier: PhantomData + verifier: PhantomData, + secret_store: Arc>, } const HISTORY: u64 = 1000; @@ -238,6 +240,9 @@ impl Client where V: Verifier { let panic_handler = PanicHandler::new_in_arc(); panic_handler.forward_from(&block_queue); + let secret_store = Arc::new(RwLock::new(SecretStore::new())); + secret_store.write().unwrap().try_import_existing(); + Ok(Arc::new(Client { chain: chain, engine: engine, @@ -249,7 +254,8 @@ impl Client where V: Verifier { sealing_block: Mutex::new(None), author: RwLock::new(Address::new()), extra_data: RwLock::new(Vec::new()), - verifier: PhantomData + verifier: PhantomData, + secret_store: secret_store, })) } @@ -274,6 +280,11 @@ impl Client where V: Verifier { last_hashes } + /// Secret store (key manager) + pub fn secret_store(&self) -> &Arc> { + &self.secret_store + } + fn check_and_close_block(&self, block: &PreverifiedBlock) -> Result { let engine = self.engine.deref().deref(); let header = &block.header;