Skip to content

Conversation

@mzumsande
Copy link
Contributor

@mzumsande mzumsande commented Dec 23, 2024

After AssumeUtxo background sync is completed in a ActivateBestChain() call, the GetRole() function called with BlockConnected() returns ChainstateRole::NORMAL instead of ChainstateRole::BACKGROUND for this chainstate.
This would make the wallet (which ignores BlockConnected notifications for the background chainstate) process it, change m_last_block_processed_height to the (ancient) snapshot height, and display an incorrect balance.

Fix this by caching the chainstate role before calling ActivateBestChainStep().
Also contains a test for this situation that fails on master.

Fixes #31546

@DrahtBot
Copy link
Contributor

DrahtBot commented Dec 23, 2024

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Code Coverage & Benchmarks

For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/31556.

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK fjahr, furszy, TheCharlatan, achow101

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #30909 (wallet, assumeutxo: Don't Assume m_chain_tx_count, Improve wallet RPC errors by fjahr)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

Copy link
Contributor

@fjahr fjahr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tACK ca0753160a8ebc113e08d62c7b6cbe8fa98455e6

Good catch, feel free to ignore my comments unless you have to retouch. I confirmed that the test fails on master and reviewed the code and surrounding behavior.

If AssumeUtxo background sync is completed in this
ActivateBestChain() call, the GetRole() function
returns "normal" instead of "background" for this chainstate.
This would make the wallet (which ignores BlockConnected
notifcation for the background chainstate) process it, change
m_last_block_processed_height, and display an incorrect
balance.
Use a third node for this, which doesn't get restarted like the second
node.
This test would fail without the previous commit.
@mzumsande mzumsande force-pushed the 202412_assumeutxo_wallet branch from ca07531 to bc43eca Compare December 26, 2024 17:12
@mzumsande
Copy link
Contributor Author

ca07531 to bc43eca:
Addressed feedback by @fjahr

@fjahr
Copy link
Contributor

fjahr commented Dec 27, 2024

re-ACK bc43eca

Copy link
Member

@furszy furszy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review ACK bc43eca

Copy link
Contributor

@sedited sedited left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm ACK bc43eca

