@@ -124,7 +124,7 @@ pub struct Miner {
124124
125125 sealing_enabled : AtomicBool ,
126126
127- accounts : Option < Arc < AccountProvider > > ,
127+ accounts : Arc < AccountProvider > ,
128128 notifiers : Notifiers ,
129129 malicious_users : Users ,
130130 immune_users : Users ,
@@ -266,20 +266,20 @@ impl Miner {
266266 pub fn new (
267267 options : MinerOptions ,
268268 scheme : & Scheme ,
269- accounts : Option < Arc < AccountProvider > > ,
269+ accounts : Arc < AccountProvider > ,
270270 db : Arc < dyn KeyValueDB > ,
271271 ) -> Arc < Self > {
272272 Arc :: new ( Self :: new_raw ( options, scheme, accounts, db) )
273273 }
274274
275- pub fn with_scheme ( scheme : & Scheme , db : Arc < dyn KeyValueDB > ) -> Self {
276- Self :: new_raw ( Default :: default ( ) , scheme, None , db)
275+ pub fn with_scheme_for_test ( scheme : & Scheme , db : Arc < dyn KeyValueDB > ) -> Self {
276+ Self :: new_raw ( Default :: default ( ) , scheme, AccountProvider :: transient_provider ( ) , db)
277277 }
278278
279279 fn new_raw (
280280 options : MinerOptions ,
281281 scheme : & Scheme ,
282- accounts : Option < Arc < AccountProvider > > ,
282+ accounts : Arc < AccountProvider > ,
283283 db : Arc < dyn KeyValueDB > ,
284284 ) -> Self {
285285 let mem_limit = options. mem_pool_memory_limit . unwrap_or_else ( usize:: max_value) ;
@@ -401,15 +401,11 @@ impl Miner {
401401 self . immune_users . insert ( signer_address) ;
402402 }
403403
404- let origin = self
405- . accounts
406- . as_ref ( )
407- . and_then ( |accounts| match accounts. has_public ( & signer_public) {
408- Ok ( true ) => Some ( TxOrigin :: Local ) ,
409- Ok ( false ) => None ,
410- Err ( _) => None ,
411- } )
412- . unwrap_or ( default_origin) ;
404+ let origin = if self . accounts . has_public ( & signer_public) . unwrap_or_default ( ) {
405+ TxOrigin :: Local
406+ } else {
407+ default_origin
408+ } ;
413409
414410 if self . malicious_users . contains ( & signer_address) {
415411 // FIXME: just to skip, think about another way.
@@ -834,24 +830,17 @@ impl MinerService for Miner {
834830 self . params . apply ( |params| params. author = address) ;
835831
836832 if self . engine_type ( ) . need_signer_key ( ) && self . engine . seals_internally ( ) . is_some ( ) {
837- if let Some ( ref ap) = self . accounts {
838- ctrace ! ( MINER , "Set author to {:?}" , address) ;
839- // Sign test message
840- ap. get_unlocked_account ( & address) ?. sign ( & Default :: default ( ) ) ?;
841- // Limit the scope of the locks.
842- {
843- let mut sealing_work = self . sealing_work . lock ( ) ;
844- sealing_work. enabled = true ;
845- }
846- self . engine . set_signer ( ap. clone ( ) , address) ;
847- Ok ( ( ) )
848- } else {
849- cwarn ! ( MINER , "No account provider" ) ;
850- Err ( AccountProviderError :: NotFound )
833+ ctrace ! ( MINER , "Set author to {:?}" , address) ;
834+ // Sign test message
835+ self . accounts . get_unlocked_account ( & address) ?. sign ( & Default :: default ( ) ) ?;
836+ // Limit the scope of the locks.
837+ {
838+ let mut sealing_work = self . sealing_work . lock ( ) ;
839+ sealing_work. enabled = true ;
851840 }
852- } else {
853- Ok ( ( ) )
841+ self . engine . set_signer ( Arc :: clone ( & self . accounts ) , address) ;
854842 }
843+ Ok ( ( ) )
855844 }
856845
857846 fn get_author_address ( & self ) -> Address {
@@ -1280,7 +1269,7 @@ pub mod test {
12801269 fn check_add_transactions_result_idx ( ) {
12811270 let db = Arc :: new ( kvdb_memorydb:: create ( NUM_COLUMNS . unwrap ( ) ) ) ;
12821271 let scheme = Scheme :: new_test ( ) ;
1283- let miner = Arc :: new ( Miner :: with_scheme ( & scheme, db. clone ( ) ) ) ;
1272+ let miner = Arc :: new ( Miner :: with_scheme_for_test ( & scheme, db. clone ( ) ) ) ;
12841273
12851274 let mut mem_pool = MemPool :: with_limits ( 8192 , usize:: max_value ( ) , 3 , db. clone ( ) , Default :: default ( ) ) ;
12861275 let client = generate_test_client ( db, Arc :: clone ( & miner) , & scheme) . unwrap ( ) ;
0 commit comments