Currently `migratewallet` migrates the address book (i.e. labels and
purposes) for watchonly and solvable wallets only in RAM, but doesn't
persist them on disk. Fix this by adding another loop for both of the
special wallet types after which writes the corresponding NAME and
PURPOSE entries to the database in a single batch.
Github-Pull: #26761
Rebased-From: d5f4ae7fac
95ec9604a4 ci: Use `macos-ventura-xcode:14.1` image for "macOS native" task (Hennadii Stepanov)
50ad39d9d0 ci: Make `getopt` path architecture agnostic (Hennadii Stepanov)
ce2a072ba8 ci: Allow PIP_PACKAGES on centos (MacroFake)
644c0304f5 ci: Remove unused package (MacroFake)
Pull request description:
ACKs for top commit:
fanquake:
ACK 95ec9604a4 did the same for 23.x & in #26878.
Tree-SHA512: 086fbe2f2a39e210cc41076d42fb911abdd720a2824fcaaacfaf50345c90d23b9f9f8b0a06e4f85cced0a8fdf0e5f5a7a3a00a05edbc267574893975dfc7c061
There is no situation in which CNodeStateStats could be
missing for a legitimate reason - this can only happen if
there is a race condition between peer disconnection and
the getpeerinfo call, in which case the disconnected peer
doesn't need to be included in the response.
Github-Pull: bitcoin#26515
Rebased-From: 6fefd49
0662105e88 qt: Load PSBTs using istreambuf_iterator rather than istream_iterator (Andrew Chow)
Pull request description:
ACKs for top commit:
fanquake:
ACK 0662105e88
Tree-SHA512: 6a2ee4d2150bf3d90e95325966d4f73b05f8cb1a5af1db6a64c891880b9f3a0846d59eb6896fee80a63b05f2084bfadc64cf9a9029598c3b31ce104715a0ca81
istream_iterator eats whitespace charactesr which causes parsing
failures for PSBTs that contain the bytes corresponding to those
characters.
Github-Pull: bitcoin-core/gui#687
Rebased-From: bb5ea1d9a9
a9ea715835 doc: adjust release notes for 24.0.1 (fanquake)
c119b0a176 doc: generate manual pages for 24.0.1 final (fanquake)
1b19c894a2 build: bump version to 24.0.1 final (fanquake)
Pull request description:
Changes for 24.0.1.
At this stage, I don't think an rc is necessary here, and would just add another 5-x days delay to fixing these issues.
This will be accompanied by a pull request to master to add a note in the 24.0.md that already exists there. Similar to what was done with 0.19.0.1.
ACKs for top commit:
gruve-p:
ACK a9ea715835
instagibbs:
ACK a9ea715835
hebasto:
ACK a9ea715835, I have reviewed the changes and they look OK.
josibake:
ACK a9ea715835
w0xlt:
ACK a9ea715835
Tree-SHA512: 2e0d81ef91d947c9d55dcadcb6168fbb5251a5e613642c6250075add6a4f14f54cbb452934fa46aec035decb339e611fe721f5e9d9156e47a0341c3be26f5aa9
8b726bf556 test: Coin Selection, duplicated preset inputs selection (furszy)
9d73176d00 test: wallet, coverage for CoinsResult::Erase function (furszy)
195f0dfd0e wallet: bugfix, 'CoinsResult::Erase' is erasing only one output of the set (furszy)
e5d097b639 [test] Add p2p_tx_privacy.py (dergoegge)
c8426706de [net processing] Assume that TxRelay::m_tx_inventory_to_send is empty pre-verack (dergoegge)
e15b306017 [net processing] Ensure transaction announcements are only queued for fully connected peers (dergoegge)
95fded1069 wallet: Explicitly say migratewallet on encrypted wallets is unsupported (Andrew Chow)
d464b2af30 tests: Test for migrating encrypted wallets (Andrew Chow)
7a97a56ffb wallet: Avoid null pointer deref when cleaning up migratewallet (Andrew Chow)
Pull request description:
Backports remaining changes on the 24.0.1 milestone.
Currently backports:
* https://github.com/bitcoin/bitcoin/pull/26594
* https://github.com/bitcoin/bitcoin/pull/26569
* https://github.com/bitcoin/bitcoin/pull/26560
ACKs for top commit:
josibake:
ACK 8b726bf556
Tree-SHA512: db77ec1a63a7b6a4412750a0f4c0645681fc346a5df0a7cd38d5d27384e1d0fa95f3953af90042afe131ddbd4b6a6e009527095f13e9f58c0190cd378738a9e5
This exercises the bug inside CoinsResult::Erase that
ends up on (1) a wallet crash or (2) a created and
broadcasted tx that contains a reduced recipient's amount.
This is covered by making the wallet selects the preset
inputs twice during the coin selection process.
Making the wallet think that the selection process result covers
the entire tx target when it does not. It's actually creating
a tx that sends more coins than what inputs are covering for.
Which, combined with the SFFO option, makes the wallet
incorrectly reduce the recipient's amount by the difference
between the original target and the wrongly counted inputs.
Which means, a created and relayed tx sending less coins to
the destination than what the user inputted.
Github-Pull: #26560
Rebased-From: cf79384697
This commit documents our assumption about
TxRelay::m_tx_inventory_to_send being empty prior to version handshake
completion.
The added Assume acts as testing oracle for our fuzzing tests to
potentially detect if the assumption is violated.
Github-Pull: #26569
Rebased-From: ce63fca13e
Due to an oversight, we cannot currently migrate encrypted wallets,
regardless of whether they are unlocked. Migrating such wallets will
trigger an error, and result in the cleanup being run. This conveniently
allows us to check some parts of the cleanup code.
Github-Pull: #26594
Rebased-From: 88afc73ae0
If migratewallet fails, we do a cleanup which removes the watchonly and
solvables wallets if they were created. However, if they were not, their
pointers are nullptr and we don't check for that, which causes a
segfault during the cleanup. So check that they aren't nullptr before
cleaning them up.
Github-Pull: #26594
Rebased-From: 86ef7b3c7b
MacOS 13 sends a window focus change notification after the main
window has been destroyed but before the QTApplication has been
destroyed. This results in the menu bar receiving a notification
despite it no longer existing. The solution is to pass the main
window as context when subscribing to the notifications. Qt
automatically unsubscribes to notifications if the sender OR
context is destroyed.
Github-Pull: bitcoin-core/gui#680
Rebased-From: 8a5014cd8a
0ee1cfe94a doc: add 24.0 release notes (fanquake)
7b9d904c68 doc: Generate manual pages for 24.0 final (fanquake)
7c8e5e69d9 build: Bump version to 24.0 final (fanquake)
Pull request description:
Bump version to v24.0.
Regenerate manpages.
Pull in the release notes from [the devwiki](https://github.com/bitcoin-core/bitcoin-devwiki/wiki/24.0-Release-Notes-draft):
- I've added the credits section; please comment if a name is missing / needs amending.
- I've dropped any content-less sections.
- If there are items that should be in the release notes, and are still missing, please comment.
ACKs for top commit:
0xB10C:
ACK 0ee1cfe94a
Tree-SHA512: b2e9477f515709faf3991a5b4aa4b300cb24178e282bf544e0b86a2cb18e8d79f5f42e65addbf90d74862b816d333735c2793f1bcb50e1b0ed0974ea5821f909
da1e753eeb doc: Generate manual pages for 24.0rc4 (fanquake)
1e4db14df9 build: Bump version to 24.0rc4 (fanquake)
Pull request description:
Bump version.
Regen manpages.
Hopefully the final rc given no further bugs / major issues.
ACKs for top commit:
dergoegge:
ACK da1e753eeb
hebasto:
ACK da1e753eeb
Tree-SHA512: aa1e6c44f0d0acdc7348587fc085540e6ea87e09fe9ec5f5856a572f9bbb9ec89c1e16a8c767e26168b32802735108021dd08da3a21d7238296fd7e9c3377d30
42c74a0a4c rpc: doc: add missing option "bech32m" for `change_type` parameters (Sebastian Falbesoner)
6e4d87e696 tests: Test Taproot PSBT signing with keys in other descriptor (Andrew Chow)
0a5ea2aa84 tests: Use new wallets for each test in wallet_taproot.py (Andrew Chow)
2159676b6e psbt: Include output pubkey in additional pubkeys to sign (Andrew Chow)
754eefd21c sign: Fill in taproot pubkey info for all script path sigs (Andrew Chow)
bb1fabda30 doc: mention BIP86 in doc/bips.md (Sebastian Falbesoner)
Pull request description:
Currently backports:
* https://github.com/bitcoin/bitcoin/pull/26418
* https://github.com/bitcoin/bitcoin/pull/26443
* https://github.com/bitcoin/bitcoin/pull/26449
ACKs for top commit:
dergoegge:
ACK 42c74a0a4c
Tree-SHA512: e40f57b28cc4c06fc9dedebad6c9ab647fa0b98af1aef2d36874c6a05d39164c99fd763a2eb9ca162b7e276aa2e7d0f5934465ab4d7c1f5ba4a3162087e7089f
Test that the same keys included in other descriptors will still be able
to sign a PSBT that requires those keys.
Github-Pull: #26418
Rebased-From: 0de30ed509
To avoid a wallet potentially being able to sign a transaction using
keys from descriptors imported in previous tests, make new wallets for
each test case rather than sharing them.
Github-Pull: #26418
Rebased-From: 6efcdf6b7f
In addition to the pubkeys in hd_keypaths and tap_bip32_keypaths, also
see if the descriptor can produce a SigningProvider for the output
pubkey.
Also slightly refactors this area to reduce code duplication.
Github-Pull: #26418
Rebased-From: 8781a1b6bb
Taproot pubkey info was not being added for multi_a signing. The filling
of this info is moved into the common function CreateTaprootScriptSig so
that any signing of taproot scripts will include the pubkey info.
Github-Pull: #26418
Rebased-From: 323890d0d7
e049fd76f0 Bugfix: Check for readlink buffer overflow and handle gracefully (Luke Dashjr)
Pull request description:
Identical commit taken as-is from https://github.com/bitcoin/bitcoin/pull/25548 for backport
ACKs for top commit:
hebasto:
ACK e049fd76f0
Tree-SHA512: 37e63d570de898187c1bc8dd311c299c527adea51faa08aa6a3923bdb9390e3263902ace3d52a1cfc34ac2ba84e9358961574f886be1f64b5749a62e3c50ad57
The merge strategy on the remote may be different than the local one.
This may cause local merges to be different or fail completely. Fix this
by using the result of the remote merge.
Github-Pull: bitcoin/bitcoin#26202
Rebased-From: fad7281d78