Load the snapshot into the second, ensure it syncs to tip and completes
background validation when connected to the first.
"""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the docs be updated to mention the added node?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missed this, it could probably be done in a follow-up such as #30455

@achow101
Copy link
Member

ACK bc43eca

@achow101 achow101 merged commit df5c643 into bitcoin:master Dec 30, 2024
18 checks passed
@mzumsande mzumsande deleted the 202412_assumeutxo_wallet branch December 30, 2024 19:54
sedited added a commit to sedited/rust-bitcoinkernel that referenced this pull request Jan 17, 2025
…38671edce58

538671edce58 kernel: Add pure kernel bitcoin-chainstate
0f79e00c5b3e kernel: Add functions to get the block hash from a block
6f7a47f53b10 kernel: Add block index utility functions to C header
5af7950c744b kernel: Add function to read block undo data from disk to C header
b456fb6c0b34 kernel: Add functions to read block from disk to C header
b6c157fee16d kernel: Add function for copying  block data to C header
011cd3f59677 kernel: Add functions for the block validation state to C header
9532bfb81739 kernel: Add validation interface to C header
8dde5a04ebc8 kernel: Add interrupt function to C header
729d2d393972 kernel: Add import blocks function to C header
dfa7109e8f0a kernel: Add chainstate load options for in-memory dbs in C header
d012fe0147fc kernel: Add options for reindexing in C header
6d12d7868c17 kernel: Add block validation to C header
8ad7b67c6527 Kernel: Add chainstate loading to kernel C header
5d09bf543704 kernel: Add chainstate manager option for setting worker threads
9cea88cb6077 kernel: Add chainstate manager object to C header
c74f2c8a2340 kernel: Add notifications context option to C header
b90b7e07b803 kerenl: Add chain params context option to C header
438f55f06500 kernel: Add kernel library context object
870c37278035 kernel: Add logging to kernel library C header
7aed64b54dba kernel: Introduce initial kernel C header API
f9032a4abb74 Merge bitcoin/bitcoin#31242: wallet, desc spkm: Return SigningProvider only if we have the privkey
9dc4eedb670b Merge bitcoin/bitcoin#31673: doc: fix minor typos in comments
b30cc71e853c doc: fix typos
df8bf657450d Merge bitcoin/bitcoin#31483: kernel: Move kernel-related cache constants to kernel cache
335798c49637 Merge bitcoin/bitcoin#31397: p2p: track and use all potential peers for orphan resolution
98939ce7b744 Merge bitcoin/bitcoin#31655: refactor: Avoid UB in SHA3_256::Write
712cab3a8f8a Merge bitcoin/bitcoin#31061: refactor: Check translatable format strings at compile-time
2a92702bafca init: Use size_t consistently for cache sizes
65cde3621dbb kernel: Move default cache constants to caches
8826cae28549 kernel: Move non-kernel db cache size constants
e758b26b85da kernel: Move kernel-specific cache size options to kernel
d5e2c4a4097c fuzz: Add fuzz test for checked and saturating add and left shift
c03a2795a8e0 util: Add integer left shift helpers
fa3efb572909 refactor: Introduce struct to hold a runtime format string
fa6adb013440 lint: Remove unused and broken format string linter
fadc6b9bac82 refactor: Check translatable format strings at compile-time
fa1d5acb8d8e refactor: Use TranslateFn type consistently
e7c479495509 Merge bitcoin/bitcoin#31630: doc: Archive 28.1 release notes
7cd862aab94f Merge bitcoin/bitcoin#31646: test: avoid internet traffic
eeee6cf2ffb2 refactor: Delay translation of _() literals
fabeca3458b3 refactor: Avoid UB in SHA3_256::Write
fad4032b219e refactor: Drop unused UCharCast
2ed161c5ce64 test: avoid generating non-loopback traffic from p2p_dns_seeds.py
a5746dc559c2 test: avoid generating non-loopback traffic from feature_config_args.py
6b3f6eae70bb test: avoid generating non-loopback traffic from p2p_seednode.py
bb5f76ee013e doc: Archive 28.1 release notes
35bf426e0221 Merge bitcoin/bitcoin#28724: wallet: Cleanup accidental encryption keys in watchonly wallets
216840659780 Merge bitcoin/bitcoin#31608: doc: Clarify min macOS and Xcode version
2f6c7e7f6c05 Merge bitcoin/bitcoin#31612: ci: build msan's libc++ with _LIBCPP_ABI_BOUNDED_*
528354e213a9 Merge bitcoin/bitcoin#31616: init,log: Unify block index log line
4bedfb5c8338 Merge bitcoin/bitcoin#31623: tracing: Rename the `MIN` macro to `_TRACEPOINT_TEST_MIN` in log_raw_p2p_msgs
e5c268084ebb Merge bitcoin/bitcoin#31627: depends: Fix spacing issue
d695d1391718 Merge bitcoin/bitcoin#31611: doc: upgrade license to 2025.
37af8bfb34d6 Merge bitcoin/bitcoin#31549: fuzz: Abort if system time is called without mock time being set
54115d8de5c0 Merge bitcoin/bitcoin#31617: build, test: Build `db_tests.cpp` regardless of `USE_BDB`
0a77441158cd Merge bitcoin/bitcoin#31451: wallet: migration, avoid loading legacy wallet after failure when BDB isn't compiled
56725f882937 Merge bitcoin/bitcoin#31462: test: raise explicit error if any of the needed release binaries is missing
8a46286da667 depends: Fix spacing issue
e04be3731f49 init,log: Unify block index and chainstate loading log line
8bd5f8a38ce9 [refactor] init: Simplify coinsdb cache calculation
f93f0c93961b tracing: Rename the `MIN` macro to `_TRACEPOINT_TEST_MIN` in log_raw_p2p_msgs
66aa6a47bd8e Merge bitcoin/bitcoin#30391: BlockAssembler: return selected packages virtual size and fee
7c123c08ddce  miner: add package feerate vector to CBlockTemplate
fd2d96d9087b build, test: Build `db_tests.cpp` regardless of `USE_BDB`
fb37acd932b0 ci: build msan's libc++ with _LIBCPP_ABI_BOUNDED_*
1ea7e45a1f44 test: raise explicit error if any of the needed release binaries is missing
433412fd8478 Merge bitcoin/bitcoin#31596: doc: Clarify comments about endianness after #30526
c506f2cee7b8 Merge bitcoin/bitcoin#31581: test: have miner_tests use  Mining interface
a96b84cb1b76 fuzz: Abort when calling system time without setting mock time
ff21870e20b2 fuzz: Add SetMockTime() to necessary targets
41a2ce9b7d73 Merge bitcoin/bitcoin#31464: util: Add missing types in make_secure_unique
86d7135e36ef [p2p] only attempt 1p1c when both txns provided by the same peer
f7658d9b1475 [cleanup] remove p2p_inv from AddTxAnnouncement
063c1324c143 [functional test] getorphantxs reflects multiple announcers
0da693f7e129 [functional test] orphan handling with multiple announcers
b6ea4a9afe2d [p2p] try multiple peers for orphan resolution
1d2e1d709ce3 [refactor] move creation of unique_parents to helper function
c6893b0f0b7b [txdownload] remove unique_parents that we already have
163aaf285af9 [fuzz] orphanage multiple announcer functions
22b023b09da3 [unit test] multiple orphan announcers
96c1a822a274 [unit test] TxOrphanage EraseForBlock
04448ce32a3b [txorphanage] add GetTx so that orphan vin can be read
e810842acda6 [txorphanage] support multiple announcers
62a9ff187076 [refactor] change type of unique_parents to Txid
6951ddcefd9e [txrequest] GetCandidatePeers
6475849c4020 Merge bitcoin/bitcoin#31435: lint: Move assertion linter into lint runner
b537a2c02a99 doc: upgrade license to 2025.
49fc2258cf39 Merge bitcoin/bitcoin#31526: doc: Install `net/py-pyzmq` port on FreeBSD for `interface_zmq.py`
ac918c7cc0e9 Merge bitcoin/bitcoin#31552: depends: Update capnproto to 1.1.0
fa029a78780f doc: Clarify min macOS and Xcode version
a0f0c48ae20e Merge bitcoin/bitcoin#31584: txmempool: fix typos in comments
558783625ca7 Merge bitcoin/bitcoin#31586: doc: Update NetBSD Build Guide
3e936789b167 Merge bitcoin/bitcoin#31592: ci: Run functional tests in msan task
5af642bf48bb Merge bitcoin/bitcoin#31604: test: fix typo in mempool_ephemeral_dust
29bca9713d21 test: fix typo in mempool_ephemeral_dust
4036ee3f2bf5 Merge bitcoin/bitcoin#31542: test: Embed univalue json tests in binary
f6a6d912059c test: add check for getting SigningProvider for a CPubKey
62a95f5af9b9 test: refactor: move `CreateDescriptor` helper to wallet test util module
5db7d4d3d28b doc: Correct docstring describing max block tree db cache
6aa0e70ccbd5 Merge bitcoin/bitcoin#31524: refactor: Allow std::byte in Read(LE/BE)
3e0a992a3f0f doc: Clarify comments about endianness after #30526
604bf2ea37f8 Merge bitcoin/bitcoin#28121: include verbose "reject-details" field in testmempoolaccept response
04249682e381 test: use Mining interface in miner_tests
fa0411ee305f ci: Run functional tests in msan task
2bdaf52ed125 doc: Update NetBSD Build Guide
34e8ee23b83e txmempool: fix typos in comments
228aba2c4d9a Merge bitcoin/bitcoin#31555: descriptor: remove unreachable verification for `pkh`
9b9752217f2d Merge bitcoin/bitcoin#31570: test: descriptor: fix test for `MaxSatisfactionWeight`
87c9ebd88920 Merge bitcoin/bitcoin#31563: rpc: Extend scope of validation mutex in generateblock
df5c643f92d4 Merge bitcoin/bitcoin#31556: validation: Send correct notification during snapshot completion
fa3de038f744 Merge bitcoin/bitcoin#31537: qa: Limit `-maxconnections` in tests
ba0cb7d5a54f Merge bitcoin/bitcoin#31468: test: Avoid intermittent error in assert_equal(pruneheight_new, 248)
69e35f5c60ad Merge bitcoin/bitcoin#31403: test: Call generate RPCs through test framework only
17db84dbb8db Merge bitcoin/bitcoin#31251: test: report detailed msg during utf8 response decoding error
e6f14241f6d3 Merge bitcoin/bitcoin#31540: refactor: std::span compat fixes
a137b0bd6b21 Merge bitcoin/bitcoin#31215: rpc: increase the defaults for -rpcthreads and -rpcworkqueue
67bfe28995eb Merge bitcoin/bitcoin#31531: rpc: Add signet_challenge field to getblockchaininfo and getmininginfo
ad174c281758 Merge bitcoin/bitcoin#31497: Remove unused variable assignment
b29d68f942e3 test: descriptor: fix test for `MaxSatisfactionWeight`
9355578a7797 Merge bitcoin/bitcoin#31534: coins: warn on shutdown for big UTXO set flushes
f95fb793726b Merge bitcoin/bitcoin#28521: net, net_processing: additional and consistent disconnect logging
bc43ecaf6dc0 test: add functional test for balance after snapshot completion
226d03dd610d validation: Send correct notification during snapshot completion
fa63b8232f38 test: generateblocks called by multiple threads
fa62c8b1f04a rpc: Extend scope of validation mutex in generateblock
366ae00b779a descriptor: Assume `ParseScript` is not being called with a P2WPKH context
e36640859089 descriptor: remove unreachable verification for `pkh`
5709718b8301 coins: warn on shutdown for big UTXO set flushes
b0b8d96d93ea depends: Update capnproto to 1.1.0
fc7b21484703 Merge bitcoin/bitcoin#31529: guix: latest 2.31 glibc
273440d5c9dc Merge bitcoin/bitcoin#31535: doc: Install `py3-zmq` port on OpenBSD for `interface_zmq.py`
4cdf50c4ba81 Merge bitcoin/bitcoin#31544: cmake: Remove unused `BUILD_TESTING` variable from "dev-mode" preset
faf7eac364fb test: clang-format -i src/univalue/test/unitester.cpp
fafa9cc7a599 test: Embed univalue json tests in binary
fa044857caf7 test: Re-enable univalue test fail18.json
63b6b638aa5e build: Use character literals for generated headers to avoid narrowing
ecaa786cc103 rpc: add signet_challenge field to getblockchaininfo and getmininginfo
e196190a284f cmake: Remove unused `BUILD_TESTING` variable from "dev-mode" preset
bb57017b2945 Merge bitcoin/bitcoin#31521: fuzz: Fix misplaced SeedRand::ZEROS
5bbbc0d0eeb8 Merge bitcoin/bitcoin#31325: Make m_tip_block std::optional
d9d5bc2e7466 qa: Limit `-maxconnections` in tests
fa494a1d53f3 refactor: Specify const in std::span constructor, where needed
faaf4800aa75 Allow std::span in stream serialization
faa5391f7703 refactor: test: Return std::span from StringBytes
fa8622347535 refactor: Avoid passing span iterators when data pointers are expected
faae6fa5f614 refactor: Simplify SpanPopBack
facc4f120b06 refactor: Replace fwd-decl with proper include
fac3a782eaf3 refactor: Avoid needless, unsafe c-style cast
c1252b14d714 Merge bitcoin/bitcoin#31520: #31318 followups
be1a2e5dfbdf doc: Install `py3-zmq` port on OpenBSD for `interface_zmq.py`
fa0c473d4c82 Merge bitcoin/bitcoin#31196: Prune mining interface
ea53568a0685 Merge bitcoin/bitcoin#31393: refactor: Move GuessVerificationProgress into ChainstateManager
b8710201fbd0 guix: disable timezone tools & profiling in glibc
23b8a424fb06 guix: bump glibc 2.31 to 7b27c450c34563a28e634cccb399cd415e71ebfe
0a76c292ac8f doc: Install `net/py-pyzmq` port on FreeBSD for `interface_zmq.py`
fadd568931a2 fuzz: Fix misplaced SeedRand::ZEROS
fa83bec78ef3 refactor: Allow std::byte in Read(LE/BE)
4f06ae05ed6f refactor: fix typo in node/types.h
366fbf152c6c test: drop extraneous bracket in mining util
c991cea1a0c3 Remove processNewBlock() from mining interface
9a47852d88cf Remove getTransactionsUpdated() from mining interface
bfc4e029d41e Remove testBlockValidity() from mining interface
477b35746074 Merge bitcoin/bitcoin#31493: refactor: Use immediate lambda to work around GCC bug 117966
a60d5702fd5c Merge bitcoin/bitcoin#31486: fuzz: Abort when using global PRNG without re-seed
a95a8ba3a3f4 Merge bitcoin/bitcoin#31197: refactor: mining interface 30955 followups
cd3d9fa5ea87 Merge bitcoin/bitcoin#31318: Drop script_pub_key arg from createNewBlock
785486a97558 Merge bitcoin/bitcoin#31489: fuzz: Fix test_runner error reporting
1251a2364202 Merge bitcoin/bitcoin#31458: build: use `-mbig-obj` for Windows debug builds
d2136d32bb47 Merge bitcoin/bitcoin#31502: depends: Fix `CXXFLAGS` on NetBSD
58436d4af381 Merge bitcoin/bitcoin#31503: cmake: Link `bitcoin_consensus` as a library
38dcf0f98271 Merge bitcoin/bitcoin#31498: depends: Ignore prefix directory on OpenBSD
fae63bf13033 fuzz: Clarify that only SeedRandomStateForTest(SeedRand::ZEROS) is allowed
81cea5d4ee0e Ensure m_tip_block is never ZERO
e058544d0e83 Make m_tip_block an std::optional
f86678156a3d Check leaves size maximum in MerkleComputation
4d572882463b refactor: use CTransactionRef in submitSolution
2e81791d9072 Drop TransactionMerklePath default position arg
39d3b538e6a2 Rename merkle branch to path
fa18acb457e9 fuzz: Abort when using global PRNG without re-seed
fa9e0489f579 refactor: Use immediate lambda to work around GCC bug 117966
46e207d3296c cmake: Link `bitcoin_consensus` as a library
a10bb400e8cb depends: Fix CXXFLAGS on NetBSD
3353d4a5e9fc depends: Ignore prefix directory on OpenBSD
b9766c9977e5 Remove unused variable assignment
b042c4f0538c Merge bitcoin/bitcoin#31223: net, init: derive default onion port if a user specified a -port
e8f0e6efaf55 lint: output-only - Avoid repeated arrows, trim
facb4d010ca5 refactor: Move GuessVerificationProgress into ChainstateManager
2b9ff4a66d31 build: use `-mbig-obj` for mingw-w64 Debug builds
fa0e30b93aad fuzz: Fix test_runner error reporting
d73f37dda221 Merge bitcoin/bitcoin#31346: Set notifications m_tip_block in LoadChainTip()
fa7809aeab83 fuzz: Add missing SeedRandomStateForTest(SeedRand::ZEROS)
78f1bff7099b Merge bitcoin/bitcoin#31477: ci: Bump centos gcc to 12
84890e0291f0 Merge bitcoin/bitcoin#31484: depends: update capnproto to 1.0.2
d5ab5a47f0e6 Merge bitcoin/bitcoin#31452: wallet: Migrate non-HD keys to combo() descriptor
fa0998f0a028 test: Avoid intermittent error in assert_equal(pruneheight_new, 248)
fa9aacf614f6 lint: Move assertion linter into lint runner
beac62e541c8 Merge bitcoin/bitcoin#31480: refactor: Fix "modernize-use-starts-ends-with" clang-tidy warning
5cd9e95eea12 depends: update capnproto to 1.0.2
df27ee9f024f refactor: Fix "modernize-use-starts-ends-with" clang-tidy warning
435ad572a1af Merge bitcoin/bitcoin#31479: lint: Disable signature output in git log
ea9e64ff3cb0 Merge bitcoin/bitcoin#31461: depends: add `-g` to *BSD_debug flags
29ddee1796a6 Merge bitcoin/bitcoin#31478: docs: remove repetitive words
e2d3372e558d lint: Disable signature output in git log
fa47baa03bcf ci: Bump centos gcc
015aad8d6a69 docs: remove repetitive words
589ed1a8eafe wallet: migration, avoid loading wallet after failure when it wasn't loaded before
62bd61de110b Merge bitcoin/bitcoin#31450: guix: disable gcov in base-linux-gcc
676936845b1f Merge bitcoin/bitcoin#30933: test: Prove+document ConstevalFormatString/tinyformat parity
8ad2c9027420 Merge bitcoin/bitcoin#31343: test: avoid internet traffic in rpc_net.py
a582ee681c74 Merge bitcoin/bitcoin#29982: test: Fix intermittent issue in wallet_backwards_compatibility.py
fa397177acfa util: Add missing types in make_secure_unique
b6f0593f4330 doc: add release note about testmempoolaccept debug-message
f9cac6352371 test: cover testmempoolaccept debug-message in RBF test
b7ec69c25cf3 depends: add -g to *BSD_debug flags
37e49c2c7ca5 Merge bitcoin/bitcoin#31448: fuzz: add cstdlib to FuzzedDataProvider
62b2d23edbad wallet: Migrate non-HD keys to combo() descriptor
9039d8f1a1df Merge bitcoin/bitcoin#31374: wallet: fix crash during watch-only wallet migration
bb7e686341e4 fuzz: add cstdlib to FuzzedDataProvider
f6496a838828 guix: disable gcov in base-linux-gcc
35000e34cf33 Merge bitcoin/bitcoin#31433: test: #31212 follow up (spelling, refactor)
18d0cfb194cc Merge bitcoin/bitcoin#31306: ci: Update Clang in "tidy" job
c93bf0e6e2cd test: Add missing %c character test
76cca4aa6fcd test: Document non-parity between tinyformat and ConstevalFormatstring
533013cba206 test: Prove+document ConstevalFormatString/tinyformat parity
b81a4659950a refactor test: Profit from using namespace + using detail function
cdd207c0e480 test: add coverage for migrating standalone imported keys
297a876c9809 test: add coverage for migrating watch-only script
932cd1e92b6d wallet: fix crash during watch-only wallet migration
41d934c72df6 chore: Typo Overriden -> Overridden
c9fb38a590e3 refactor test: Cleaner combine_logs.py logic
22723c809a8a Merge bitcoin/bitcoin#31072: refactor: Clean up messy strformat and bilingual_str usages
b1f0f3c288af Merge bitcoin/bitcoin#31406: test: fix `test_invalid_tx_in_compactblock` in `p2p_compactblocks`
1a35447595d5 Merge bitcoin/bitcoin#31417: test: Avoid F541 (f-string without any placeholders)
eb2ebe6f30ac Merge bitcoin/bitcoin#31231: cmake: Fix `IF_CHECK_PASSED` option handling
5b283fa1477d Merge bitcoin/bitcoin#31431: util: use explicit cast in MultiIntBitSet::Fill()
37946c0aafee Set notifications m_tip_block in LoadChainTip()
fa6e599cf9fb test: Call generate through test framework only
2eccb8bc5e22 Merge bitcoin/bitcoin#31248: test: Rework wallet_migration.py to use previous releases
7239ddb7cec3 test: make sure node has all transactions
6d973f86f755 Merge bitcoin/bitcoin#31408: test: Avoid logging error when logging error
6a1e613e853d Merge bitcoin/bitcoin#31427: lint: bump MLC to v0.19.0
edb41e4814cc util: use explicit cast in MultiIntBitSet::Fill()
31e59d94c67b iwyu: Drop backported mapping
fe9bc5abef3d ci: Update Clang in "tidy" job
083770adbe7d Merge bitcoin/bitcoin#31414: test: orphan parent is re-requested from 2nd peer
f6afca46a1d7 lint: use clearer wording on error message
811a65d3c6b3 lint: bump MLC to v0.19.0
fae76393bdbf test: Avoid F541 (f-string without any placeholders)
e8cc790fe2a2 Merge bitcoin/bitcoin#30445: test: addrman: tried 3 times and never a success so `isTerrible=true`
f9650e18ea6e rbf: remove unecessary newline at end of error string
221c789e9169 rpc: include verbose reject-details field in testmempoolaccept response
0184d33b3d28 scripted-diff: Replace strprintf(Untranslated) with Untranslated(strprintf)
17372d788e6c Merge bitcoin/bitcoin#30906: refactor: prohibit direct flags access in CCoinsCacheEntry and remove invalid tests
006e4d1d5984 refactor: Use + instead of strformat to concatenate translated & untranslated strings
831d2bfcf941 refactor: Don't embed translated string in untranslated string.
058021969b54 refactor: Avoid concatenation of format strings
11f68cc81084 Merge bitcoin/bitcoin#31212: util: Improve documentation and negation of args
893ccea7e47d Merge bitcoin/bitcoin#31419: test: fix MIN macro redefinition
39950e148d80 Merge bitcoin/bitcoin#31295: refactor: Prepare compile-time check of bilingual format strings
00c1dbd26ddb test: fix MIN macro-redefinition
ae69fc37e4ff Merge