Skip to content

Commit 5341c3b

Browse files
committed
Merge bitcoin#22461: wallet: Change ScriptPubKeyMan::Upgrade default to True
5012a79 Test that descriptor wallet upgrade does nothing (Andrew Chow) 48bd7d3 Change ScriptPubKeyMan::Upgrade to default to return true (Andrew Chow) Pull request description: When adding a new ScriptPubKeyMan, it's likely that there will be nothing for `Upgrade` to do. If it is called (via `upgradewallet`), then it should do nothing, successfully. This PR changes the default `ScriptPubKeyMan::Upgrade` function so that it returns a success instead of failure when doing nothing. Fixes bitcoin#22460 ACKs for top commit: jonatack: ACK 5012a79 meshcollider: utACK 5012a79 Tree-SHA512: 578c6521e997f7bb5cc44be2cfe9e0a760b6bd4aa301026a6b8b3282e8757473e4cb9f68b2e79dacdc2b42dddae718450072e0a38817df205dfea177a74d7f3d
2 parents 4371e63 + 5012a79 commit 5341c3b

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/wallet/scriptpubkeyman.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ class ScriptPubKeyMan
207207
virtual bool CanGetAddresses(bool internal = false) const { return false; }
208208

209209
/** Upgrades the wallet to the specified version */
210-
virtual bool Upgrade(int prev_version, int new_version, bilingual_str& error) { return false; }
210+
virtual bool Upgrade(int prev_version, int new_version, bilingual_str& error) { return true; }
211211

212212
virtual bool HavePrivateKeys() const { return false; }
213213

test/functional/wallet_upgradewallet.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,11 @@ def dumb_sync_blocks(self):
9494
def test_upgradewallet(self, wallet, previous_version, requested_version=None, expected_version=None):
9595
unchanged = expected_version == previous_version
9696
new_version = previous_version if unchanged else expected_version if expected_version else requested_version
97-
assert_equal(wallet.getwalletinfo()["walletversion"], previous_version)
97+
old_wallet_info = wallet.getwalletinfo()
98+
assert_equal(old_wallet_info["walletversion"], previous_version)
9899
assert_equal(wallet.upgradewallet(requested_version),
99100
{
100-
"wallet_name": "",
101+
"wallet_name": old_wallet_info["walletname"],
101102
"previous_version": previous_version,
102103
"current_version": new_version,
103104
"result": "Already at latest version. Wallet version unchanged." if unchanged else "Wallet upgraded successfully from version {} to version {}.".format(previous_version, new_version),
@@ -352,6 +353,11 @@ def copy_split_hd():
352353
v16_3_kvs = dump_bdb_kv(v16_3_wallet)
353354
assert b'\x0adefaultkey' not in v16_3_kvs
354355

356+
if self.is_sqlite_compiled():
357+
self.log.info("Checking that descriptor wallets do nothing, successfully")
358+
self.nodes[0].createwallet(wallet_name="desc_upgrade", descriptors=True)
359+
desc_wallet = self.nodes[0].get_wallet_rpc("desc_upgrade")
360+
self.test_upgradewallet(desc_wallet, previous_version=169900, expected_version=169900)
355361

356362
if __name__ == '__main__':
357363
UpgradeWalletTest().main()

0 commit comments

Comments
 (0)