From 8cf764da896d77ca2dc2181b24ea52839645185f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= Date: Wed, 10 Apr 2019 12:51:22 +0300 Subject: [PATCH] Revert "Can now specify the number of empty accounts to derive" This reverts commit 5b30aa59d63fcb7ef8111ec89a6f06509b5ce687. --- accounts/scwallet/wallet.go | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/accounts/scwallet/wallet.go b/accounts/scwallet/wallet.go index 033a46c77..d2b55d0be 100644 --- a/accounts/scwallet/wallet.go +++ b/accounts/scwallet/wallet.go @@ -390,7 +390,7 @@ func (w *Wallet) Open(passphrase string) error { w.deriveReq = make(chan chan struct{}) w.deriveQuit = make(chan chan error) - go w.selfDerive(0) + go w.selfDerive() // Notify anyone listening for wallet events that a new device is accessible go w.Hub.updateFeed.Send(accounts.WalletEvent{Wallet: w, Kind: accounts.WalletOpened}) @@ -426,9 +426,8 @@ func (w *Wallet) Close() error { } // selfDerive is an account derivation loop that upon request attempts to find -// new non-zero accounts. maxEmpty specifies the number of empty accounts that -// should be derived once an initial empty account has been found. -func (w *Wallet) selfDerive(maxEmpty int) { +// new non-zero accounts. +func (w *Wallet) selfDerive() { w.log.Debug("Smart card wallet self-derivation started") defer w.log.Debug("Smart card wallet self-derivation stopped") @@ -466,7 +465,7 @@ func (w *Wallet) selfDerive(maxEmpty int) { context = context.Background() ) - for empty, emptyCount := false, maxEmpty+1; !empty || emptyCount > 0; { + for empty := false; !empty; { // Retrieve the next derived Ethereum account if nextAddr == (common.Address{}) { if nextAcc, err = w.session.derive(nextPath); err != nil { @@ -490,11 +489,9 @@ func (w *Wallet) selfDerive(maxEmpty int) { w.log.Warn("Smartcard wallet nonce retrieval failed", "err", err) break } - // If the next account is empty and no more empty accounts are - // allowed, stop self-derivation. Add the current one nonetheless. + // If the next account is empty, stop self-derivation, but add it nonetheless if balance.Sign() == 0 && nonce == 0 { empty = true - emptyCount-- } // We've just self-derived a new account, start tracking it locally path := make(accounts.DerivationPath, len(nextPath)) @@ -508,7 +505,7 @@ func (w *Wallet) selfDerive(maxEmpty int) { pairing.Accounts[nextAddr] = path // Fetch the next potential account - if !empty || emptyCount > 0 { + if !empty { nextAddr = common.Address{} nextPath[len(nextPath)-1]++ } @@ -592,7 +589,7 @@ func (w *Wallet) Contains(account accounts.Account) bool { // Initialize installs a keypair generated from the provided key into the wallet. func (w *Wallet) Initialize(seed []byte) error { - go w.selfDerive(0) + go w.selfDerive() // DO NOT lock at this stage, as the initialize // function relies on Status() return w.session.initialize(seed)