aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-02-26Merge bitcoin/bitcoin#29464: [25.2] Final backports and changes for 25.2rc1v25.2rc1fanquake
9f13dc1ed3020d55ba79b1a62ca0db6b510357ab doc: Update release notes for 25.2rc1 (Ava Chow) a27662b16a626ade5f26613e9f5323edcd6e9105 doc: update manpages for 25.2rc1 (Ava Chow) 65c617178420d5904fd43399eb3c87e00aff524e build: Bump to 25.2rc1 (Ava Chow) cf0f43ee42f0bf8d345b109b0ba552faf7cb62e1 wallet: Fix use-after-free in WalletBatch::EraseRecords (MarcoFalke) 6acfc4324cc98a10e083e5f391435bbfde4d8f69 Use only Span{} constructor for byte-like types where possible (MarcoFalke) b40d10787b2dc161e236e50eb296bdf02f93933f util: Allow std::byte and char Span serialization (MarcoFalke) Pull request description: Backport: * #29176 * #27927 #29176 does not cleanly backport, and it also requires 27927 to work. Both are still fairly simple backports. Also does the rest of the version bump tasks for 25.2rc1. ACKs for top commit: fanquake: ACK 9f13dc1ed3020d55ba79b1a62ca0db6b510357ab Tree-SHA512: 9d9dbf415f8559410eba9a431b61a8fc94216898d2d1fd8398e1f7a22a04790faade810e65324c7a797456b33396c3a58f991e81319aaaa63d3ab441e5e20dbc
2024-02-21doc: Update release notes for 25.2rc1Ava Chow
2024-02-21doc: update manpages for 25.2rc1Ava Chow
2024-02-21build: Bump to 25.2rc1Ava Chow
2024-02-21wallet: Fix use-after-free in WalletBatch::EraseRecordsMarcoFalke
Github-Pull: bitcoin/bitcoin#29176 Rebased-From: faebf1df2afe207f5d2d4f73f50ac66824fe34bb
2024-02-21Use only Span{} constructor for byte-like types where possibleMarcoFalke
This removes bloat that is not needed. Github-Pull: bitcoin/bitcoin#27927 Rebased-From: fa38d862358b87219b12bf31236c52f28d9fc5d6
2024-02-21util: Allow std::byte and char Span serializationMarcoFalke
Github-Pull: bitcoin/bitcoin#27927 Rebased-From: fa257bc8312b91c2d281f48ca2500d9cba353cc5
2024-01-16Merge bitcoin/bitcoin#28768: [25.x] Backportsfanquake
53bbda51141e48730b95913c6ae8e1ea50578fbb doc: update release notes for 25.x (fanquake) 31e1e035be0598a43c573fe4cf49dea8351dc5f6 test: add regression test for the getrawtransaction segfault (Martin Zumsande) 041228d293a24c52631e011fc002349337d0645e rpc: fix getrawtransaction segfault (Martin Zumsande) b86285df1f949c44445165040dfb94a560c3858c gui: fix crash on selecting "Mask values" in transaction view (Sebastian Falbesoner) c21024fd86eb96e0a18c7c50acede2467ac70103 doc: add historical release notes for 25.1 (fanquake) Pull request description: Collecting backports for the 25.x branch. Currently: * https://github.com/bitcoin-core/gui/pull/774 * https://github.com/bitcoin/bitcoin/pull/29003 ACKs for top commit: stickies-v: ACK 53bbda51141e48730b95913c6ae8e1ea50578fbb Tree-SHA512: 9b1ba17cce9de70d20329372ba71225dd930718a1f7db84a7be764dcfbba01c5e466255e7b95433ab6d7559ee8aaa04cc99ee5d1512d91fcc0a8015f1aa4150a
2024-01-16doc: update release notes for 25.xfanquake
2024-01-15test: add regression test for the getrawtransaction segfaultMartin Zumsande
This fails on master without the previous commit. Github-Pull: #29003 Rebased-From: 9075a446461ccbc446d21af778aac50b604f39b3
2024-01-15rpc: fix getrawtransaction segfaultMartin Zumsande
The crash would happen when querying a mempool transaction with verbosity=2, while pruning. Github-Pull: #29003 Rebased-From: 494a926d05df44b60b3bc1145ad2a64acf96f61b
2023-12-11gui: fix crash on selecting "Mask values" in transaction viewSebastian Falbesoner
This commits fixes a crash bug that can be caused with the following steps: - change to the "Transactions" view - right-click on an arbitrary transaction -> "Show transaction details" - close the transaction detail window again - select "Settings" -> "Mask values" The problem is that the list of opened dialogs, tracked in the member variable `m_opened_dialogs`, is only ever appended with newly opened transaction detail dialog pointers, but never removed. This leads to dangling pointers in the list, and if the "Mask values" menu item is selected, a crash is caused in the course of trying to close the opened transaction detail dialogs (see `closeOpenedDialogs()` method). Fix this by removing the pointer from the list if the corresponding widget is destroyed. Github-Pull: https://github.com/bitcoin-core/gui/pull/774 Rebased-From: e26e665f9f64a962dd56053be817cc953e714847
2023-12-11doc: add historical release notes for 25.1fanquake
2023-10-16Merge bitcoin/bitcoin#28655: [25.1] Final Changesv25.1fanquake
a13670090dbf34daf2a378a9870817e19d4c2aa0 doc: update release notes for 25.1 (fanquake) e8d5c35e8094382537c3d1704b46f2554818a146 doc: update manual pages for 25.1 (fanquake) 9e00b73ee776c7bb902016121d28b9b5bea6537b build: bump version to 25.1 final (fanquake) Pull request description: Final changes for `v25.1`. PR for bitcoincore.org is here: https://github.com/bitcoin-core/bitcoincore.org/pull/991. No additional changes have been backported since rc1 (tagged 14 days ago), and no bugs or issues have been reported (test bins have been available for 9 days). ACKs for top commit: hebasto: ACK a13670090dbf34daf2a378a9870817e19d4c2aa0. TheCharlatan: lgtm ACK a13670090dbf34daf2a378a9870817e19d4c2aa0 Tree-SHA512: 037f937dd4d2a9de15ff15a80f35b6047b61ffc3d9a33e7d4a4fcbce6302569bbc516c6da5849211b34ebbe914c4edcdd182e2d1d43897d0dcd32834ce6f2574
2023-10-16doc: update release notes for 25.1fanquake
2023-10-16doc: update manual pages for 25.1fanquake
2023-10-16build: bump version to 25.1 finalfanquake
2023-10-04Merge bitcoin/bitcoin#28559: [25.1] Final changes for 25.1rc1v25.1rc1fanquake
10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d doc: add release notes for 25.1rc1 (fanquake) 71aed7aa31507220ca8b53a8d3c1b62a73a80c45 doc: update manual pages for 25.1rc1 (fanquake) 02f059c8199efbcbec47ff289f71ac30a5d7313d build: Bump version to 25.1rc1 (fanquake) dc1fcec0260db8fa95d74d46d2e1b302e0a66782 doc: add 25.0 release notes (fanquake) Pull request description: Final changes to tag a `25.1rc1`. Bumps version numbers, man pages, adds release notes etc. ACKs for top commit: dergoegge: ACK 10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d hebasto: ACK 10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d, I have reviewed the code and it looks OK. willcl-ark: ACK 10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d stickies-v: ACK 10f3f813b251d16c86d0b41bbdd7b7ab4a22e00d Tree-SHA512: 3e1c527dac06afb4c8e1e481055211f69aa0ed769ac242ed610d23d470bbc0c062227034d01876ba4a5fa836e953fb001e8b0d6bc026069d372d34b8a031fb25
2023-10-04doc: add release notes for 25.1rc1fanquake
2023-10-04doc: update manual pages for 25.1rc1fanquake
2023-10-04build: Bump version to 25.1rc1fanquake
2023-10-04doc: add 25.0 release notesfanquake
2023-10-04Merge bitcoin/bitcoin#28487: [25.1] Final backportsfanquake
45a5fcb165081f38ef90944dd31c5e3107aa03dc http: bugfix: track closed connection (stickies-v) 752a456fa839c796a37eb5db0011910f799748ee http: log connection instead of request count (stickies-v) ae86adabe44cbb8328d9290ad809803b86df8a07 http: refactor: use encapsulated HTTPRequestTracker (stickies-v) f31899d19a0333e87c3690b3d3c2b574abb357fa gui: macOS, make appMenuBar part of the main app window (furszy) 64ffa9423197c2dad2f5c5d812e1b17d6b9030f0 gui: macOS, do not process dock icon actions during shutdown (furszy) e270f3f8578d933e8f219b3381ac105185b3b707 depends: fix unusable memory_resource in macos qt build (fanquake) a6683945ca38752875e82dddccba075195ec61a6 build, macos: Fix `qt` package build with new Xcode 15 linker (Hennadii Stepanov) b3517cb1b54e040f3167abdd77095003e525b5d1 test: Test loading wallets with conflicts without a chain (Andrew Chow) d63478cb502de8345db2525f47abc1e9ef788733 wallet: Check last block and conflict height are valid in MarkConflicted (Andrew Chow) 5e51a9cc7246700612887e78d1cfafc351529a9b ci: Nuke Android APK task, Use credits for tsan (MarcoFalke) 910c36253e4ff5a21de47e082071ce903f74a2dd test: ensure old fee_estimate.dat not read on restart and flushed (ismaelsadeeq) 37764d3300669e64d9b8549a6a4ea78bfba6b1b5 tx fees, policy: read stale fee estimates with a regtest-only option (ismaelsadeeq) 16bb9161fabee70edac4c3e64b1ff4b47945cbdd tx fees, policy: do not read estimates of old fee_estimates.dat (ismaelsadeeq) c4dd5989b36e6da62dedb4e0bfceade75abb0ac5 tx fees, policy: periodically flush fee estimates to fee_estimates.dat (ismaelsadeeq) c36770cefd07c5263d366e7378ac9701f5679816 test: wallet, verify migration doesn't crash for an invalid script (furszy) 0d2a33e05c056fbc9834b532cb50621e622f14c9 wallet: disallow migration of invalid or not-watched scripts (furszy) 2c51a07c085b25246effa91a1f5f17dac560ff58 Do not use std::vector = {} to release memory (Pieter Wuille) Pull request description: Further backports for the `25.x` branch. Currently: * https://github.com/bitcoin/bitcoin/pull/27622 * https://github.com/bitcoin/bitcoin/pull/27834 * https://github.com/bitcoin/bitcoin/pull/28125 * https://github.com/bitcoin/bitcoin/pull/28452 * https://github.com/bitcoin/bitcoin/pull/28542 * https://github.com/bitcoin/bitcoin/pull/28543 * https://github.com/bitcoin/bitcoin/pull/28551 * https://github.com/bitcoin/bitcoin/pull/28571 * https://github.com/bitcoin-core/gui/pull/751 ACKs for top commit: hebasto: re-ACK 45a5fcb165081f38ef90944dd31c5e3107aa03dc, only #28551 has been backported with since my recent [review](https://github.com/bitcoin/bitcoin/pull/28487#pullrequestreview-1655584132). dergoegge: reACK 45a5fcb165081f38ef90944dd31c5e3107aa03dc willcl-ark: reACK 45a5fcb165081f38ef90944dd31c5e3107aa03dc Tree-SHA512: 0f5807aa364b7c2a2039fef11d5cd5e168372c3bf5b0e941350fcd92e7db4a1662801b97bb4f68e29788c77d24bbf97385a483c4501ca72d93fa25327d5694fa
2023-10-04http: bugfix: track closed connectionstickies-v
It is possible that the client disconnects before the request is handled. In those cases, evhttp_request_set_on_complete_cb is never called, which means that on shutdown the server we'll keep waiting endlessly. By adding evhttp_connection_set_closecb, libevent automatically cleans up those dead connections at latest when we shutdown, and depending on the libevent version already at the moment of remote client disconnect. In both cases, the bug is fixed. Github-Pull: #28551 Rebased-From: 68f23f57d77bc172ed39ecdd4d2d5cd5e13cf483
2023-10-04http: log connection instead of request countstickies-v
There is no significant benefit in logging the request count instead of the connection count. Reduces amount of code and computational complexity. Github-Pull: #28551 Rebased-From: 084d0372311e658a486622f720d2b827d8416591
2023-10-04http: refactor: use encapsulated HTTPRequestTrackerstickies-v
Introduces and uses a HTTPRequestTracker class to keep track of how many HTTP requests are currently active, so we don't stop the server before they're all handled. This has two purposes: 1. In a next commit, allows us to untrack all requests associated with a connection without running into lifetime issues of the connection living longer than the request (see https://github.com/bitcoin/bitcoin/pull/27909#discussion_r1265614783) 2. Improve encapsulation by making the mutex and cv internal members, and exposing just the WaitUntilEmpty() method that can be safely used. Github-Pull: #28551 Rebased-From: 41f9027813f849a9fd6a1479bbb74b9037990c3c
2023-10-03gui: macOS, make appMenuBar part of the main app windowfurszy
By moving the appMenuBar destruction responsibility to the QT framework, we ensure the disconnection of the submenus signals prior to the destruction of the main app window. The standalone menu bar may have served a purpose in earlier versions when it didn't contain actions that directly open specific screens within the main application window. However, at present, all the actions within the appMenuBar lead to the opening of screens within the main app window. So, the absence of a main app window makes these actions essentially pointless. Github-Pull: gui#751 Rebased-From: bae209e3879fa099302d3b211362c49bbbfbdd14
2023-10-03gui: macOS, do not process dock icon actions during shutdownfurszy
As the 'QMenuBar' is created without a parent window in MacOS, the app crashes when the user presses the shutdown button and, right after it, triggers any action in the menu bar. This happens because the QMenuBar is manually deleted in the BitcoinGUI destructor but the events attached to it children actions are not disconnected, so QActions events such us the 'QMenu::aboutToShow' could try to access null pointers. Instead of guarding every single QAction pointer inside the QMenu::aboutToShow slot, or manually disconnecting all registered events in the destructor, we can check if a shutdown was requested and discard the event. The 'node' field is a ref whose memory is held by the main application class, so it is safe to use here. Events are disconnected prior destructing the main application object. Furthermore, the 'MacDockIconHandler::dockIconClicked' signal can make the app crash during shutdown for the very same reason. The 'show()' call triggers the 'QApplication::focusWindowChanged' event, which is connected to the 'minimize_action' QAction, which is also part of the app menu bar, which could no longer exist. Github-Pull: gui#751 Rebased-From: e14cc8fc69cb3e3a98076fbb23a94eba7873368a
2023-10-03depends: fix unusable memory_resource in macos qt buildfanquake
See https://codereview.qt-project.org/c/qt/qtbase/+/482392. Github-Pull: #28571 Rebased-From: 848eec09363d1ba8198376eb9654b1a69e3541aa
2023-10-03build, macos: Fix `qt` package build with new Xcode 15 linkerHennadii Stepanov
Github-Pull: #28543 Rebased-From: 79ef528511f0cbbe0a7097ef031f2964aaccfe5c
2023-10-02test: Test loading wallets with conflicts without a chainAndrew Chow
Loading a wallet with conflicts without a chain (e.g. wallet tool and migration) would previously result in an assertion due to -1 being both a valid number of conflict confirmations, and the indicator that that member has not been set yet. Github-Pull: #28542 Rebased-From: 782701ce7d31919dba2241ee43b582d8ae5a2541
2023-10-02wallet: Check last block and conflict height are valid in MarkConflictedAndrew Chow
MarkConflicted calculates conflict confirmations incorrectly when both the last block processed height and the conflicting height are negative (i.e. uninitialized). If either are negative, we should not be marking conflicts and should exit early. Github-Pull: #28542 Rebased-From: 4660fc82a1f5cf6eb6404d5268beef5919581661
2023-10-02ci: Nuke Android APK task, Use credits for tsanMarcoFalke
Github-Pull: #27834 Rebased-From: fa22538e481fa2c4f0b5d6f91166335e60b67fe9
2023-10-02test: ensure old fee_estimate.dat not read on restart and flushedismaelsadeeq
This commit adds tests to ensure that old fee_estimates.dat files are not read and that fee_estimates are periodically flushed to the fee_estimates.dat file. Additionaly it tests the -regtestonly option -acceptstalefeeestimates. Github-Pull: #27622 Rebased-From: d2b39e09bc6a5982fc5cf4b538b7fdb0e3cae576
2023-10-02tx fees, policy: read stale fee estimates with a regtest-only optionismaelsadeeq
If -acceptstalefeeestimates option is passed stale fee estimates can now be read when operating in regtest environments. Additionally, this commit updates all declarations of the CBlockPolicyEstimator class to include a the second constructor variable. Github-Pull: #27622 Rebased-From: cf219f29f3c5b41070eaab9a549a476f01990f3a
2023-10-02tx fees, policy: do not read estimates of old fee_estimates.datismaelsadeeq
Old fee estimates could cause transactions to become stuck in the mempool. This commit prevents the node from using stale estimates from an old file. Github-Pull: #27622 Rebased-From: 3eb241a141defa564c94cb95c5bbaf4c5bd9682e
2023-10-02tx fees, policy: periodically flush fee estimates to fee_estimates.datismaelsadeeq
This reduces chances of having old estimates in fee_estimates.dat. Github-Pull: #27622 Rebased-From: 5b886f2b436eaa8c2b7de58dc4644dc6223040da
2023-10-02test: wallet, verify migration doesn't crash for an invalid scriptfurszy
The migration process must skip any invalid script inside the legacy spkm and all the addressbook records linked to them. These scripts are not being watched by the current wallet, nor should be watched by the migrated one. IsMine() returns ISMINE_NO for them. Github-Pull: #28125 Rebased-From: 8e7e3e614955e60d3bf9e9a481ef8916bf9e22d9
2023-10-02wallet: disallow migration of invalid or not-watched scriptsfurszy
The legacy wallet allowed to import any raw script, without checking if it was valid or not. Appending it to the watch-only set. This causes a crash in the migration process because we are only expecting to find valid scripts inside the legacy spkm. These stored scripts internally map to `ISMINE_NO` (same as if they weren't stored at all..). So we need to check for these special case, and take into account that the legacy spkm could be storing invalid not watched scripts. Which, in code words, means IsMineInner() returning IsMineResult::INVALID for them. Github-Pull: #28125 Rebased-From: 1de8a2372ab39386e689b27d15c4d029be239319
2023-10-02Do not use std::vector = {} to release memoryPieter Wuille
Github-Pull: #28452 Rebased-From: 3fcd7fc7ff563bdc0e2bba66b4cbe72d898c876e
2023-10-02Merge bitcoin/bitcoin#28534: [25.x] qt: 25.1rc1 translations updatefanquake
88b525f93adc713dc69a6af94f3b9fd4474595d4 qt: 25.1rc1 translations update (Hennadii Stepanov) Pull request description: This PR pulls the recent translations from the [Transifex.com](https://www.transifex.com/bitcoin/bitcoin) using the [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) tool. According to our [Release Process docs](https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md#before-every-release-candidate), it is supposed to be merged before `v25.1rc1` tagging. Changes in "Chinese (China) (zh_CN)" translation were manually discarded as they have too many removals (it looks like a vandalism). ACKs for top commit: stickies-v: re-ACK 88b525f93adc713dc69a6af94f3b9fd4474595d4 jarolrod: ACK 88b525f93adc713dc69a6af94f3b9fd4474595d4 Tree-SHA512: 007d3e00f92d2450f99d1a84b53dc929fd80b7ebb7939271b67969bf99bb3b0ae7426428f6c63f1dbdfa88b90cb237e7614f7b2239f9773b84424b544bf106af
2023-09-28qt: 25.1rc1 translations updateHennadii Stepanov
2023-09-06Merge bitcoin/bitcoin#28047: [25.x] Further backports for 25.1fanquake
494f1afa5a6eab4f243b19ab1691cd231a855b34 depends: xcb-proto 1.15.2 (fanquake) 513ca0a71173691fb030973612189ac6d064aedd test: wallet, add coverage for watch-only raw sh script migration (furszy) 6d5a510dcdbed7b53f73b8422cea331dd6e9589e descriptor: InferScript, do not return top-level only func as sub descriptor (furszy) 37d9cc657cf5b8126a0faef5237bc57e7453abb8 test: wallet, add coverage for addressbook migration (furszy) 4b16650c10b028485ece7b438b89236a52322b89 wallet: migration bugfix, persist empty labels (furszy) 59b06b696a2fd730ff73bb45e4d1161517bd4562 wallet: migration bugfix, clone 'send' record label to all wallets (furszy) Pull request description: Currently backports: * #28038 * #28067 2nd & 3rd commits. * #28097 ACKs for top commit: stickies-v: ACK 494f1afa5a6eab4f243b19ab1691cd231a855b34 Tree-SHA512: cea134cfa72950d8428191adce79c0881302ca54488f64d3d4a5f9070bb2445d8074e58fa31a482481c4eabb74c852a025f53597540fc646dc20f33b21cf0a06
2023-07-21depends: xcb-proto 1.15.2fanquake
Resolves build failures under Python 3.12, i.e building on rawhide: ```bash make[3]: Nothing to be done for 'install-exec-am'. /usr/bin/mkdir -p '/bitcoin/depends/work/staging/aarch64-unknown-linux-gnu/xcb_proto/1.14.1-4a91ac9dc41/bitcoin/depends/aarch64-unknown-linux-gnu/lib/python3.12/site-packages/xcbgen' /usr/bin/install -c -m 644 __init__.py error.py expr.py align.py matcher.py state.py xtypes.py '/bitcoin/depends/work/staging/aarch64-unknown-linux-gnu/xcb_proto/1.14.1-4a91ac9dc41/bitcoin/depends/aarch64-unknown-linux-gnu/lib/python3.12/site-packages/xcbgen' Traceback (most recent call last): File "<string>", line 2, in <module> ModuleNotFoundError: No module named 'imp' make[3]: *** [Makefile:271: install-pkgpythonPYTHON] Error 1 ``` `imp` was removed in 3.12: https://docs.python.org/3/library/imp.html. Github-Pull: #28097 Rebased-From: 7cb88c8b46723d306b96953a6a60c90a4ab211e3
2023-07-21test: wallet, add coverage for watch-only raw sh script migrationfurszy
Github-Pull: #28067 Rebased-From: dd9633b516d6936ac4e23a40f9b0bea120117d35
2023-07-21descriptor: InferScript, do not return top-level only func as sub descriptorfurszy
e.g. sh(addr(ADDR)) or sh(raw(HEX)) are invalid descriptors. Making sh and wsh top level functions to return addr/raw descriptors when the subscript inference fails. Github-Pull: #28067 Rebased-From: cc781a21800a6ce13875feefd0cb14ab0a84524c
2023-07-07test: wallet, add coverage for addressbook migrationfurszy
Github-Pull: #28038 Rebased-From: 7ecc29a0b7a23d8f5d3c1e6a0dad29b3ad839eb9
2023-07-07wallet: migration bugfix, persist empty labelsfurszy
addressbook records with no associated label could be treated as change. And we don't want that for external addresses. Github-Pull: #28038 Rebased-From: a277f8357ad8b0eb26f33fc36f919d868c06847b
2023-07-07wallet: migration bugfix, clone 'send' record label to all walletsfurszy
Github-Pull: #28038 Rebased-From: 1b64f6498c394a143df196172a14204fe3b8a744
2023-07-04Merge bitcoin/bitcoin#27752: [25.x] Parallel compact block downloadsfanquake
b8ad3220a9068f10c2b3b14b40f211372aeece31 Unconditionally return when compact block status == READ_STATUS_FAILED (Greg Sanders) cdd3de08e301ec309c179796bedfa2be29042128 Add tests for parallel compact block downloads (Greg Sanders) e66a5cbb56db3dffc119e110472ab1176ea3fe99 Support up to 3 parallel compact block txn fetchings (Greg Sanders) d1a93f5d41f7385af28cee3863976fd75f27415b Only request full blocks from the peer we thought had the block in-flight (Greg Sanders) 38e3af9fad1eb8ef7d6a9d812ded412668b650e3 Convert mapBlocksInFlight to a multimap (Greg Sanders) a45159b8e2a198219d7c46baeb647ff5d18436bf Remove nBlocksInFlight (Greg Sanders) 722361e129342078376b6d30b9d80de17ca7ddfb alias BlockDownloadMap for mapBlocksInFlight (Greg Sanders) Pull request description: Backports: * https://github.com/bitcoin/bitcoin/pull/27626 * https://github.com/bitcoin/bitcoin/pull/27743 ACKs for top commit: instagibbs: utACK https://github.com/bitcoin/bitcoin/pull/27752/commits/b8ad3220a9068f10c2b3b14b40f211372aeece31 ajtowns: ACK b8ad3220a9068f10c2b3b14b40f211372aeece31 ; confirmed patches are clean cherry-picks from master, and already tested patches prior to 25.0 release Tree-SHA512: 438901496a5ed927662e62f936e3d1e7ffb727cb235869854983e8e29a68e144eb3bff307d9fc3ae785fb276b67a216b1cce397689252ca49c5d761efc1380ac