When running 0.8.x after running 0.9 again:
- There is a risk the chainstate does not validate at startup (pruned outputs).
- The wallet will run a check for missing spent coins (which may take a while).
When running 0.8.x after running 0.9 again:
I installed Windows version .9 (x64) while .8.6 was shut down. I then uninstalled .8.6 and ran .9 and let it start up completely. I then shut down .9 cleanly, reinstalled .8.6 and then restarted .8.6.
This is the debug.log startup from that .8.6 startup:
2014-03-02 23:58:46 LoadBlockIndexDB(): last block file = 119 2014-03-02 23:58:46 LoadBlockIndexDB(): last block file info: CBlockFileInfo(blocks=513, size=124581150, heights=288141...288653, time=2014-02-27...2014-03-02) 2014-03-02 23:58:46 LoadBlockIndexDB(): transaction index disabled 2014-03-02 23:58:46 LoadBlockIndexDB(): hashBestChain=0000000000000000b57e2c39d906c2ff7eea5a3e8577bc293d2f8841cb269114 height=288653 date=2014-03-02 23:34:32 2014-03-02 23:58:46 init message: Verifying blocks... 2014-03-02 23:58:46 Verifying last 288 blocks at level 3 2014-03-02 23:58:58 No coin database inconsistencies in last 84 blocks (36529 transactions) 2014-03-02 23:58:59 block index 16447ms 2014-03-02 23:58:59 init message: Loading wallet... 2014-03-02 23:59:06 nFileVersion = 90000
Later, debug.log expressed "ReacceptWalletTransactions" for each of that wallet's transactions. The run appeared hung, but viewing debug.log, I could see that it was attempting connections to peers. I kept interacting with the tray icon, where it eventually did hang. I killed the process and the second run started very quickly and is displaying transactions as expected.
Release notes added:
The 'chainstate' for this release is not always compatible with previous releases, so if you run 0.9 and then decide to switch back to a 0.8.x release you might get a blockchain validation error when starting the old release (due to 'pruned outputs' being omitted from the index of unspent transaction outputs).
Running the old release with the -reindex option will rebuild the chainstate data structures and correct the problem.
Also, the first time you run a 0.8.x release on a 0.9 wallet it will rescan the blockchain for missing spent coins, which will take a long time (tens of minutes on a typical machine).
Might be good to mention that you can pretty safely just disable the check rather than rescan?