Conversation
A first-run wallet created from an imported mnemonic writes the current chain locator before the startup rescan. This makes the rescan start at the tip, so funds received by the restored deterministic addresses remain absent until a manual rescan.\n\nKeep the initial best-chain write out of imported-mnemonic initialization, scan the full available history, and preserve the normal wallet-birthday optimization for newly generated wallets. Track the GUI restore choice separately from the generated-seed path.\n\nAdd a functional regression that creates a funded chain, removes wallet.dat, and recreates the wallet from the same mnemonic.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When a first-run wallet is created from an imported BIP39 mnemonic while the chain already has history,
CWallet::CreateWalletFromFilewrites the current chain locator before its startup rescan. The subsequent rescan therefore starts at the tip and restored funds are not discovered until a manual rescan. This is the behavior reported by #1081.Approach
Test plan
git diff --checkpython3 -m py_compile test/functional/wallet_mnemonic_rescan.pyorigin/developsource shape.test/functional/wallet_mnemonic_rescan.py, which funds a deterministic address, removeswallet.dat, recreates the wallet from the same mnemonic, and checks the restored balance.ravendbinary or configured Makefile (FileNotFoundError: [Errno 2] No such file or directory: "ravend").Risk and exclusions
This changes only first-run imported-mnemonic wallet initialization and its rescan anchor. Newly generated wallets retain the existing best-chain shortcut. It does not change consensus rules, mnemonic derivation, or the general rescan scheduler.
Fixes #1081