Commit graph

76 commits

Author SHA1 Message Date
ivanlele
8d5b1ce230
Merge b21ba081be into merged_master (Bitcoin PR bitcoin/bitcoin#30265) 2026-03-12 16:13:00 +00:00
ivanlele
aa41e29f97
Merge 3a29ff5dea into merged_master (Bitcoin PR bitcoin/bitcoin#30463) 2026-03-09 16:54:19 +00:00
ikripaka
055b97a616
Merge d9aa7b23e4 into merged_master (Bitcoin PR bitcoin/bitcoin#26596) 2026-03-05 18:34:53 +00:00
ivanlele
711e86714a Merge b4a05751b6 into merged_master (Bitcoin PR #29586) 2026-02-12 17:32:36 +00:00
Tom Trevethan
7e6fc14025
resolve fixmes in wallet_migration.py: replaceable=True must be set explicitly in sendtoaddress as walletrbf=0 is set by default in the test_framework wallet config (test_framework/util.py:421)
(cherry picked from commit 860de3c99d8736113e47d3d45c2a0e0a5542e0bb)
2025-12-17 14:31:49 +02:00
Byron Hambly
776d0a85b4
Merge a11585692e into merged_master (Bitcoin PR bitcoin/bitcoin#28868) 2025-11-29 14:47:39 +02:00
Byron Hambly
c34920f56a
Merge 93e10cab5d into merged_master (Bitcoin PR bitcoin/bitcoin#29367) 2025-11-29 14:43:31 +02:00
Byron Hambly
9d50e4e1b4
Merge 5a1473e2c0 into merged_master (Bitcoin PR bitcoin/bitcoin#28976) 2025-11-29 14:11:23 +02:00
Byron Hambly
27dce4469b
Merge fcacbab487 into merged_master (Bitcoin PR bitcoin/bitcoin#29204) 2025-11-18 09:48:58 +02:00
Byron Hambly
720001ebba
Merge c2d04f1319 into merged_master (Bitcoin PR bitcoin/bitcoin#28610) 2025-11-18 08:50:00 +02:00
Byron Hambly
f6bbbcaf08
Merge 2a349f9ea5 into merged_master (Bitcoin PR bitcoin/bitcoin#28264) 2025-11-05 14:53:04 +02:00
Byron Hambly
4c8084b3c0
test: fix wallet_migration.py
when specifying inputs for sendall, fetching the value of the input
incorrectly used the input loop index instead of the actual prevout
index.

this meant that *sometimes* the sendall call would use the wrong input
resulting in a tx that didn't balance - when the loop index was
different to the vout.
2025-10-02 13:18:57 +02:00
Byron Hambly
98d2a8ba83
Merge d724bb5291 into merged_master (Bitcoin PR bitcoin/bitcoin#28609) 2025-08-08 07:58:14 +02:00
Byron Hambly
c1b5207e8c
Merge d98d88c779 into merged_master (Bitcoin PR bitcoin/bitcoin#28392) 2025-08-07 09:16:33 +02:00
Byron Hambly
bbde7e222c
Merge 744157ef1a into merged_master (Bitcoin PR bitcoin/bitcoin#28602) 2025-08-06 20:37:13 +02:00
Byron Hambly
bf24d3692a
Merge 50f250a67d into merged_master (Bitcoin PR bitcoin/bitcoin#28542) 2025-08-05 15:21:35 +02:00
Byron Hambly
52015faa34
Merge abe4fedab7 into merged_master (Bitcoin PR bitcoin/bitcoin#28125) 2025-08-01 12:55:18 +02:00
Byron Hambly
9908be832d Merge 72304ccf1e into merged_master (Bitcoin PR bitcoin/bitcoin#28257) 2025-07-04 09:52:34 +02:00
Byron Hambly
ea86e8f268 Merge 7edce77ff3 into merged_master (Bitcoin PR bitcoin/bitcoin#28067) 2025-07-03 09:42:33 +02:00
Byron Hambly
861d620a00 Merge 87e19b047c into merged_master (Bitcoin PR bitcoin/bitcoin#28038) 2025-07-01 11:18:57 +02:00
Byron Hambly
b71fb23d2d Merge e8543629ae into merged_master (Bitcoin PR bitcoin/bitcoin#27884) 2025-06-30 14:36:23 +02:00
Byron Hambly
459be075a1 Merge ee22ca59a2 into merged_master (Bitcoin PR bitcoin/bitcoin#26740) 2025-06-27 15:40:23 +02:00
Byron Hambly
7f25cff4a2 Merge 34ac3f438a into merged_master (Bitcoin PR bitcoin/bitcoin#26485) 2025-06-27 11:24:52 +02:00
Byron Hambly
5b856b6f5f Merge fa53611cf1 into merged_master (Bitcoin PR bitcoin/bitcoin#26076) 2025-05-16 11:10:32 +02:00
Tom Trevethan
9b8a5eacea Merge 9f6ef0c156 into merged_master (Bitcoin PR bitcoin/bitcoin#27143) 2025-04-08 13:40:24 +00:00
Tom Trevethan
e86b323459 Merge 63893d5eab into merged_master (Bitcoin PR bitcoin/bitcoin#26595) 2025-04-08 12:53:15 +00:00
Byron Hambly
58ed702325 Merge fdd363ebd9 into merged_master (Bitcoin PR bitcoin/bitcoin#26910) 2025-04-05 11:13:37 +02:00
Byron Hambly
620e49c665 Merge b4fb0a3255 into merged_master (Bitcoin PR bitcoin/bitcoin#26761) 2025-04-01 19:31:13 +02:00
Byron Hambly
b4405ba453 Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750) 2025-03-31 16:37:52 +02:00
Byron Hambly
df8dcaa38e Merge 8456bfac6b into merged_master (Bitcoin PR bitcoin/bitcoin#26638) 2025-03-31 12:07:25 +02:00
Byron Hambly
073316ddaf Merge e334f7a545 into merged_master (Bitcoin PR bitcoin/bitcoin#26594) 2025-03-04 11:18:49 +02:00
Byron Hambly
0b0d5d214e Merge 8597260872 into merged_master (Bitcoin PR bitcoin/bitcoin#26480) 2025-03-04 10:42:21 +02:00
Byron Hambly
e1e241d410 Merge 7921026a24 into merged_master (Bitcoin PR bitcoin/bitcoin#19602)
FIXME for test_other_watchonly in the new wallet migration test
2024-11-26 11:21:27 +02:00
glozow
b21ba081be
Merge bitcoin/bitcoin#30265: wallet: Fix listwalletdir listing of migrated default wallets and generated backup files
6b2dcba076 wallet: List sqlite wallets with empty string name (Ava Chow)
3ddbdd1815 wallet: Ignore .bak files when listing wallet files (Ava Chow)

Pull request description:

  When the default wallet is migrated, we do not rename the wallet so we end up having a descriptor wallet with the empty string as its name and the wallet.dat file in the root of the walletdir. This is supposed to be an unsupported configuration and there is no other way to achieve this (other than file copying), but the wallet loading code does not disallow loading such wallets. However `listwalletdir` does not currently list the default wallet if it is sqlite. This is confusing to users, so change `listwalletdir` to include these wallets.

  Additionally, the migration of the default wallet, and of any plain wallet files in the walletdir, produces a backup file in the walletdir itself. Since these backups are a BDB file, `listwalletdir` will detect them as being another wallet that we could open, but this is erroneous and could lead to confusion and potentially funds loss if both the backup and the migrated wallet are in use simultaneously. To reduce the likelihood of this issue, don't list these wallets in `listwalletdir`.

  ***

  Possibly we could have more stringent checks on loading to resolve these issues, but I'm concerned that that will just confuse users and gratuitously break things that already worked.

  Since the original intent was to disallow default wallets for sqlite/descriptors, a possible alternative would be to prevent people from loading such wallets and change migration to rename those wallets. However, given that this behavior with migrating default wallets has existed since default wallet migration was fixed, I think that making such a change would be confusing and break things for no good reason. Although perhaps we should still do the renaming.

  For the backups, we could also change loading to refuse to load any wallet named with `.bak` (or `.legacy.bak`) as such wallets can still be loaded by giving the path to them directly, which some users may do to "restore" the backup. However restricting what can be loaded based on filename seems a little heavyhanded. It wouldn't be funds loss though since the correct way to restore the backup is with `restorewallet`.

ACKs for top commit:
  fjahr:
    Code review ACK 6b2dcba076
  furszy:
    Code ACK  6b2dcba076
  glozow:
    ACK 6b2dcba076

Tree-SHA512: 0b033f6ed55830f8a054afea3fb2cf1fa82a94040053ebfaf123bda36c99f45d3f01a2aec4ed02fed9c61bb3d320b047ed892d7f6644b5a356a7bc5974b10cff
2024-08-12 15:58:07 +01:00
Ava Chow
6b2dcba076 wallet: List sqlite wallets with empty string name
Although it is not explicitly possible to create a default wallet with
descriptors, it is possible to migrate a default wallet and have it end
up being a default wallet with descriptors. These wallets should be
listed by ListDatabases so that it appears in wallet directory listings
to avoid user confusion.
2024-08-09 15:55:07 -04:00
Ava Chow
3ddbdd1815 wallet: Ignore .bak files when listing wallet files
Migration creates backup files in the wallet directory with .bak as the
extension. This pollutes the output of listwalletdir with backup files
that most users should not need to care about.
2024-08-09 15:55:07 -04:00
Hennadii Stepanov
a0473442d1
scripted-diff: Add __file__ argument to BitcoinTestFramework.init()
-BEGIN VERIFY SCRIPT-
sed -i -e 's/\s*().main\s*()/(__file__).main()/' $(git ls-files test/functional/*.py)
sed -i -e 's/def __init__(self)/def __init__(self, test_file)/' test/functional/test_framework/test_framework.py
-END VERIFY SCRIPT-
2024-07-16 22:06:47 +01:00
furszy
8ce3739edb test: verify wallet is still active post-migration failure
The migration process reloads the wallet after all failures.
This commit tests the behavior by trying to obtain a new address
after a decryption failure during migration.
2024-07-01 14:25:55 -04:00
Ava Chow
517e204bac Change MigrateLegacyToDescriptor to reopen wallet as BERKELEY_RO
When we reopen the wallet to do the migration, instead of opening using
BDB, open it using the BerkeleyRO implementation.
2024-06-26 16:38:56 -04:00
furszy
a951dba3a9
wallet: default wallet migration, modify inconvenient backup filename
On default legacy wallets, the backup filename starts with an "-" due
to the wallet name being empty. This is inconvenient for systems who
treat what follows the initial "-" character as flags.
2024-03-08 19:40:11 -03:00
Ryan Ofsky
a11585692e
Merge bitcoin/bitcoin#28868: wallet: Fix migration of wallets with txs that have both spendable and watchonly outputs
4da76ca247 test: Test migration of tx with both spendable and watchonly (Ava Chow)
c62a8d03a8 wallet: Keep txs that belong to both watchonly and migrated wallets (Ava Chow)
71cb28ea8c test: Make sure that migration test does not rescan on reloading (Ava Chow)
78ba0e6748 wallet: Reload the wallet if migration exited early (Ava Chow)
9332c7edda wallet: Write bestblock to watchonly and solvable wallets (Ava Chow)

Pull request description:

  A transaction does not necessarily have to belong to either the migrated wallet (with the private keys) and the watchonly wallet (with watchonly things), it could have multiple outputs with each isminetype. So we should be putting such transactions in one or the other wallet, but rather putting it in both.

  I've added a test for this behavior, however the test also revealed a few other issues. Notably, it revealed that `migratewallet` would have the watchonly wallet rescan from genesis when it is reloaded at the end of migration. This could be a cause for migration appearing to be very slow. This is resolved by first writing best block records to the watchonly and solvable wallets, as well as updating the test to make sure that rescans don't happen.

  The change to avoid rescans also found an issue where some of our early exits would result in unloading the wallet even though nothing happened. So there is also a commit to reload the wallet for such early exits.

ACKs for top commit:
  ryanofsky:
    Code review ACK 4da76ca247. This looks great. The code is actually cleaner than before, two bugs are fixed, and the test checking for rescanning is pretty clever and broadens test coverage.
  furszy:
    Code review ACK 4da76ca2

Tree-SHA512: 5fc210cff16ca6720d7b2d0616d7e3f295c974147854abc704cf99a3bfaad17572ada084859e7a1b1ca94da647ad130303219678f429b7995f85e040236db35c
2024-02-02 21:50:22 -05:00
Ava Chow
3904123da9 tests: Test that descriptors flag is set for migrated blank wallets 2024-02-01 18:13:02 -05:00
Ava Chow
4da76ca247 test: Test migration of tx with both spendable and watchonly 2024-02-01 14:09:05 -05:00
Ava Chow
71cb28ea8c test: Make sure that migration test does not rescan on reloading
We want to make sure that all of the transactions are being copied to
the watchonly and solvable wallets as expected. The automatic rescanning
behavior can cause us to pass a test by finding the transaction
on loading rather than having it be copied as expected.
2024-02-01 14:09:05 -05:00
Andrew Chow
c11c404281 tests: Test migration of blank wallets 2024-01-11 15:50:05 -05:00
furszy
016cc807f7
test: wallet migration, add coverage for tx extra data
Verifying that the 'replaced_by_txid' and 'replaces_txid'
tx data is preserved after migration, as well as the
extra tx comments.
2024-01-08 12:04:31 -03:00
Andrew Chow
406b71abcb wallet: Migrate entire address book entries 2023-12-05 13:35:55 -05:00
Sebastian Falbesoner
73a339abc3 test: refactor: support sending funds with outpoint result
This commit introduces a helper `create_outpoints` to execute the
`send` RPC and immediately return the target address outpoints as UTXO
dictionary in the common format, making the tests more readable and
avoiding unnecessary duplication.
2023-10-24 11:13:51 +02:00
Andrew Chow
4814e4063e test: Check tx metadata is migrated to watchonly 2023-10-19 18:06:44 -04:00
Andrew Chow
d616d30ea5 wallet: Reload watchonly and solvables wallets after migration
When migrating, create the watchonly and solvables wallets without a
context. Then unload and reload them after migration completes, as we do
for the actual wallet.

There is also additional handling for a failed reload.
2023-10-19 18:06:43 -04:00