wallet: crash fix, handle non-writable db directories#34176
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code Coverage & BenchmarksFor details see: https://corecheck.dev/bitcoin/bitcoin/pulls/34176. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please copy-paste ConflictsReviewers, this pull request conflicts with the following ones:
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. |
68a4677 to
16b82f1
Compare
rkrux
left a comment
There was a problem hiding this comment.
Combining the individual suggestions, the full diff:
diff --git a/test/functional/wallet_createwallet.py b/test/functional/wallet_createwallet.py
index 3bd8e6a310..f0b34d685d 100755
--- a/test/functional/wallet_createwallet.py
+++ b/test/functional/wallet_createwallet.py
@@ -33,21 +33,23 @@ class CreateWalletTest(BitcoinTestFramework):
wallet_name = "bad_permissions"
dir_path = node.wallets_path / wallet_name
dir_path.mkdir(parents=True)
- os.chmod(dir_path, stat.S_IREAD | stat.S_IEXEC)
+ original_dir_perms = dir_path.stat().st_mode
+ os.chmod(dir_path, original_dir_perms & ~(stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH))
try:
- (dir_path / f".tmp_{random.randrange(1 << 32)}").touch() # Verify the directory is actually non-writable
- self.log.warn("Skipping non-writable directory test: unable to enforce read-only permissions")
- return
+ if (dir_path / f".tmp_{random.randrange(1 << 32)}").touch(): # Verify the directory is actually non-writable
+ self.log.warning("Skipping non-writable directory test: unable to enforce read-only permissions")
+ return
+ assert_raises_rpc_error(-4, f"SQLiteDatabase: Failed to open database in directory '{str(dir_path)}': directory is not writable", node.createwallet, wallet_name=wallet_name, descriptors=True)
except PermissionError:
pass
- assert_raises_rpc_error(-4, f"SQLiteDatabase: Failed to open database in directory '{str(dir_path)}': directory is not writable", node.createwallet, wallet_name=wallet_name, descriptors=True)
- dir_path.chmod(dir_path.stat().st_mode | stat.S_IWRITE)
+ finally:
+ dir_path.chmod(original_dir_perms)
c919a62 to
4ad08fc
Compare
|
Thanks for the review @rkrux! |
4ad08fc to
0a9ddd3
Compare
|
Hmm. Nothing against better reporting when something failed, but the changes necessary to do that here seem a bit excessive for the pay-off? It doesn't seem like this change would have made resolving #34163 trivial? Didn't test, but would |
It turned out not to help with #34163, but it is a general improvement to reporting read-only permission issues. Which we currently don't do properly. Can take #34163 as the starting point that led to uncover other issues. Something I didn’t mention in the PR description is that this also fixes opening a non-writable wallet directory, which is actually more important than issues during creation. We currently open the wallet even when the directory is read-only, and then crash on any subsequent write because we cannot write to the Also, do you really think that labeling these changes as "excessive" is correct?
|
|
@stickies-v done. Run this simple test on master: furszy@85fa4e2 |
651eb90 to
66ebb96
Compare
66ebb96 to
2ef6add
Compare
It's not a big diff, but adding helper functions to improve diagnostic messages for a rare issue that is reasonably straightforward for the user to diagnose felt like perhaps not something we should have in our codebase, hence why I used "excessive" (in a relative way).
This seems like a much better rationale to me for this PR. Concept ACK. Approach-wise, I'm confused why the |
|
ACK 2ef6add Tests passed |
|
Concept ACK 2ef6add, will finish review. |
Add `IsDirWritable` helper in util/fs_helpers to test whether a directory can be written to by creating a temporary file. Use this check when opening a SQLite database to fail early with a clear error if the database directory is not writable, preventing obscure SQLite errors. Before: creating a wallet would throw a generic error: "SQLiteDatabase: Failed to open database: unable to open database file" After: creating a wallet throws: "SQLiteDatabase: Failed to open database in directory <dir_path>: directory is not writable" Github-Pull: bitcoin#34176 Rebased-From: 350840e
Github-Pull: bitcoin#34176 Rebased-From: 504e214
Previously, wallets in non-writable directories were loaded, leading to crashes on any subsequent write. Github-Pull: bitcoin#34176 Rebased-From: 2ef6add
|
🚧 At least one of the CI tasks failed. HintsTry to run the tests locally, according to the documentation. However, a CI failure may still
Leave a comment here, if you need help tracking down a confusing failure. |
d9ef1c5 to
5272012
Compare
|
Small push to fix the IWYU CI job. Ready to go. |
…lude.h> Github-Pull: bitcoin#34176 Rebased-From: f71d876
|
re-ACK 5272012 |
1) For wallet load, this fixes a crash. We currently allow loading wallets located on non-writable directories. This is problematic because the node crashes on any subsequent write. E.g. generating a block is enough to trigger it. 2) For wallet creation, this improves the returned error msg. Before: creating a wallet would return a generic error: "SQLiteDatabase: Failed to open database: unable to open database file" After: creating a wallet returns: "SQLiteDatabase: Failed to open database in directory <dir_path>: directory is not writable"
Previously, wallets in non-writable directories were loaded, leading to crashes on any subsequent write.
5272012 to
08925d5
Compare
|
rebased, conflicts solved. Ready to go. |
|
re-ACK 08925d5 git range-diff 5272012...08925d5 |
|
ACK 08925d5 |
de925455c80 Merge bitcoin/bitcoin#35141: fuzz: apply node context reset pattern to p2p_handshake
9f7b08c61ca Merge bitcoin/bitcoin#35334: test: Allow --usecli in more tests
b9f0040caf4 Merge bitcoin/bitcoin#34614: ci: Put space and non-ASCII char in scratch dir
f28cd7587b0 Merge bitcoin/bitcoin#35348: ci: switch to GitHub cache for all runners
59918de329a Merge bitcoin/bitcoin#34801: ci: Enable pipefail in 03_test_script.sh
e4f033789cc Merge bitcoin/bitcoin#35324: test: Document rare failure in test_inv_block better
033a56ccb2f Merge bitcoin/bitcoin#34342: cli: Replace libevent usage with simple http client
c03107acf50 ci: switch to GitHub cache for all runners
908cc9d30b9 Merge bitcoin/bitcoin#35344: kernel: improve BITCOINKERNEL_WARN_UNUSED_RESULT usage
e91f8713ac0 Merge bitcoin/bitcoin#35349: ci: Fix `path` input for vcpkg downloads cache
faf02674b36 refactor: Set TestNode.cli only after RPC is connected
fae376cafb0 refactor: Inline get_rpc_proxy
fa00c7c7a41 test: Allow rpc_bind.py --usecli
fa8f25118c0 refactor: Use create_new_rpc_connection in wallet_multiwallet.py
fa3ae6c7d3c test: Allow feature_shutdown.py --usecli
fa2a3683d51 test: Allow mining_getblocktemplate_longpoll.py --usecli
735b1cf4311 Merge bitcoin/bitcoin#34806: refactor: logging: Various API improvements
a56b4ead414 Merge bitcoin/bitcoin#35017: mempool: remove all subsequent tx in pkg on failure
00e9df90c85 Merge bitcoin/bitcoin#35333: qa: use NORMAL_GBT_REQUEST_PARAMS consistently in functional tests
37d7ce47c5d Merge bitcoin/bitcoin#35350: test: suppress ECONNABORTED in wait_for_rpc_connection on Windows
18c1cc65e94 kernel: improve BITCOINKERNEL_WARN_UNUSED_RESULT usage
7209eb77902 test: suppress ECONNABORTED in wait_for_rpc_connection on Windows
0553ce5ddb3 Merge bitcoin/bitcoin#35316: musig: Reject empty pubkey list in GetMuSig2KeyAggCache
e4f1e43103c ci: Fix `path` input for vcpkg downloads cache
fa99a3ccace ci: Enable pipefail in 03_test_script.sh
d61053d97be build: Drop libevent from bitcoin-cli link libraries
798d051c800 cli: Remove libevent usage
ca5483a6628 qa: use NORMAL_GBT_REQUEST_PARAMS consistently
bd0942bbd98 Merge bitcoin/bitcoin#34887: fuzz: target CDBWrapper
29400537610 Merge bitcoin/bitcoin#33223: coinselection: Tiebreak SRD eviction by weight
5ccb698f53a Merge bitcoin-core/gui#936: Remove opt-in RBF
211e1053bfd Merge bitcoin/bitcoin#32220: cmake: Get rid of undocumented `BITCOIN_GENBUILD_NO_GIT` environment variable
ecf20317cb5 Merge bitcoin/bitcoin#35270: doc: Document minimum versions for Xcode CLT and MSVC
8ee5622455c Merge bitcoin/bitcoin#35338: qa: regenerate hardcoded regtest chain for kernel lib unit tests
c6dbf3158b4 Merge bitcoin/bitcoin#35304: kernel: doc: document wipe lifecycle and best entry nullability
98f706c698a qa: regenerate hardcoded regtest chain for kernel lib unit tests
ac9aa71b7f9 mempool: remove all subsequent tx in pkg on failure
b63ef20d545 test: add fuzz harness for CDBWrapper
32169c3855f dbwrapper: accept optional testing leveldb::Env in DBParams
8d390c93fc5 dbwrapper: make max_file_size a configurable DBParams field
376e7ef07cf util: Expose IOErrorIsPermanent in sock header
b796bf44f33 Merge bitcoin/bitcoin#35228: wallet: use `outpoint` when estimating input size
3158b890e17 Merge bitcoin/bitcoin#33765: doc: update interface, --stdin flag, `signtx` (#31005)
21edcc47e23 Merge bitcoin/bitcoin#35328: test: restore assertion that tx contains exactly 2500 sigops
5d562430de9 netbase: Add timeout parameter to ConnectDirectly
fa37c6a529f test: [move-only] Extract create_new_rpc_connection
a988ac592fb cli: Add HTTPResponseHeaders class for parsing response headers
ae73b69b527 test: restore assertion that tx contains exactly 2500 sigops
a7df1bd7ca2 Merge bitcoin/bitcoin#34537: crypto: fix incorrect variable names in SHA-256 ARM intrinsics
5570b86fa7f Merge bitcoin/bitcoin#33160: bench: Add more realistic Coin Selection Bench
239424064b2 Merge bitcoin/bitcoin#35189: kernel: document validation state outputs as overwritten in-place
0358c26d427 kernel: document overwritten validation state outputs
489da5df60f Merge bitcoin/bitcoin#33856: kernel: Refactor process_block_header to return btck_BlockValidationState
fa890988889 test: Document rare failure in test_inv_block better
ce2044a91dd Merge bitcoin/bitcoin#33362: Run feature_bind_port_(discover|externalip).py in CI
2284288e9a7 Merge bitcoin/bitcoin#35279: psbt, test: remove address type restrictions in test
278b9e39df2 Merge bitcoin/bitcoin#34934: fuzz: exercise ForNode/ForEachNode callbacks in connman fuzz harness
88d9bc5aa4f kernel: Return btck_BlockValidationState from process_block_header API
ed15e14b636 Merge bitcoin/bitcoin#35193: test: avoid non-loopback network traffic from node_init_tests/init_test
4f348c2d730 Merge bitcoin/bitcoin#28802: ArgsManager: support command-specific options
c7056ff03f6 Merge bitcoin/bitcoin#34893: psbt: preserve proprietary fields when combining PSBTs
8ce84321cea musig: Reject empty pubkey list in GetMuSig2KeyAggCache
b2a3ca3df90 Merge bitcoin/bitcoin#35117: i2p: clean up SESSION CREATE error logging
7802e578c3f Merge bitcoin/bitcoin#34860: mining: always pad scriptSig at low heights, drop include_dummy_extranonce
da769855d0c test: add PSBT proprietary merge regression coverage
3f5b3c7a801 psbt: preserve proprietary fields when combining PSBTs
6189335f6bf kernel: doc: document wipe lifecycle and best entry nullability
ed1795aa172 Merge bitcoin/bitcoin#35285: bench: add benchmark for GetMappedAS()
379b9fbf036 Merge bitcoin/bitcoin#34225: refactor, key: move `CreateMuSig2{Nonce,PartialSig}` functions to `musig.{h,cpp}` module
c471c5085b2 common: Add unused UrlEncode function
9687ef1bd95 ci: Tolerate unused free functions in intermediate commits
02b2c411034 logging: use util/log.h where possible
57d7495fe5c IWYU fixes
611878b46f7 scripted-diff: logging: Drop LogAcceptCategory
34332dba2f6 util/log, logging: Provide ShouldDebugLog and ShouldTraceLog instead of a generic ShouldLog
abea304dd6d logging: Move GetLogCategory into Logger class
58113e58334 util/log: Rename LogPrintLevel_ into detail_ namespace
f69d1ae56db util/log: Provide util::log::NO_RATE_LIMIT to avoid rate limits
72e92d67df7 logging: Protect ShrinkDebugFile by m_cs
096bb0b5c05 bench: add benchmark for GetMappedAS()
b6c36704428 i2p: clean up SAM error logging
1c500b17098 test: avoid non-loopback network traffic from node_init_tests/init_test
3381855e51c doc: external signer: update interface, --stdin flag, IPC-command signtx, contains updates from #33947
ddb94fd3e10 Merge bitcoin/bitcoin#35289: fuzz: Fix timeout in `txorphan`
3142e5f8cf4 doc: Add release notes for #32220
b71cd5c1622 cmake: Skip using git when building from source tarball or as subproject
fe941938e84 cmake: Remove unnecessary `BITCOIN_GENBUILD_NO_GIT` environment variable
9a2cced23a6 cmake, refactor: Move `find_package(Git)` to `src/CMakeLists.txt`
3cab711d695 Merge bitcoin/bitcoin#35284: fuzz: use ImmediateBackgroundTaskRunner to silence DEBUG_LOCKORDER
004a7e3cfbc fuzz: Fix txorphan timeout by limiting block weight
7777a92a927 ci: Use path with spaces on windows as well
fac6c4270da ci: Put space and non-ASCII char in scratch dir
fa387598236 ci: Require $FILE_ENV
cad5f560458 Merge bitcoin/bitcoin#29136: wallet: `addhdkey` RPC to add just keys to wallets via new `unused(KEY)` descriptor
9961229360c Merge bitcoin/bitcoin#31298: rpc: combinerawtransaction now rejects unmergeable transactions
c680cfe3436 Merge bitcoin/bitcoin#35123: wallet: remove outdated arguments from chain scanning methods
a145fa881a2 Merge bitcoin/bitcoin#35156: dbwrapper: reuse scratch `DataStream` buffers
04003e1fa37 Merge bitcoin/bitcoin#35274: doc: clarify libfuzzer-nosan preset uses build_fuzz_nosan dir
5309c905422 Merge bitcoin/bitcoin#35283: doc: mention -DWITH_ZMQ=ON in BSD build guides
90eda67bb8f Remove opt-in RBF
fa3d7ce11c6 doc: Document minimum versions for Xcode CLT and MSVC
8544537f41d mining: drop unused include_dummy_extranonce option
58eeab790d9 mining: only pad with OP_0 at heights <= 16
00d22328b05 mining: pad coinbase to fix createNewBlock at heights <=16
801d36f55b6 fuzz: use ImmediateBackgroundTaskRunner to silence DEBUG_LOCKORDER
ca93ab808c4 doc: mention -DWITH_ZMQ=ON in BSD build guides
605ff37403f test: bad-cb-length for createNewBlock() at low heights
1966621b768 test: refactor IPC mining test to use script_BIP34_coinbase_height
8ba5f68b1df refactor, key: move `CreateMuSig2PartialSig` to `musig.{h,cpp}` module
d087f266fc2 refactor, key: move `CreateMuSig2Nonce` to `musig.{h,cpp}` module
f36d89f4363 key: add `GetSecp256k1SignContext` access function
0065f354a7e doc: clarify libfuzzer-nosan preset uses build_fuzz_nosan dir
81348576cc4 psbt, test: remove address type restrictions in test
82733e61dee Merge bitcoin/bitcoin#35277: ci: Enable ruff ambiguous-unicode-character checks
fe2bb43e437 Merge bitcoin/bitcoin#35044: contrib: Fix NameError in signet miner gbt()
fa9c919678c refactor: Use ignore-list over verbose select-list
cd8d3bd937b wallet: use outpoint when estimating input size
fa9b01adecc ci: Enable ruff ambiguous-unicode-character checks
09a9bb35367 Merge bitcoin/bitcoin#34547: lint: modernise lint tooling
10ca73c02cb Merge bitcoin/bitcoin#34580: build: Add a compiler minimum feature check
1af8e0c4e89 Merge bitcoin/bitcoin#35183: doc: recommend script_flags instead of deployments.taproot
f24a7b5f759 doc: recommend script_flags instead of deployments.taproot
ccbd00ab87c Merge bitcoin/bitcoin#35152: doc: clarify local IWYU workflow and pragmas
88bfe89793d Merge bitcoin/bitcoin#35227: wallet: check the final BDB page LSN during migration
21599ea612e Merge bitcoin/bitcoin#35241: cmake: Set `CTEST_NIGHTLY_START_TIME` for CDash Nightly pipelines
d406cffafdd Merge bitcoin/bitcoin#34228: depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script
4defc466a22 cmake: Set `CTEST_NIGHTLY_START_TIME` for CDash Nightly pipelines
1f28ed6b6af Merge bitcoin/bitcoin#35235: contrib: mv verify-commits/pre-push-hook.sh to maintainer tools repo
8396b7f2a3b Merge bitcoin/bitcoin#35236: doc: typo roundup
2b7f5914c42 Merge bitcoin/bitcoin#35222: cmake: add CTestConfig.cmake
888857c5514 mv contrib/verify-commits/pre-push-hook.sh to maintainer tools repo
d9b57eecadf doc: fix whitespace in build-osx.md
e7d4a7e3f9a doc: fix stale autotools reference and SQLite typo
3f9c55426a1 Merge bitcoin/bitcoin#35230: ci: Move --usecli --extended from i386 task to alpine task
fad61896e86 ci: Move --usecli --extended from i386 task to alpine task
7c84a2bdb16 Merge bitcoin/bitcoin#35219: doc: Add my key to SECURITY.md
cf5c962a39f Merge bitcoin/bitcoin#34991: test: fix feature_index_prune.py bug when using --usecli
6690117c7ac Merge bitcoin/bitcoin#35218: test: fix `P2SH` script in coins cache fuzz target
5b11108145c Merge bitcoin/bitcoin#35223: refactor: [rpc] Remove confusing and brittle integral casts (take 3)
e2b0984f995 wallet: check BDB last page LSN
fa864b937e1 refactor: [rpc] Remove confusing and brittle integral casts (take 3)
9f7a2293c48 depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script
086894098ec cmake: add CTestConfig.cmake
0651a1fc154 doc: Add Niklas Goegge's key to SECURITY.md
ac58e6c53c2 test: fix P2SH output in coins cache fuzz
aa1d0d7cd73 Merge bitcoin/bitcoin#35209: validation: correct lifetime of precomputed tx data
0429c503fb0 bench: Replace Coin Selection bench
ec1eefda774 bench: Remove unnecessary wallet parameter
e6c4ffb9560 bench: Fix type mismatch
d7ed2840acc Merge bitcoin/bitcoin#21283: Implement BIP 370 PSBTv2
1ed799fb21d validation: correct lifetime of precomputed tx data
371eac8069a fuzz: exercise ForNode/ForEachNode callbacks in connman fuzz harness
c89c8ddbb36 Merge bitcoin/bitcoin#33300: fuzz: compact block harness
4bf1701f58b Merge bitcoin/bitcoin#33796: kernel: Expose `CheckTransaction` consensus validation function
999e9dbfb43 Merge bitcoin/bitcoin#35202: ci: restore sockets in `i686, no IPC` job
224120bf129 Merge bitcoin/bitcoin#32394: net: make m_nodes_mutex non-recursive
11c9ef92a8d ci: unconfine seccomp for i686 no IPC
86718e45896 scripted-diff: rename ABEF_SAVE/CDGH_SAVE to ABCD_SAVE/EFGH_SAVE in SHA-256 ARM intrinsics
8f4a3ba8972 Merge bitcoin/bitcoin#35165: cmake: Remove NetBSD-specific workaround from `add_boost_if_needed`
b1ff4773ba7 Merge bitcoin/bitcoin#34544: wallet: Disallow wallet names that are paths including `..` and `.` elements
db98e357d3e Merge bitcoin/bitcoin#35018: wallet, bench: Use Nanobench setup() for wallet benchmarks, and remove DuplicateMockDatabase
18d003c3dcc Merge bitcoin/bitcoin#34916: contrib: override system locale in gen-manpages.py
567ff2b6d69 Merge bitcoin/bitcoin#33196: docs: clarify RPC credentials security boundary
3c2646eacc1 Merge bitcoin/bitcoin#34026: fuzz: Add tests for `CCoinControl` methods
bfbf1a7ef3e kernel: Expose btck_transaction_check consensus function
404470505a8 Merge bitcoin/bitcoin#34256: test: support `get_bind_addrs` and `feature_bind_extra` on macOS & BSD
25100fc28da Merge bitcoin/bitcoin#35186: util, iwyu: Add missed header
d28179bac90 util, iwyu: Add missed header
32e479f7a5a Merge bitcoin/bitcoin#34669: feefrac: drop comparison and operator{<<,>>} for sorted wrappers
11713c9fa91 net: make CConnman::m_nodes_mutex non-recursive
aec4fa2de00 net: drop the only recursive usage of CConnman::m_nodes_mutex
eed7af666b6 doc: Add release note for disallowing some wallet path names
3d7f0e4ed5a wallettool: Use GetWalletPath to determine the wallet path
ef499680c8d Merge bitcoin/bitcoin#34176: wallet: crash fix, handle non-writable db directories
a39cc16b434 doc: Release note for addhdkey
89b9a01b4ea wallet, rpc: Disallow importing unused() to wallets without privkeys
35bbee63746 wallet, rpc: Disallow import of unused() if key already exists
f3f8bcbd1df wallet: Add addhdkey RPC
9fa4076b20a test: Test merging implicit PSBTv0 with explicit PSBTv0
1660c18232a doc: Release notes for psbtv2
470e52a5f81 fuzz: Enforce additional version invariants in PSBT fuzzer
5bd0579c09c test: Tests for PSBT AddInput and AddOutput
b8b6e7f0c29 tests: Add PSBT unit test for ComputeTimeLock
0bc1c2e5084 tests: Add test vectors from BIP 370
e0e4dbdeb5c psbt: Change default psbt version to 2
bcc1dca77b3 Add psbt_version to PSBT RPCs and default to v2
ab38c301953 Implement PSBTv2 field merging
93e339e29ff Implement PSBTv2 AddInput and AddOutput
b39c86ae606 Allow specifying PSBT version in constructor
dcc9a3c8dfd Implement PSBTv2 in decodepsbt
5770dbd39fc Add PSBT::ComputeLockTime()
863cf47b33e Update test_framework/psbt.py for PSBTv2
925161eaf0c Implement PSBTv2 fields de/ser
d9cf658ee01 Restrict joinpsbts to PSBTv0 only
3da0e160124 Replace PSBT.tx with PSBT::GetUnsignedTx and PSBT::GetUniqueID
c568624ff29 psbt: Return std::optional from PrecomputePSBTData
092de4f1f6c Replace PSBT::GetInputUTXO with PSBTInput::GetUTXO
1d1ae6f0c4f wallet, test: Remove DuplicateMockDatabase
82bc280de47 test: Simple test for importing unused(KEY)
80c29bc6f14 descriptor: Add unused(KEY) descriptor
82c9fe31793 psbt: Use PSBTInput and PSBTOutput fields instead of accessing global tx
95897507e9e psbt: AddInput and AddOutput should take only PSBTInput and PSBTOutput
1b7d323a726 Add PSBTInput::GetOutPoint
543d3e1cdcf psbt: add PSBTv2 global tx fields
c01c7f068c5 psbt: Remove default constructor
9671aa08c2a psbt: add tx input and output fields in PSBTInput and PSBTOutput
990b084f11c Have PSBTInput and PSBTOutput know the PSBT's version
7eacc21ff67 psbt: make PSBT structs into classes
f926c326bb8 gui: Store PSBT in std::optional in PSBTOperationsDialog
1e2d146b47c psbt: Refactor duplicate key lookup and size checks
88384180d3e test: PSBTs should roundtrip through RPCs that do nothing
001877500dc test: construct psbt with unknown field programmatically
0cb884e6df8 psbt: Fill hash preimages and taproot builder from SignatureData
57820c472b4 bench: Utilize setup() for WalletLoading and use a real database
9a7604fd257 bench: Use setup() in WalletMigration to prepare the legacy wallet
426a94e7bd7 bench: Utilize setup() in WalletEncrypt to create the encryption wallet
d672455d201 bench: Utilitze setup() in WalletBalance for marking caches dirty
61412ef887f bench: Utilize setup() in WalletCreate to cleanup previous wallets
2424e528367 lint: doc: detail lint tool install methods
5fefa5a654e Don't pin Python patch version
fd15b55c2ef lint: use requirements.txt
5f4d3383daa lint: switch to ruff for formatting and linting
a53b81ce4e6 lint: switch to uv for python management in linter
fb0e8612d6f Merge bitcoin/bitcoin#35175: multi_index: fix compilation failure with boost >= 1.91
2b0dc0d2280 wallet: Disallow . and .. from wallet names
d084bc88beb doc: clarify IWYU workflow
7c7cec45678 ci: update IWYU patch reference
cef58341a0b Merge bitcoin/bitcoin#32876: refactor: use options struct for signing and PSBT operations
75cf9708a05 ci: add one more routable address to the VMs (docker containers)
1b93983bf5c test: make feature_bind_port_(discover|externalip).py auto-detect the skip condition
0bc9d354dfd multi_index: fix compilation failure with boost >= 1.91
eab72d14d79 refactor: use SignOptions for MutableTransactionSignatureCreator
5ed41752c5a refactor: use SignOptions for SignTransaction
dc4a5d1270f refactor: use PSBTFillOptions for filling and signing
032223f403d dbwrapper: reuse iterator scratch stream
7403c0f907d dbwrapper: guard `CDBBatch` scratch streams
cb1ab0a7168 test: cover repeated dbwrapper stream use
31ce729b28e streams: add `ScopedDataStreamUsage`
85921521866 Merge bitcoin/bitcoin#34911: rpc, mempool: -deprecatedrpc fullrbf and bip125-replaceable from mempool RPCs
c8d688f41cc fuzz: send blocktxn messages in cmpctblock harness
d0333bfe990 fuzz: send compact blocks in cmpctblock harness
3c58efe2acf fuzz: mine blocks and send headers for them in cmpctblock harness
651622432d2 fuzz: create and send transactions in cmpctblock harness
8c9a3fd0e87 net, fuzz: move CMPCTBLOCK_VERSION to header, use in cmpctblock harness
6cd480f62f6 fuzz: initial compact block fuzz harness
ad3f73862bd Merge bitcoin/bitcoin#35149: doc: clarify clang-tidy in developer notes
f40da7afc03 Merge bitcoin/bitcoin#35153: doc: update llvm based coverage example
e2ef54b8ba8 cmake: Remove NetBSD-specific workaround from `add_boost_if_needed`
6d86184a8bc rpc: combinerawtransaction now rejects unmergeable transactions
a7bea426b4a Merge bitcoin/bitcoin#35143: kernel: guard btck::Handle move-assignment against self-move
08925d5ee75 test: add coverage for loading a wallet in a non-writable directory
0218966c0dc test: add coverage for wallet creation in non-writable directory
bc0090f1d60 wallet: handle non-writable db directories
0abbe35bb20 Merge bitcoin/bitcoin#35148: refactor: Remove confusing DataStream::in_avail() alias
6322c1697d8 Merge bitcoin/bitcoin#33920: Export embedded ASMap RPC
28a523fb94d Merge bitcoin/bitcoin#35097: util: Return uint64_t from _MiB and _GiB operators
ef21e292988 doc: update llvm based coverage example
fa43da21f19 refactor: Run ShouldWarnOversizedDbCache calculation in u64
fa5801762e3 util: Return uint64_t from _MiB and _GiB operators
a1e534bbf07 doc: clarify clang-tidy in developer notes
a49bc1e24e6 ci: add --extended when using --usecli
fa204100e14 streams: Remove confusing DataStream::in_avail()
fa5ab0220e0 move-only: Extract ProcessPong() helper
8deed0df066 doc: add release notes for PR 34911
1a85ca1dff1 rpc, mempool: rpcdeprecate `bip125-replaceable` key in mempool RPCs reponses
f89d18c3b1c rpc, mempool: rpcdeprecate `fullrbf` key in getmempoolinfo RPC response
2d5ab09f0dc Merge bitcoin/bitcoin#35124: bench: fix benchmark fixtures and setup checks
1aef4d53ff0 Merge bitcoin/bitcoin#34885: kernel: expose btck_block_tree_entry_get_ancestor
e6430b27734 bench: make `setup()` use single-iteration epochs
ba0078e3bf1 bench: fix ephemeral spend inputs
b8b7f896e8f bench: drop duplicate balance benchmark
290e48fbf0a Merge bitcoin/bitcoin#35128: dbwrapper: avoid copying `CDBIterator` keys in `GetKey()`
904c0d07bb3 util/stdmutex: Drop StdLockGuard
f17cd18d02b Merge bitcoin/bitcoin#35116: net: cleanup SOCKS5 auth logging
fa9ddb01c96 test: Use MiB operator directly in cuckoocache_tests
14547eb4892 kernel: guard btck::Handle move-assignment against self-move
8a843a1b7c0 Merge bitcoin/bitcoin#34865: logging: better use of log::Entry internally
cd7865b0ce1 Merge bitcoin/bitcoin#33671: wallet: Add separate balance info for non-mempool wallet txs
0cbd2202943 Merge bitcoin/bitcoin#34440: refactor: Change CChain methods to use references, add tests
bb908999558 Merge bitcoin/bitcoin#34435: refactor: use `_MiB`/`_GiB` consistently for byte conversions
8a05adc5f81 Merge bitcoin/bitcoin#35138: doc: add missed advisory to 31.0 rel notes
c95968f780c doc: add missed advisory to 31.0 rel notes
3f09a4703f4 Merge bitcoin/bitcoin#35132: doc: update release process to mention security advisories pre-announcements
89af67d79f2 tests: Add some fuzz test coverage for command-specific args
92df7858592 tests: Add some test coverage for ArgsManager::AddCommand
33c8090be95 ArgsManager: automate checking for correct command options
186354a0d8a bitcoin-wallet: use command-specific options
d21e82b7d64 ArgsManager: support command-specific options
1a4371cc3d5 Merge bitcoin/bitcoin#34882: refactor: Use NodeClock::time_point in more places
4abc0c2e047 doc: update release process to mention security advisories pre-announcements
875faa29e16 Merge bitcoin/bitcoin#35087: tor: limit torcontrol line size that is processed to prevent OOM
2a90b6132a5 Add release notes for exportasmap
8cb2d926b4f rpc: Add exportasmap RPC
e32bc7f817e Merge bitcoin/bitcoin#35025: refactor: use `SpanReader` in deserialization benchmarks
13c8df4d5a9 refactor: replace `DataStream` with `SpanReader` in block deserialization tests
2529f255554 refactor: use `SpanReader` in `PrevectorDeserialize`
b8eb6c2081a refactor: use `SpanReader` in `TestBlockAndIndex`
61d678a6e35 refactor: use `DataStream::clear` in `::read` and `::ignore`
5de2f97a052 dbwrapper: use `SpanReader` for iterator keys
f0e498af5c0 test: cover failed `CDBIterator::GetKey()` deserialization
d3a40dd9de0 Merge bitcoin/bitcoin#35127: fuzz: remove redundant CScript method calls from script harness
dfe5d6a81dc fuzz: apply node context reset pattern to p2p_handshake
c9d8582235a fuzz: remove redundant CScript method calls from script harness
89e7c4274c6 Merge bitcoin/bitcoin#31449: coins,refactor: Reduce `getblockstats` RPC UTXO overhead estimation
6b3dd6314fb Merge bitcoin/bitcoin#34863: test: Clean shutdown in Socks5Server
64a88c8c1ed Merge bitcoin/bitcoin#35096: kernel: align height parameters to int32_t in btck API
dc84a310143 wallet: remove fUpdate argument from AddToWalletIfInvolvingMe
94845df073a wallet: remove update_tx argument from SyncTransaction
6e796e1f473 wallet: remove fUpdate argument from ScanForWalletTransactions
54e4c0be8f1 wallet: remove update argument from RescanFromTime method
0c0f75eaaf1 Merge bitcoin/bitcoin#35091: doc: archive release notes for v31.0
5c50a033094 Merge bitcoin/bitcoin#35006: cli, rpc: add -rpcid option for custom request IDs
b6d1b65062a Merge bitcoin/bitcoin#34908: rpc, refactor: gettxoutsetinfo race condition fix follow-ups
af0ee28eb62 refactor: use _MiB consistently for Mebibyte conversions
b3edd30aa24 util: add _GiB for Gibibyte conversions
7c75244adef Change pindexMostWork parameter of ActivateBestChainStep() to reference
c5eb283bca7 Change CChain::FindFork() to take ref
20b58e281ad Change CChain::Next() to take reference
fe2d6e25e03 Change CChain::Contains() to take reference
db56bcd6927 test: Add CChain::FindFork() tests
8333abdd916 test: Add CChain basic tests
3bf3b6d59ab net: log SOCKS5 auth before sending
b2debc9276d net: cleanup SOCKS5 auth logging
ad0545ba967 Merge bitcoin/bitcoin#35024: ci: Mitigate network issues in native Windows job
a51ec89e0c6 Merge bitcoin/bitcoin#35099: ci: drop `-lstdc++` from msan fuzz job
963ea38c0c8 Merge bitcoin/bitcoin#35038: bench: add script verification benchmark for P2TR script-path spends
0bdf21022ce Merge bitcoin/bitcoin#35089: test: Allow to set height in create_block
ac9ce25b5f0 Merge bitcoin/bitcoin#34425: test: Fix all races after a socket is closed gracefully
2f9aa400d9f Merge bitcoin/bitcoin#33032: wallet, test: Replace MockableDatabase with in-memory SQLiteDatabase
378e17f7035 Merge bitcoin/bitcoin#33477: Rollback for dumptxoutset without invalidating blocks
654556e631d Merge bitcoin/bitcoin#35086: test: interface_http follow-ups
9fe5896a446 tor: torcontrol disconnect on too many lines to avoid OOM
8b68287bf9a test: Make torcontrol max line length test stricter and test boundaries.
c5ec2d53130 logging: replace FormatLogStrInPlace with Format
3b92ec20362 logging: replace BufferedLog with log::Entry
07b9b13b45f doc: add integer type conventions in btck api remarks
f49a2afd94c test: interface_http follow-ups
ba6287a4493 kernel: align height parameters to int32_t in btck API
df44afdc983 kernel: expose btck_block_tree_entry_get_ancestor
8115001cd4c logging: pass log::Entry through to logging functions
b414913c73e util: add timestamp and thread_name to log::Entry
8a55b17751a util: make SourceLocation constructor explicit
b02d6b0567a ci: drop -lstdc++ usage in msan fuzz job
655a39ee148 ci: use llvm 22.1.3
1fa34f90a2f Merge bitcoin/bitcoin#35095: doc: fix typos and minor formatting issues
bdc8e496dab doc: fix typos and formatting in CONTRIBUTING, i2p, bitcoin-conf, files
ab5889796f7 refactor: torcontrol add connection checks to restart_with_mock
e7d647388c2 Merge bitcoin/bitcoin#34923: depends: remove workaround for Make older than 4.2.90
c4361e53cdb Merge bitcoin/bitcoin#34757: guix: re-enable riscv exported symbol checking
fa16bc53d79 test: Require named arg for create_block ntime arg
fab352053d6 test: Remove unused create_coinbase imports
fad6deb3cb2 scripted-diff: Use new create_block height option
fa5eb74b967 test: Allow to set height in create_block
c54f37c1ba9 cli, rpc: add -rpcid option for custom request IDs
4d040b7d623 doc: archive release notes for v31.0
44ac0c32b9e Merge bitcoin/bitcoin#34401: kernel: add serialization method for btck_BlockHeader API
53f4743c215 Merge bitcoin/bitcoin#35080: test: Add missing self.options.timeout_factor scale in tool_bitcoin_chainstate.py
edcf84c73ab Merge bitcoin/bitcoin#35077: kernel: build: remove unused serfloat dependency
fa02eb87df0 test: Add missing self.options.timeout_factor scale in tool_bitcoin_chainstate.py
49895b9cbd1 kernel: build: remove unused serfloat dependency
577a3e74c82 test: Add check for return type in `HasToBytes` concept
1ad551281aa kernel: Add Block Header serialization method
86662623ec2 Add `SpanWriter` class for zero-allocation stream writing
fbffe8a64a9 bench: improve `VerifyNestedIfScript` benchmark precision (make stack clearing untimed)
616ee6fe74e bench: add script verification benchmark for P2TR script-path spends
7844a2f0830 Merge bitcoin/bitcoin#34772: test: modernize interface_http and cover more libevent behavior
6ac49373aac test: Add clean shutdown to Socks5Server
976985eccd5 Merge bitcoin/bitcoin#34124: validation: make `CCoinsView` a pure virtual interface
09c0e377899 ci: Rename vcpkg binary cache entity to force rebuild
fa1015bbcb1 refactor: Use NodeClock::time_point for m_connected
7aa033d3d4a Merge bitcoin/bitcoin#34773: test: migrate functional test equality asserts to `assert_equal`
34c3279d25e Merge bitcoin/bitcoin#34623: Update secp256k1 subtree to latest master
7e3e22e1f7d Merge bitcoin/bitcoin#35047: doc: fix typo 'parlor' to 'parlance' in developer-notes
ea893cff07d doc: fix typo 'parlor' to 'parlance' in developer-notes
701bc2dc02f contrib: Fix NameError in signet miner gbt()
eff9e798b95 coinselection: Tiebreak SRD eviction by weight
58dccd27e11 Merge bitcoin/bitcoin#34858: test: Use NodeClockContext in more tests
fe3d2be1d67 Merge bitcoin/bitcoin#32757: net: Fix Discover() not running when using -bind=0.0.0.0:port
7015f709203 Merge bitcoin/bitcoin#34886: test: Rework Single Random Draw coin selection tests
7c6f1ab654a Merge bitcoin/bitcoin#35032: net_processing: don't modify addrman for private broadcast connections
94f1d35145c Merge bitcoin/bitcoin#34922: test: Use BasicTestingSetup when sufficient
dc930910838 ci: Cache `vcpkg/downloads` folder in native Windows CI job
88bbf2ad33b ci, refactor: Reuse primary key in `actions/cache/save`
141fbe4d530 Merge bitcoin/bitcoin#34884: validation: remove unused code in FindMostWorkChain
1ed1a124028 net_processing: don't modify addrman for private broadcast connections
2b541eeb363 Merge bitcoin/bitcoin#34495: Replace boost signals with minimal compatible implementation
f8ab0b778c7 Merge bitcoin/bitcoin#34905: Update string and net utils for future HTTP operations
b7f9178976b Update secp256k1 subtree to latest master
dfd54c959ef Squashed 'src/secp256k1/' changes from 57315a6985..7262adb4b4
ab304b0ef24 Merge bitcoin/bitcoin#35031: ci: Match `VCPKG_HOST_TRIPLET` to `VCPKG_TARGET_TRIPLET`
80572c75556 Merge bitcoin/bitcoin#34158: torcontrol: Remove libevent usage
8783cc8056d refactor: inline `CCoinsViewBacked` implementation
86296f276d1 coins: make `CCoinsView` methods pure virtual
b637566c8d0 coins: add explicit `CoinsViewEmpty` noop backend
90c635c01cf fuzz: keep backend assertions aligned to active backend
a9f92e34975 refactor: normalize CCoinsView whitespace and signatures
38a99f33444 scripted-diff: normalize `CCoinsView` naming
06172ef0d50 refactor: rename `hashBlock` to `m_block_hash` to avoid shadowing
0e712b3812d Make DynSock accepted sockets queue optional, with precise lifetime
3de02abf3f7 util/test: Add string_view constructor to LineReader and remove StringToBuffer
b0ca400612d string: replace AsciiCaseInsensitiveKeyEqual with CaseInsensitiveEqual
81720992931 util: get number of bytes consumed from buffer by LineReader
ba01b00d45a refactor: use for loops in FindMostWorkChain
aa0eef735b1 test: add InvalidateBlock/ReconsiderBlock asymmetry test
1b0b3e2c2cb validation: remove redundant marking in FindMostWorkChain
c74c6cfd840 ci: Match `VCPKG_HOST_TRIPLET` to `VCPKG_TARGET_TRIPLET`
d2844c6a4ff Merge bitcoin/bitcoin#35014: test: remove macOS REDUCE_EXPORTS exception workaround
858a0a9c96b test: Add SRD maximum weight tests
fe9f53bf0b2 test: Add SRD success tests
2840f041c5e test: Rework SRD insufficient balance test
64ab97466f7 Test: Add new minimum to tested feerates
65900f8dc6e test: Init coin selection params with feerate
82235bbf2b5 Merge bitcoin/bitcoin#34988: rpc: fix initialization-order-fiasco by lazy-init of decodepsbt_inputs
b555a0b789f test: remove macOS REDUCE_EXPORTS exception workaround
1d7edee34c1 Merge bitcoin/bitcoin#34977: Update libmultiprocess subtree to fix test timeout
2af003ae372 test: Use BasicTestingSetup when TestingSetup is not necessary
9ee77701ddb refactor(test): Only specify TestChain100Setup in test cases
d868667fdc5 Merge bitcoin/bitcoin#34985: fuzz: remove GetDescriptorChecksum from string harness
66b4e30ec80 Merge commit '7a6d210989af56a03d7efa79f1f3a90047bb88fe' into 2026/04/libmultiprocess-subtree
7a6d210989a Squashed 'src/ipc/libmultiprocess/' changes from 70f632bda8..3edbe8f67c
422ca211ec0 test: ensure HTTP server enforces limits on headers and body size
485ebad1ee9 Merge bitcoin/bitcoin#33385: contrib: Add bash completion for new bitcoin command
3fd68a95e68 scripted-diff: replace remaining Python test equality asserts
301b1d7b1fa test: add missing `assert_equal` imports
06a4176c420 test: convert truthy asserts in `wallet_miniscript` and `rpc_psbt`
d9a3cf20a49 test: convert simple equality asserts in excluded files
23c06d4e6d0 test: convert equality asserts with comments or special chars
dcd90fbe54c test: prep manual equality assert conversions
4f4516e3f6c test: split equality asserts joined by `and`
76a5570b368 test: use `in` for two-value equality asserts
996e4f7edd6 Merge bitcoin/bitcoin#35001: validation: Remove stale `BlockManager` param from `ContextualCheckBlockHeader`
b730dc3301f Merge bitcoin/bitcoin#34208: bench: add fluent API for untimed `setup` steps in nanobench
0c1a07e8901 test: ensure HTTP server timeout is not caused by a delayed response
f06de5c1ea6 test: clean up and modernize interface_http
1950da94fce test: enable `rpc_bind` on macOS and BSD
7236a055035 test: enable `feature_bind_extra` on macOS and BSD
74e75180886 Merge bitcoin/bitcoin#34989: doc: remove stale shortid collision TODO
8edb13dbdd5 Merge bitcoin/bitcoin#34967: doc: Discourage trailing doxygen comments, and fix the broken ones
19e99be011b guix: remove riscv exclusion from symbol check
47b7a9f6668 guix: binutils 2.46.0
851152e42a4 validation: Remove stale BlockManager param in ContextualCheckBlockHeader
a7c30da1f6f Merge bitcoin/bitcoin#34873: net: fix premature stale flagging of unpicked private broadcast txs
1401011f71c test: Add test for exceeding max line length in torcontrol
84c1f320710 test: Add torcontrol coverage for PoW defense enablement
7dff9ec2989 test: Add test for partial message handling in torcontrol
569383356ec test: Add simple functional test for torcontrol
4117b92e67c fuzz: Improve torcontrol fuzz test
b1869e9a2db torcontrol: Move tor controller into node context
eae193e7502 torcontrol: Remove libevent usage
242b0ebb5ca btcsignals: use a single shared_ptr for liveness and callback
b12f43a0a82 signals: remove boost::signals2 from depends and vcpkg
a4b16079837 signals: remove boost::signals2 mentions in linters and docs
375397ebd94 signals: remove boost includes where possible
091736a153c signals: re-add forward-declares to interface headers
9958f4fe491 Revert "signals: Temporarily add boost headers to bitcoind and bitcoin-node builds"
34eabd77a23 signals: remove boost compatibility guards
e60a0b9a22f signals: Add a simplified boost-compatible implementation
63c68e2a3f9 signals: add signals tests
d517fa0a948 rpc: fix initialization-order-fiasco by lazy-init of decodepsbt_inputs
f1e14dfbe9b depends: remove workaround for Make older than 4.2.90
5603ae0ffa3 test: fix send_batch_request to pass callables when using --usecli
fa1f4feac4b Merge bitcoin/bitcoin#34965: cli: Return more helpful authentication errors
4b989627316 Merge bitcoin/bitcoin#34448: ci, iwyu: Fix warnings in `src/util` and treat them as errors
59199fa5eaa Merge bitcoin/bitcoin#33908: kernel: add context‑free block validation API (`btck_check_block_context_free`) with POW/Merkle flags
fc736013a59 rpc: Add in_memory option to dumptxoutset with rollback
d0fd7189485 test: Extend named pipe sqlite tool test to use rollback
ab9463efac7 test: Add dumptxoutset fork test
49d5e835a87 rpc: Don't invalidate blocks in dumptxoutset
fe58eb98507 blockstorage: Add DeletePruneLock
037ea2c714c walletdb: Remove m_mock from SQLiteDatabase
59484e2fdbd wallet: Make Mockable{Database,Batch} subclasses of SQLite classes
b69f989dc53 wallet, bench: Use TestingSetup in CoinSelection benchmark
e7d67c9fd9a test: Make duplicating MockableDatabases use cursor and batch
964eafb71c1 bench, wallet: Make WalletMigration's setup WalletBatch scoped
facaeb9c762 doc: Discourage trailing doxygen comments, and fix the broken ones
8cc690ea9bc Merge bitcoin/bitcoin#34379: wallet: fix `gethdkeys` RPC for descriptors with partial xprvs
194f57109de Merge bitcoin/bitcoin#34976: lint: Clarify rmtree/remove_all error message with preferred alternatives
fc9987dfc64 doc: remove stale shortid collision TODO
1189702d2f4 Merge bitcoin/bitcoin#34982: kernel: Remove NONNULL annotation from destroy method
52c3381fa8f Merge bitcoin/bitcoin#33506: test: sock: Enable all socket tests on Windows
24609389a42 Merge bitcoin/bitcoin#34986: docs: remove duplicate ///@} from bitcoinkernel.h
7abf6f6fb61 docs: remove duplicate ///@} from bitcoinkernel.h
91cd0e3aaa4 fuzz: remove GetDescriptorChecksum from string harness
75608547b46 kernel: Remove NONNULL annotation from destroy method
fa955af6181 lint: Clarify rmtree/remove_all error message with preferred alternatives
8e789322c5a Merge bitcoin/bitcoin#34944: guix: Clean up module list in manifest
8b461c530e9 Merge bitcoin/bitcoin#34956: depends, qt: Fix build on aarch64 macOS 26.4
aeb667f6b7d Merge bitcoin/bitcoin#33343: help: enrich help text for `-loadblock`
0831173c017 Merge bitcoin/bitcoin#34640: wallet: rpc: Improve error message for low feerates.
d0ed369b3b4 Merge bitcoin/bitcoin#34049: rpc: Disallow captures in RPCMethodImpl
5deed3deabf Merge bitcoin/bitcoin#34958: test: mining: add coverage for GBT's "coinbasevalue" result field
54fa356365a Merge bitcoin/bitcoin#34957: policy: remove incorrect `MANDATORY_SCRIPT_VERIFY_FLAGS` comment
4757b71aa79 Merge bitcoin/bitcoin#34938: refactor: Return std::optional over bool+mut&
257769a7ce8 qa: Improve error message
20a94c1524c cli: Clearer error messages on authentication failure
84c3f8d325e refactor(rpc): GenerateAuthCookieResult -> AuthCookieResult
fa244b984c0 refactor: Use NodeClock::time_point for m_last_send/recv and m_ping_start
fa2605b2047 refactor: Use NodeClock::time_point for CNetMessage::m_time
c97ac44c34e Merge bitcoin/bitcoin#32297: bitcoin-cli: Add -ipcconnect option
a846a7c805c Merge bitcoin/bitcoin#34811: doc: update cjdns.md for current cjdns installation and peering
12c3c3f81d5 test: mining: add coverage for GBT's "coinbasevalue" result field
8b49e2dd4ee ci, iwyu: Fix warnings in `src/util` and treat them as errors
6953363be8c refactor: Move license info into new module
eb750d277bc iwyu: Remove workaround for issue that has been fixed upstream
5fa6898818c policy: remove incorrect MANDATORY_SCRIPT_VERIFY_FLAGS comment
3aeccb7d739 depends, qt: Fix build on aarch64 macOS 26.4
f6e6fad0d9d Merge bitcoin/bitcoin#34867: wallet: document importdescriptors error object fields
0e2122c62eb Merge bitcoin/bitcoin#32875: index: handle case where pindex_prev equals chain tip in NextSyncBlock()
550f603025a Merge bitcoin/bitcoin#34382: test: wallet: Check fallbackfee default argument behavior.
b0f68f0a3a3 Merge bitcoin/bitcoin#34804: Update libmultiprocess subtree to fix race conditions on disconnects
325f743eedd guix: Clean up module list in manifest
fabab69e9e8 refactor: Return std::optional from ParseDouble
fa0a09441d2 refactor: Return std::optional from GetWalletNameFromJSONRPCRequest
fafb0c4cbe4 refactor: Return std::optional from GetLogCategory
826819a5108 Merge bitcoin/bitcoin#34939: fuzz: Use CAmount for storing best_waste
2b6af628b14 Merge bitcoin/bitcoin#34491: ci: add FreeBSD Clang cross job
e602ad62d04 Merge bitcoin/bitcoin#34919: test: script: boundary at exactly 65535 bytes must use OP_PUSHDATA2
954374d4058 Merge bitcoin/bitcoin#34926: test: Replace DEBUG_LOG_OUT with -printtoconsole=1
890a09b1e49 fuzz: Use CAmount for storing best_waste
fae807ed255 test: Remove unused, confusing and brittle connect_nodes.wait_for_connect
fab27726478 test: Fix all races after a socket is closed gracefully
fa21edddb27 test: Stricter checks in rpc_setban.py
faa404e119c test: Add is_connected_to helper
613a5486488 Merge commit '2478a15ef966cc93d47dd0f461a44be39bc51534' into pr/subtree-9
2478a15ef96 Squashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8f
fa644e625b0 refactor: Use NodeClock::duration for m_last_ping_time/m_min_ping_time/m_ping_wait
333316f6bee doc: Fix typo "eviction criterium" -> "eviction criterion"
fa54fb01295 refactor: gui: Accept up to nanoseconds in formatDurationStr, but clarify they are ignored
fab88884b73 refactor: Avoid manual chrono casts with * or /
facfce37f62 util: Add NodeClock::epoch alias
fa41e072b3b refactor: Use NodeClock alias over deprecated GetTime
4f8bd396f8a Merge bitcoin/bitcoin#34913: fuzz: Use time helpers in node_eviction
21da421b42d Merge bitcoin/bitcoin#34439: qa: Drop recursive deletes from test code, add lint checks.
8a8edc8d882 Merge bitcoin/bitcoin#34741: refactor: Return std::optional from GetNameProxy/GetProxy
a5609fc249b Merge bitcoin/bitcoin#34458: net: Don't log own ips during discover
261d229455e test: Replace DEBUG_LOG_OUT with -printtoconsole=1
3dcdb2b9ba1 test: wallet: Warning for excessive fallback fee.
6664e41e56a test: wallet: -fallbackfee default is 0
d28c989243d test: wallet: refactor: fallbackfee extract common send failure checks.
99f99c989e7 Merge bitcoin/bitcoin#34918: fuzz: [refactor] Remove unused g_setup pointers
fde37778ba6 Merge bitcoin/bitcoin#34915: doc: archive release notes for v28.4
6d54365c3ef Merge bitcoin/bitcoin#34920: wallet: drop stale TODOs
fa1ebde1adf fuzz: Use time helpers in node_eviction
325afe664d1 net: delay stale evaluation and expose time_added in private broadcast
1438165b1fb wallet: drop stale TODOs
fabbfec3b00 fuzz: Remove unused g_setup pointers
f8996746393 test: script: boundary at exactly 65535 bytes must use OP_PUSHDATA2
758f208cc17 contrib: override system locale in gen-manpages.py
5a81d73a810 scripted-diff: rpc: Don't pointlessly capture in RPCMethod lambdas
4e789299af7 scripted-diff: rpc: Rename RPCHelpMan to RPCMethod
3e089038aae doc: archive release notes for v28.4
2fe76ed8324 Merge bitcoin/bitcoin#34896: ci: Upgrade IWYU to 0.26 compatible with Clang 22
c61c504f273 Merge bitcoin/bitcoin#34883: ci: vcpkg-specific cleanups
0d1301b47a3 test: functional: drop rmtree usage and add lint check
8bfb422de83 test: functional: drop unused --keepcache argument
a7e4a59d6df qa: Remove all instances of `remove_all` except test cleanup
38886a67108 Merge bitcoin/bitcoin#34786: validation: do not add the snapshot to candidates set of the background chainstate
6b99a3e4f0e doc: update cjdns.md for current upstream changes
0587c56091f kernel: Expose context-free block validation
bfc84eb2eaf Merge bitcoin/bitcoin#33259: rpc, logging: add backgroundvalidation to getblockchaininfo
1ef71660294 Merge bitcoin/bitcoin#34891: doc: Note that generateblock does not collect transaction fees
4ecf473c361 Merge bitcoin/bitcoin#34727: test: Add IPC wake-up test and reuse mining context
3129d4a6934 ci: Rename `TIDY_LLVM_V` to `IWYU_LLVM_V` in IWYU-specific code
71f827c3c2b kernel: Expose consensus parameters (`btck_ConsensusParams`)
999d18ab1ca net: introduce TxSendStatus internal state container
667e081a2a4 Merge bitcoin/bitcoin#34598: bench: use larger payload in HexStrBench
25f69d970a4 release note
af629821cf9 test: add background validation test for getblockchaininfo
a3d6f32a396 rpc, log: add backgroundvalidation to getblockchaininfo
5b2e4c4a88c log: update progress calculations for background validation
3e5dc610353 rpc, refactor: gettxoutsetinfo race condition fix follow-ups
400aa68b4aa Merge bitcoin/bitcoin#34809: threadsafety: Add STDLOCK() macro for StdMutex
fa73ed467cb refactor: Fix redundant conversion to std::string and then to std::string_view [performance-string-view-conversions]
16613c9de98 Merge bitcoin/bitcoin#34857: test: Remove confusing assert_debug_log in wallet_reindex.py
65379bb8d0e ci: add FreeBSD cross CI job
f44191f1637 depends: build qrencode for Freebsd
7f7018738e9 depends: FreeBSD cross with Clang
6464f140818 depends: disable inotify in Freebsd Qt build
fbabe861907 Merge bitcoin/bitcoin#34870: wallet: feebumper, fix crash when combined bump fee is unavailable
696b5457c5a Merge bitcoin/bitcoin#34667: test: ensure FastWalletRescanFilter is correctly updated during scanning
9a03ba1e3a9 Merge bitcoin/bitcoin#34888: wallet: fix amount computed as boolean in coin selection
8444efbd4a0 refactor: Get rid of unnecessary newlines in logs
6bcb60354e6 refactor: Modernize member variable names in torcontrol
a36591d1948 refactor: Use constexpr in torcontrol where possible
1a1f584360c Merge bitcoin/bitcoin#29963: depends: Do not consider `CC` environment variable for detecting system
28b93af19da Merge bitcoin/bitcoin#33414: tor: enable PoW defenses for automatically created hidden services
8d2f06853ac sync: Use StdMutex for thread safety annotations
cbc231ed8ee scripted-diff: logging: Switch from StdLockGuard to STDLOCK
f808786f48e logging: Add missing thread safety annotations
e196cf26e0e util/stdmutex.h: Add STDLOCK() and improve annotation checking for StdMutex
a703c70bb82 Merge bitcoin/bitcoin#34589: ci: Temporarily use clang in valgrind tasks
cdaf2f20ae0 Merge bitcoin/bitcoin#34850: depends: Remove no longer necessary `dsymutil`
3d1b7d0f6a9 Merge bitcoin/bitcoin#34639: iwyu: Document or remove some `pragma: export` and other improvements
559df68240b Merge bitcoin/bitcoin#34878: depends: Fix cross-compiling on macOS for Windows
999c42484f7 Merge bitcoin-core/gui#815: Bugfix on TransactionsView - Disable if privacy mode is set during wallet selection
0b489886f85 ci: Upgrade IWYU to 0.26 compatible with Clang 22
0026b330c4a wallet: fix amount computed as boolean in coin selection
31365599235 doc: Note that generateblock does not collect transaction fees
483769c0461 Merge bitcoin/bitcoin#26201: Remove Taproot BIP 9 deployment
2d5cedfe129 ci: Switch to VS-vendored vcpkg instance
ad75b147b5c test: scale IPC mining wait timeouts by timeout_factor
e7a918b69a5 test: verify IPC error handling for invalid coinbase
63684d6922e test: move make_mining_ctx to ipc_util.py
4ada575d6c6 test: verify createNewBlock wakes promptly when tip advances
0fe6fccec27 doc: Document rationale for using `IWYU pragma: export`
cfa3b10d50d iwyu, doc: Document `IWYU pragma: export` for `<logging/categories.h>`
015bea05e6a iwyu, doc: Document `IWYU pragma: export` for `<chrono>`
48bfcfedec0 iwyu, doc: Document `IWYU pragma: export` for `<threadsafety.h>`
179abb387f4 refactor: Move `StdMutex` to its own header
9aa5b3c3a33 ci: Switch to `x64-windows-release` triplet
65882fa68f7 ci: Remove upstreamed vcpkg workaround
19c94747426 Merge bitcoin/bitcoin#34791: test: Suppress another unsolicited `mock_process/*` output
7a9304f8872 depends: Fix cross-compiling on macOS for Windows
faad08e59c4 test: Use NodeClockContext in more tests
fa8fe0941ed fuzz: Use NodeClockContext
6e295d8ad5f Merge bitcoin/bitcoin#34059: refactor: Use NodeClock::time_point for m_addr_token_timestamp
fa9f434df89 test: Allow time_point in boost checks
faaea7895fd refactor: Use current_time over redundant call to Now()
3333c5023f7 refactor: Use NodeClock::time_point for m_addr_token_timestamp
f80bf5128d7 Merge bitcoin/bitcoin#34869: tests: applied PYTHON_GIL to the env for every test
b425a81f070 Merge bitcoin/bitcoin#34868: scripted-diff: Rename `WAIT_TIMEOUT` to `TEST_WAIT_TIMEOUT`
d14293c3a92 Merge bitcoin/bitcoin#34859: ci: Retry on intermittent Windows generate download failures
d58e0ad0a42 Merge bitcoin/bitcoin#33215: Fix compatibility with `-debuglogfile` command-line option
93e8bcc077e Merge bitcoin/bitcoin#32442: doc: guix: Troubleshooting zdiff3 issue and uninstalling.
14053d85207 Merge bitcoin/bitcoin#34550: guix: update time-machine to c5eee3336cc1d10a3cc1c97fde2809c3451624d3
bc1c5409205 Merge bitcoin/bitcoin#29060: Policy: Report debug message why inputs are non standard
3ca3e519b64 Merge bitcoin/bitcoin#34684: refactor: Enable -Wswitch in exhaustive switch'es, Enable -Wcovered-switch-default
b14f2c76a1f tests: applied PYTHON_GIL to the env for every test
6d2952c3c35 serialize: Add missing `<span>` header
6072a2a6a1f wallet: feebumper, fix crash when combined bump fee is unavailable
c53021b0ec4 Merge bitcoin/bitcoin#34499: miniscript: Use valid script in test, etc (#31713 follow-ups)
3c9e4219423 Merge bitcoin/bitcoin#34846: kernel: Add API getter functions for timelock fields (`nLockTime`, `nSequence`)
658e68f95b1 scripted-diff: Rename `WAIT_TIMEOUT` to `TEST_WAIT_TIMEOUT`
445143bfc67 wallet: document structured importdescriptors errors
c0d3d493a97 Merge bitcoin/bitcoin#34704: validation: Explicitly move blocks to validation signals
7e18e2b16ff Merge bitcoin/bitcoin#32624: fuzz: wallet: add target for `MigrateToDescriptor`
3a4a863d191 Merge bitcoin/bitcoin#34823: threading: never require logging from sync.h (take 2)
4169e72d9ed Merge bitcoin/bitcoin#34451: rpc: fix race condition in gettxoutsetinfo
fa71c6e84c1 ci: Avoid intermittent Windows generate download failures
fa30951af5b test: Remove confusing assert_debug_log in wallet_reindex.py
a7514c1aa91 Merge bitcoin/bitcoin#34848: cmake: Migrate away from deprecated SQLite3 target
81bf3ebff7e Merge bitcoin/bitcoin#34852: test: Fix intermittent issue in feature_assumeutxo.py
d81b562fcaf Merge bitcoin/bitcoin#34799: rpc: Run type check on decodepsbt result
33eaf910bd9 Merge bitcoin/bitcoin#34820: test: Use asyncio.SelectorEventLoop() over deprecated asyncio.WindowsSelectorEventLoopPolicy(), move loop creation
faf71d6cb49 test: [refactor] Use verbosity=0 named arg
99996f6c06d test: Fix intermittent issue in feature_assumeutxo.py
5cf6ea24d35 Merge bitcoin/bitcoin#34479: fuzz: Add and use NodeClockContext
578525d31d4 depends: Remove no longer necessary `dsymutil`
ca85b8c22d3 Merge bitcoin/bitcoin#34742: fuzz: set whitelist permissions on connman target
d6f680b4275 validation: Move block into BlockDisconnected signal
4d02d2b316a validation: Move block into BlockConnected signal
8b0fb64c024 validation: Move validation signal events to task runner
498b6eb6b5e cmake: Migrate away from deprecated SQLite3 target
fa70b9ebaa4 ci: Temporarily use clang in valgrind tasks
faf3ef4ee79 ci: Clarify why valgrind task has gui disabled
9f28120a5bf kernel: Add API function for getting a tx input's nSequence
6b64b181d5a kernel: Add API function for getting a tx's nLockTime
2104282ddde fuzz: Add tests for CCoinControl methods
43b09b993d0 fuzz: Improve oracle for existing CCoinControl tests
04480c25583 Merge bitcoin/bitcoin#34830: fuzz: set fSuccessfullyConnected in connman harness
3293e9a61fd guix: document when GCC SSA gen patch can be removed
978023fd9ea guix: use latest glibc 2.31
ab9a98b1e46 guix: combine gcc-libgcc-patches with base-gcc
2276426bb1b guix: switch to upstream python-oscrypto package
feea2a850ea ci: use LIEF 0.17.5 in lint job
a7524f57ba5 guix: switch to upstream python-lief package
2bf97e813d9 guix: switch to upstream osslsigncode package
dc0ddab389f guix: drop CMake workaround
31eb46f054f guix: update to c5eee3336cc1d10a3cc1c97fde2809c3451624d3
0f323e10759 guix: add --no-same-owner to TAR_OPTIONS
dc104cc3335 Merge bitcoin/bitcoin#34832: lint: detect arch for mlc binary
db3c25cfae1 index: add explicit early exit in NextSyncBlock() when the input is the chain tip
551875360cd ci: Use arch-appropriate binaries in lint install
52e8c1ce32a Merge bitcoin/bitcoin#34825: depends: capnp 1.4.0
8d551546554 Merge bitcoin/bitcoin#34602: test: addrman: successive failures in the last week for IsTerrible
bac8046fcee Merge bitcoin/bitcoin#34831: lint: remove excluded files from whitespace check
79467e3ec7c threading: never require logging from sync.h
f55c891a65e lint: more reuse of SHARED_EXCLUDED_SUBTREES
8864917d8bc lint: add missing ipc/test to grep_boost_fixture_test_suite
ecefc129277 lint: fix lint issue in lint script
ee8c22eb6a4 contrib: fix whitespace issues in scripts
fa55723b8fb move-only: Extract ProcessAddrs() helper
92287ae7539 test/wallet: ensure FastWalletRescanFilter is updated during scanning
04e21183729 lint: remove excluded .cpp/.h files from whitespace check
685a44c6012 fuzz: set fSuccessfullyConnected in connman harness
fadf901fd4b rpc: Run type check on decodepsbt result
ff7cdf633e3 Merge bitcoin/bitcoin#34816: test: Remove vulture from ci, Remove some --min-confidence=60 unused code
bde35d61f93 depends: capnp 1.4.0
92a3d30f382 Merge bitcoin/bitcoin#34418: qa: Make wallet_multiwallet.py Windows crossbuild-compatible
abaadc3d5bb Merge bitcoin/bitcoin#31774: crypto: Use secure_allocator for `AES256_ctx`
16a02bf5af4 Merge bitcoin/bitcoin#33451: doc: Add `INSTALL.md` to Linux release tarballs
ac1ccc5bd91 build: Add CTAD feature check
9f273f1c1c5 build: Add path to doc recommended versions for CLANG, GCC and MSVC
fa050da9805 test: Move event loop creation to network thread
a1f22a0a6b9 test: Suppress another unsolicited `mock_process/*` output
fa9168ffcd6 test: Use asyncio.SelectorEventLoop() over deprecated asyncio.WindowsSelectorEventLoopPolicy()
390e7d61bd5 Merge bitcoin/bitcoin#34787: build: fix native macOS deployment
5440280891b Merge bitcoin/bitcoin#34745: refactor: replace `ArgsManager::cs_args RecursiveMutex` with `Mutex`
fa4ec13b44d build: Enable -Wcovered-switch-default
fa2670bd4b5 refactor: Enable -Wswitch in exhaustive switch
5f75d90c388 Merge bitcoin/bitcoin#34813: threads: qa: Add lock order annotation for `TxMempool::cs`
f1e0245f891 Merge bitcoin/bitcoin#34818: doc: fix process name typo in multiprocess.md
c2732146d14 doc: fix process name typo in multiprocess.md
faea12ecd9f test: Fixup docs for NodeClockContext and SteadyClockContext
5608b8ce9e0 Merge bitcoin/bitcoin#34750: test: fix addr relay test silently passing and other improvements
fa90b21430b test: Remove unused feature_segwit.py functions
fa6b05c96ff test: Remove unused CUSTOM_._COUNT
fa7bac94d87 test: Remove unused wait_for_addr, firstAddrnServices, on_addr
fa388a35855 test: Remove unused self.p2p_conn_index = 1
fa803710e27 test: Remove unused AddressType
e31ab8040fc Merge bitcoin/bitcoin#34749: rpc: Refactor gettxspendingprevout to be easier to parse
fab5072ce13 ci: Remove vulture
56983a4d4d1 Merge bitcoin/bitcoin#34815: ci: bump cirruslabs actions versions
136132e075f Merge bitcoin/bitcoin#34776: guix: Make guix-clean more careful
d236415649e rpc: Refactor gettxspendingprevout to be easier to parse
e19df67332d Merge bitcoin/bitcoin#33144: build: Set AUTHOR_WARNING on warnings
ab642773757 Merge bitcoin/bitcoin#34708: validation: refactor: remove ConnectTrace
44ddc9c93f0 Merge bitcoin/bitcoin#31560: rpc: allow writing UTXO set to a named pipe
1a2f4e9750d Merge bitcoin/bitcoin#34814: lint: Temporarily revert to vulture==2.14
9a968ad35ef ci: bump cirruslabs actions versions
51a4dc5515f Merge bitcoin/bitcoin#34796: rpc, net: remove `startingheight` field of `getpeerinfo` RPC and from node state
2efb8c44bbf Merge bitcoin/bitcoin#34807: kernel: doc: explain return value for `btck_WriteBytes` callback
faae981d354 lint: Temporarily revert to vulture==2.14
9085dee476d qa: Add lock order annotation for TxMempool::cs
32325d17777 tests: Add test for mempool-invalid wallet tx
25e063d950a wallet: Add separate balance info for non-mempool wallet txs
ec4ec91d59b kernel: doc: explain return value for `btck_WriteBytes` callback
b19caeea098 doc: add release note for #31560 (named pipe support for `dumptxoutset` RPC)
e98d36715ea Merge bitcoin/bitcoin#34802: ci: Bump GHA actions versions
61a5460d0d6 test: add test for utxo-to-sqlite conversion using named pipe
2e8072edbeb rpc: support writing UTXO set dump (`dumptxoutset`) to a named pipe
745ad941ded p2p: remove m_starting_height field from node state (only show once in debug log)
b267efcdaf8 rpc, net: completely remove `startingheight` field of `getpeerinfo` RPC
fadaa7db335 ci: Bump GHA actions versions
ce6f1820910 Merge bitcoin/bitcoin#33902: doc: Document compiler configuration for native depends packages
e96d9e6492c Merge bitcoin/bitcoin#34389: net/log: standardize peer+addr log formatting via `LogPeer`
281c0cce73e Merge bitcoin/bitcoin#34301: wallet: remove outdated `RewriteDB` calls from SPKM & `DBErrors::NEED_REWRITE` enum value
524aa1e5331 Merge bitcoin/bitcoin#34576: threadpool: add ranged Submit overload
4c07cf87e22 doc: document depends compiler configuration
f25843d8ad0 Merge bitcoin/bitcoin#34441: ci: Allow running iwyu CI in worktree
fa4d5891b96 refactor: Introduce TxDocOptions
b8c84ec5a62 Merge bitcoin/bitcoin#34788: fuzz: register PeerManager in process_message(s)
fa8250e961c refactor: Add and use RPCResultOptions
d03e3be246f ci: check macos bundle structure and codesigning
66d80d57b48 macdeploy: use plugins dir to find plugins
ab137cbfe27 macdeploy: subprocess out to zip rather than shutil.make_archive
b62abc7eecb Merge bitcoin/bitcoin#34436: refactor: add overflow-safe `CeilDiv` helper and use it in unsigned callsites
7c214136162 Merge bitcoin/bitcoin#34755: depends: cleanup meta files
63f27721c2a Merge bitcoin/bitcoin#32985: wallet: Always rewrite tx records during migration
9df4f9d1003 Merge bitcoin/bitcoin#34472: bench: add script verification benchmark for P2TR key path spends
3201abe3eac Merge bitcoin/bitcoin#34359: test: add test for rebroadcast of transaction received via p2p
410f2a0d205 Merge bitcoin/bitcoin#33772: prevector: simplify operator==
3dcba2eff0f Merge bitcoin/bitcoin#26988: cli: rework -addrinfo cli to use addresses which aren’t filtered for quality/recency
af0da2fce21 crypto: Use `secure_allocator` for `AES256CBC*::iv`
d53852be316 crypto: Use `secure_allocator` for `AES256_ctx`
8c6fedaa818 build: `lockedpool.cpp` kernel -> crypto
51ac1abf6fd bench: Add wallet encryption benchmark
9a158725161 wallet: Make encryption derivation clock mockable
b97abdcdf13 Merge bitcoin/bitcoin#34766: Pre-31.x branching updates
ae5485fa0d2 refactor: Generalize derivation target calculation
eed31618937 Merge bitcoin/bitcoin#34792: clusterlin: update SFL comments for deterministic order
98fcd7af23f wallet: rpc: Improve error message for low feerates.
f3bf63ec4f0 kernel: acquire coinstats cursor and block info atomically
5e77072fa60 rpc: fix race condition in gettxoutsetinfo
730308386a4 Merge bitcoin/bitcoin#34696: Update embedded asmap to 1772726400 for v31
951863d022b Merge bitcoin/bitcoin#34769: doc: update http worker thread names
79571b91813 threadpool: add ranged Submit overload
fa270fdacf5 refactor: Return std::optional from GetProxy
faeac1a931e refactor: Return std::optional from GetNameProxy
d67c8ed7889 clusterlin: update SFL comments for deterministic order
0690a5d0f27 Update embedded asmap to 1772726400
20fb7618b00 args: make most ArgsManager members private
22b40f34f33 args: replace cs_args RecursiveMutex with Mutex
3a16ec8582b test: scope cs_args locks to avoid recursive locking
70b51fef7af args: eliminate all recursive locking of cs_args
7d61e03c701 args: extract lock-requiring internal helpers
f82d0767713 Merge bitcoin/bitcoin#34784: ci: use latest versions of lint deps
74f71c5054f Remove Taproot activation height
a9baf19172d Merge bitcoin/bitcoin#34789: doc: update build guides pre v31
48f26e2040c Merge bitcoin/bitcoin#34751: doc: Update asmap-data repository rule for file inclusion
6b20ad84e0a doc: update build guides pre v31
b5037688192 fuzz: register PeerManager in process_message(s)
195306c359f Merge bitcoin/bitcoin#34785: ci: remove TODOs from retry
ddf2a064deb Fix compatibility with `-debuglogfile` command-line option
c08f0c3c29b ci: remove TODOs from retry
9f3752c4377 ci: use latest versions of lint deps
544c15ff4e2 Merge bitcoin/bitcoin#34759: walletdb: hash pubkey/privkey in one shot to avoid leaking secret data
9aea2905fe2 Merge bitcoin/bitcoin#34783: depends: link to upstream qt issue
fadb77169be test: Scale feature_dbcrash.py timeout with factor
3a83715c2ad depends: link to upstream qt issue
8dcd79949f1 Merge bitcoin/bitcoin#34718: Release: 31.0 translations update
5f9068bdcd1 Merge bitcoin/bitcoin#34781: test: Remove fixed TODO in address_to_scriptpubkey
eeeeb2a0b90 fuzz: Use NodeClockContext
fa4fae6227a test: Add NodeClockContext
d21afb297cd qt: 31.0 translations update
fa0587a3064 test: Remove fixed TODO in address_to_scriptpubkey
46189fd5264 doc: update http worker thread names
be6d24ec22c guix: Make guix-clean less destructive
d3056bc149f Merge bitcoin/bitcoin#34606: doc: clarify swapping impact on IBD performance
f201ccc8003 Merge bitcoin/bitcoin#34673: contrib: Update fixed seeds pre-31.0
42f97c542db Merge bitcoin/bitcoin#34705: kernel: Use fs:: namespace and unicode path in kernel tests
7691e8a005a Merge bitcoin/bitcoin#34471: refactor: Use aliasing shared_ptr in Sock::Wait
49bd12bd890 Merge bitcoin/bitcoin#34693: doc: Use relative markdown links
aefa8e6d148 Merge bitcoin/bitcoin#34361: test: clean up tx resurrection (re-org) test in feature_block.py
3a222507fd4 Merge bitcoin/bitcoin#34037: wallet, doc: clarify the coin selection filters that enforce cluster count
69baddc9103 validation: do not add the snapshot block to candidates of bg chainstate
501a3dd4ad4 walletdb: hash pubkey/privkey in one shot to avoid leaking secret data
d198635fa2d Merge bitcoin/bitcoin#34677: kernel: Chainparams and headerssync updates pre-31.0
9833ef5f861 Merge bitcoin/bitcoin#34702: doc: Fix fee field in getblock RPC result
f2f0a0ca4cd Merge bitcoin/bitcoin#34700: script: Fix undefined behavior in Clone() -- std::transform writes past end of empty vector
8825051e084 refactor: improve benchmark setup and execution for various tests
83b8528ddb1 bench: add fluent API for untimed setup steps in `nanobench`
48b952cbb67 build: bump to 31.99
1b3d58f128a docs Remove 31.0 release notes fragments
b7cf2f87d0c docs: Update bips.md
c7a3ea24830 Merge bitcoin/bitcoin#34692: Bump dbcache to 1 GiB
8b70ed69960 Merge bitcoin/bitcoin#34521: validation: fix UB in `LoadChainTip`
0ebc6891e21 depends: delete Boost extra files
168997e9b57 depends: disable Qt sbom generation
f6d3201e141 Merge bitcoin/bitcoin#33929: test: Remove `system_tests/run_command` runtime dependencies
b5737b755de Merge bitcoin/bitcoin#34650: depends: Update Qt to version 6.8.3
c0802e20be2 Merge bitcoin/bitcoin#34734: test: Fix shutdown vptr race in BlockFilterIndexSync bench
2ac4f6e019b Merge bitcoin/bitcoin#34612: leveldb: remove unused files
d97df29d5d5 Merge bitcoin/bitcoin#34747: test: Sync mempools and wait for txospender index to be synced in rpc_gettxspendingprevout
c12be53f850 Merge bitcoin/bitcoin#34635: rpc, index: txospenderindex improve formatting, docs and test coverage
8bc62ce173d doc: Update asmap-data repository rule for file inclusion
57bfa864fe6 test: use static methods and clarify comment in addr_relay
7ee8c0abc62 test: protect outbound connection from eviction in getaddr_test
ecb5ce6e76e test: fix addr relay test silent pass and wrong peerinfo index
15c4889497b index: document TxoSpenderIndex::FindSpender
f8b9595aaa9 test: Add missing txospenderindex coverage in feature_init
9316d96240f test: sock: Enable socket pair tests on Windows
cbdb891de23 test: Wait for txospender index to be synced in rpc_gettxspendingprevout
2db5c049bb3 test: Sync mempools after tx creation in rpc_gettxspendingprevout
ca45461ddb2 Merge bitcoin/bitcoin#33986: doc: improvements to doc/descriptors.md
fc39a4f5686 Merge bitcoin/bitcoin#34713: depends: Allow building Qt packages after interruption
39668f1eebd contrib: Add bash completion for new bitcoin command
32debfa1ed8 fuzz: set whitelist permissions on connman target
a1074d852a7 index, rpc, test: Misc formatting fixes
7e91060ec77 Merge bitcoin/bitcoin#34733: subprocess: replace __USING_WINDOWS__ with WIN32
69b2c813f0e Merge bitcoin/bitcoin#34591: cmake: Improve `install_name_tool` workaround
2e041b4905a help: enrich help text for `-loadblock`
f2f56193606 Merge bitcoin/bitcoin#34709: wallet, test: improve wallet functional tests
2f8f2e90011 validation: remove ConnectTrace wrapper class
083242aac81 Merge bitcoin/bitcoin#34725: fuzz: assert we accept any PSBT serialization we create
20ae9b98eab Extend functional test for setBlockIndexCandidates UB
4c40a923f00 Merge bitcoin/bitcoin#34728: test: Fix intermittent issue in wallet_assumeutxo.py
854a6d5a9a0 validation: fix UB in LoadChainTip
fa79098ce2a test: Fix shutdown vptr race in BlockFilterIndexSync bench
9249e6089ec validation: remove LoadChainTip call from ActivateSnapshot
d76ec4de148 fuzz: make sure PSBT serialization roundtrips
faa68ed4bdc test: Fix intermittent issue in wallet_assumeutxo.py
bff8a7a80d2 subprocess: replace __USING_WINDOWS__ with WIN32
e09b81638ba Merge bitcoin/bitcoin#34219: psbt: validate pubkeys in MuSig2 pubnonce/partial sig deserialization
89386e700eb kernel: Use fs:: namespace and unicode path in kernel tests
2678abe902c prevector: simplify `operator==`
01dcb2fcc58 Merge bitcoin/bitcoin#34715: test: avoid interface_ipc.py race and null pointer dereference
dc109e1b343 Merge bitcoin/bitcoin#34706: doc: Improve dependencies.md IPC documentation
0a6724aaae9 doc: Update Windows build notes
473e5f8efcd qt: Add patch to fix SFINAE warnings in QAnyStringView with gcc16
3cb4d6066b8 qt: add patches to fix SFINAE errors/warnings with gcc16
d7e972a90d5 qt: add patch to fix build with gcc16
19693a8c914 depends: Update Qt to 6.8.3
c55584575a9 cmake: Fix `FindQt` module
2eaf701bc0d Merge bitcoin/bitcoin#34679: ci: Download script_assets_test.json for Windows CI
17a04039bc5 Merge bitcoin/bitcoin#34662: ci: use LLVM/Clang 22 in tidy job
5e35a9069d6 interpreter: remove clang-tidy suppression
4089682f5cf ci: use Clang 22 in tidy task
7ea076f996d tidy: remove deprecated header
eb17f29aa57 tidy: clang-tidy is required
bf9ef4f0433 Merge bitcoin/bitcoin#34422: Update libmultiprocess subtree to be more stable with rust IPC client
b83de7f28e7 validation: remove sentinel block from ConnectTrace
d8f4e7caf0d doc: add release notes
248c175e3dc test: ensure `ValidateInputsStandardness` optionally returns debug string
d2716e9e5bc policy: update `AreInputsStandard` to return error string
2702711c3a5 Merge bitcoin/bitcoin#34642: wallet: call SyncWithValidationInterfaceQueue after disconnecting chain notifications
1c1de334e9c test: avoid interface_ipc.py race and null pointer dereference
2a7a4f608a4 depends: Allow building Qt packages after interruption
6b0a980de94 Merge bitcoin/bitcoin#34410: test: let connections happen in any order in p2p_private_broadcast.py
a61907e5d9c doc: explain swapping in `reduce-memory.md`
5c005363a88 test: improve `wallet_backup` test
04d95157485 test: improve `wallet_assumeutxo` func test
b87a1c27c99 doc: Improve dependencies.md IPC documentation
f580cc7e9f2 doc: Fix `fee` field in `getb…
…fc352cb d84fc352cb Merge bitcoin/bitcoin#35550: net_processing: fix BIP152 first integer interpretation fafff08e1f Merge bitcoin/bitcoin#35403: mining: pr 33966 followups (disentangle miner startup defaults) e12db0902b Merge bitcoin/bitcoin#34411: Full Libevent removal fa8e4700ba Merge bitcoin/bitcoin#35424: doc, wallet: align external signer documentation, reject sendtoaddress/sendmany 146b3adfaa doc: remove libevent 96d7f55f1d vcpkg: remove libevent 0443943dc0 ci: remove libevent a0ca249f3f depends: remove libevent 35d2d06797 cmake: remove libevent 6b58eb6d51 Merge bitcoin/bitcoin#35070: validation: prevent FindMostWorkChain from causing UB 6d8e15dff0 Merge bitcoin/bitcoin#35571: ci: use warp docker buildkit cache 33e3c7524f Merge bitcoin/bitcoin#35521: fuzz: Speed up `dbwrapper_concurrent_reads` harness 9c20859b5f Merge bitcoin/bitcoin#35182: Replace libevent with our own HTTP and socket-handling implementation 48df0939e7 fuzz: Remove unnecessary thread pool mutexes a4c3b003f8 fuzz: Speed up dbwrapper_concurrent_reads harness 61020b36c5 doc: add release note for #35182 replace libevent HTTP server 39e9099da5 logging: deprecate libevent category 8c1eea0777 http: remove libevent usage from this subsystem e427c227fa fuzz: switch http_libevent::HTTPRequest to http_bitcoin::HTTPRequest 21c7542cf8 http: switch servers from libevent to bitcoin cbb8d1fb33 HTTPServer: disconnect after idle timeout (-rpcservertimeout) e5f242eef3 HTTPServer: implement control methods to match legacy API 2ca645c2e4 refactor: split HTTPBindAddresses into config parse and libevent setup fec6b6bca8 refactor: split http_request_cb into libevent callback and dispatch f946ff5a0b Add helper methods to HTTPRequest to match original API dd11b5e01b define HTTP request methods at module level outside of class 7ee7df988e HTTPServer: use a queue to pipeline requests from each connected client 5ef1b80a09 Allow http workers to send data optimistically as an optimization a69bb9e1e6 HTTPServer: disconnect clients cdf71998e5 HTTPServer: compose and send replies to connected clients 6734bcdeff HTTPserver: support "chunked" Transfer-Encoding 80e1cfe5a2 HTTPServer: read requests from connected clients 3c5226ab96 HTTPServer: start an I/O loop in a new thread and accept connections 4ef4ebdc0c http: Introduce HTTPRemoteClient class a85286c5c7 HTTPServer: generate sequential Ids for each newly accepted connection 5a3aa1af28 HTTPServer: implement and test AcceptConnection() f5bc018948 http: Introduce HTTPServer class and implement binding to listening socket 9463e98781 http: Implement HTTPRequest class ad50aa4a0f http: Implement HTTPResponse class 68b5d289d1 http: Implement HTTPHeaders class 89c54ae4cb http: enclose libevent-dependent code in a namespace 5aa3629b48 util/string: LineReader should only trim \r or \r\n 0cdbb191b5 util/string: use string_view in LineReader 881d4b6c75 test: cover common HTTP attacks and common malformed requests 08a25a7231 Merge bitcoin/bitcoin#35465: coins: compact chainstate regularly 27262a2884 Merge bitcoin/bitcoin#35559: scripted-diff: Rename SteadyClockContext to FakeSteadyClock ea626c268a Merge bitcoin/bitcoin#35560: lint: Require scripted-diff script to succeed (take 2) c0922f78af Merge bitcoin/bitcoin#35567: depends: latest config.guess & config.sub b552f1713a ci: use warp docker buildkit cache 1a2523e901 Merge bitcoin/bitcoin#34937: Fix startup failure with RLIM_INFINITY fd limits 5883ba77ea Merge bitcoin/bitcoin#34764: rpc: replace ELISION references with explicit result fields f6939fd13d Merge bitcoin/bitcoin#35564: Update secp256k1 subtree to latest master 61c754ae99 Merge bitcoin/bitcoin#35512: wallet: move fAbortRescan reset into WalletRescanReserver reserve function 794befd4b0 Merge bitcoin/bitcoin#35384: util: Check write failures before renaming settings.json 8f0354995b depends: latest config.guess & config.sub 0e95e1abdb Merge bitcoin/bitcoin#35437: migrate: Handle HD chains that have identical seeds but different IDs fab2874269 lint: Require scripted-diff script to succeed 9caae50682 Update secp256k1 subtree to latest upstream 1f3f0a4e22 Squashed 'src/secp256k1/' changes from 7262adb4b4..bd0287d650 855a3fee88 scripted-diff: Rename SteadyClockContext to FakeSteadyClock 341360964a Merge bitcoin/bitcoin#35549: argsman: Fix duplicate option assertion to allow HIDDEN category registration abc33ff043 test: announce field must be 0 or 1 in sendcmpct 2d0dce0af5 net_processing: fix BIP152 first integer interpretation f963f2b675 argsman: allow duplicate registration between HIDDEN and other categories 0654511e1b util: Check write failures before renaming settings.json 1e169a8a6c Merge bitcoin/bitcoin#35548: doc: updated ci docs to reflect removal of REPO_USE_WARP_RUNNERS flag f570d7cd53 Merge bitcoin/bitcoin#35547: lint: Require scripted-diff script to succeed 744d495019 ci: updated docs to reflect removal of REPO_USE_WARP_RUNNERS flag 2a36d6a561 lint: Require scripted-diff script to succeed 0f156c16e8 Merge bitcoin/bitcoin#35470: argsman: Prevent duplicate option registration across categories 09ba59ff6b Merge bitcoin/bitcoin#35540: test: descriptor: bare multisig at TOP level with exactly 3 pubkeys is allowed 0e475098cd Merge bitcoin/bitcoin#35463: depends: Drop trailing slash from `CMAKE_INSTALL_LIBDIR` 0136e17c0a Merge bitcoin/bitcoin#35546: ci: Use GCC consistently in i686 task fae482b4e6 ci: Use GCC consistently in i686 task 32df86f1d8 argsman: Prevent duplicate option registration across categories a30ef6b91f Merge bitcoin/bitcoin#35396: ci: Rewrite broken wrap-valgrind.sh to .py 55a4c946f6 test: descriptor: bare multisig at TOP level with 3 pubkeys is allowed 9460090f1a Merge bitcoin/bitcoin#35520: lint: remove redundant test suite uniqueness check 61a0305422 Merge bitcoin/bitcoin#35526: ci: bump MSan fuzz timeout from 150 to 180 minutes 6d5c1fb3ee Merge bitcoin/bitcoin#35173: util: shorten thread names to avoid Linux truncation d3e40af259 index: shorten indexer thread names d69c46292d util: zero-pad thread number suffixes 41e531c4ab util: shorten `ThreadPool` worker names 92d812446e Merge bitcoin/bitcoin#35538: test: make TestChain100Setup's m_clock timestamp more readable 011ad6ea3c Merge bitcoin/bitcoin#35441: ci: inline runner selection 58cc2a0453 test: make TestChain100Setup's m_clock timestamp more readable 6e93ef4623 Merge bitcoin/bitcoin#35503: guix: CMake-related improvements f655d887f0 Merge bitcoin/bitcoin#35535: iwyu: Fix warning in `bench/pool.cpp` 059edf1908 guix: Fix "Ignoring empty string" CMake warning for non-Linux hosts 2d86083fd4 guix: Drop redundant CMake `--verbose` options d92a20b310 iwyu: Fix warning in `bench/pool.cpp` 6921f5df01 Merge bitcoin/bitcoin#35414: iwyu: Fix warnings in `src/bench` and treat them as error 355fffb8cc Merge bitcoin/bitcoin#35528: test: doc: remove `--perf` profiling from functional test framework 46927cf82c Merge bitcoin/bitcoin#35504: test/doc: Follow-up nits for #35269 6bc2d996b0 Merge bitcoin/bitcoin#35499: guix: add `package.sh` 87d099d5f8 Merge bitcoin/bitcoin#35519: rpc: tighten setmocktime upper bound to UINT32_MAX 04eccc2be5 Merge bitcoin/bitcoin#35043: refactor: Properly return from ThreadSafeQuestion signal + btcsignals follow-ups 2cfb10b668 Merge bitcoin/bitcoin#35498: net: move cs_main up in FetchBlock to fix rpc assert crash 9fae7e9886 test: doc: remove `--perf` profiling from functional test framework 17353f9d97 ci: bump MSan fuzz timeout debac5f2cd Merge bitcoin/bitcoin#35523: Revert "build: exclude mptest target from compile commands" 406c2348dd rpc: tighten setmocktime upper bound to UINT32_MAX d186c390f4 Revert "build: exclude mptest target from compile commands" 2447385f47 rpc: remove unused RPCResult::Type::ELISION 7a85118005 rpc: expand decodepsbt output script with explicit fields 88e2a6ae89 rpc: expand getaddressinfo embedded with explicit fields a9f9e7d17e rpc: extract fee estimate result helpers 8a615a8800 rpc: extract ListSinceBlockTxFields() helper 372ac283ac rpc: extend TxDoc() for getblock verbosity 2/3 0380a1c46b rpc: extend TxDoc() for getrawtransaction verbosity 2 946feb3f1f test: remove redundant test suite uniqueness lint b3371029dc doc: use signing pubkey instead of aggregate xonly key 4c99ed1076 Merge bitcoin/bitcoin#35418: build: exclude mptest target from compile commands 9bfdde74b5 guix: add package.sh 142e86a65c Merge bitcoin/bitcoin#35458: qa: Avoid extra tracebacks when exception is raised 216b50c9a6 Merge bitcoin/bitcoin#35179: test: Add importdescriptors rpc error coverage 77772e7a30 undo "ui: Compile boost:signals2 only once" fa45783d55 mv btcsignals.h to src/util fa4903db8a refactor: Make scoped_connection ctor explicit fa1bc1fe51 test: Check btcsignals determinism in thread_safety test case fa86e5dba9 refactor: Properly return from ThreadSafeQuestion signal fa4badc0fd refactor: Make ThreadSafeMessageBox signal void faad9d6434 refactor: Mark btcsignals operator [[nodiscard]] 2fe34808fa wallet: reject sendtoaddress and sendmany for external signers 394e473d42 coins: compact chainstate in background aa021b26f3 validation: randomly compact chainstate bd5a32f7db doc: add taproot descriptor to getdescriptors example 7131c82937 doc: clarify which commands receive --chain, --fingerprint and --stdin 4fdd4d8d29 doc: replace stale signtransaction wording with current signtx flow fab92257fe doc, rpc: document enumerate model field and fingerprint deduplication b10889d107 coins: test chainstate flush baseline c117bbc467 Merge bitcoin/bitcoin#35514: ci: Alpine 3.24 3be1115ade ci: Alpine 3.24 3b712b9d02 Merge bitcoin/bitcoin#35120: btcsignals: delete broken scoped_connection move assignment 2818a171c0 test: add abortscan unit test bc30e95163 wallet: move fAbortRescan reset into WalletRescanReserver reserve() b83a999b14 btcsignals: delete broken scoped_connection move assignment 46d0e21d75 Merge bitcoin/bitcoin#35288: ci: Bump toward Ubuntu 26.04 d0b8d445fb Merge bitcoin/bitcoin#35455: fuzz: improve dbwrapper_concurrent_reads performance d6359937bf validation: check invariants when inserting into m_blocks_unlinked 0852925bd8 test/doc: remove misleading comment and improve tests ca4a380281 test: add coverage for UB caused by FindMostWorkChain c787b3b99b validation: avoid duplicates in m_blocks_unlinked e0fb41fd2a Merge bitcoin/bitcoin#35489: fuzz: test non-max descriptor satisfaction weight 50e9f2ad33 Merge bitcoin/bitcoin#35497: test: FakeNodeClock follow-ups in unit tests 809f909e58 Merge bitcoin/bitcoin#35451: lint: Grep for `AUTO` test suites in file names 530e1f5290 Merge bitcoin/bitcoin#34636: node: allocate index caches proportional to usage patterns 8598ec2204 Merge bitcoin/bitcoin#35221: BIP 434 Support: Peer feature negotiation 526aae3768 fuzz: test non-max descriptor satisfaction weight 472b950b7f qa: Use custom assert_greater_than() over naked assert 1ce9e26239 fuzz: improve dbwrapper_concurrent_reads performance fb47793b99 Merge bitcoin/bitcoin#35168: validation: Don't add pruned blocks to `m_blocks_unlinked` on startup 53b836cdce Merge bitcoin/bitcoin#34028: p2p: Prevent integer overflow in LocalServiceInfo::nScore 3bbc3c67ad Merge bitcoin/bitcoin#35101: refactor: disable default std::hash for CTransactionRef 288018131e Merge bitcoin/bitcoin#35254: crypto: cleanse HMAC stack buffers after use and ChainCode c85e04f079 Merge bitcoin/bitcoin#35478: fuzz: reset the mockable steady clock between iterations ed11dd6a5f test: add coverage for importdescriptors when manually interrupting a wallet rescan d90d7f0a55 test: add coverage for importdescriptors errors when using assumeutxo ad388bf254 test: add coverage for importdescriptors while wallet is rescanning ddceb4e603 test: updated different_key to be different_field and also used a single assert_equal with 3 args instead of multiple assert_equals 6751a323c0 iwyu: Fix warnings in `src/bench` and treat them as error fab52281f7 refactor: Drop unused includes after iwyu CI bump fa4774d032 ci: Bump APT_LLVM_V-based task configs to Ubuntu 26.04 fa1414a36a ci: Debian Trixie -> Ubuntu 26.04 359680b74d net: move cs_main up in FetchBlock to fix rpc assert crash 4b91316643 Merge bitcoin/bitcoin#35459: guix: add setup.sh fa03852e9c test: Use SteadyClockContext in pcp_tests fa3716c439 test: Use FakeNodeClock in more places fae9623c8d test: Add FakeNodeClock m_clock to TestChain100Setup a6ed29d6c2 bench, refactor: Use `std::string_view` for `BenchRunner` ctor parameter bcbf5bae16 Merge bitcoin/bitcoin#35114: test: NodeClockContext follow-ups 543c00f47d Merge bitcoin/bitcoin#35448: ci: don't build libunwind in msan 17ed7f5060 Merge bitcoin/bitcoin#35297: p2p: Release m_peer_mutex early in InitiateTxBroadcastToAll 087f02c929 ci: skip libunwind runtime in LLVM build 6d47f7cc6f ci: use llvm 22.1.7 9868e1bf65 Merge bitcoin/bitcoin#35487: scripted-diff: Rename UNIQUE_NAME to BITCOIN_UNIQUE_NAME 577999c2ce Merge bitcoin/bitcoin#35462: test: remove unnecessary nodes from wallet_multisig_descriptor_psbt e36f5d5d0b Merge bitcoin/bitcoin#35456: test: Perform full reset of CoinsResult in order to avoid passing 21M BTC 1d3bc816c3 Merge bitcoin/bitcoin#35267: rpc: make getprivatebroadcastinfo and abortprivatebroadcast fail if privatebroadcast is not enabled fba713a28c scripted-diff: Rename UNIQUE_NAME to BITCOIN_UNIQUE_NAME 1aafd49077 Merge bitcoin/bitcoin#35359: blockstorage: Remove cs_LastBlockFile recursive mutex 84d07e471c test: add coverage for importdescriptor with an encrypted wallet ec6cf49b91 blockstorage: Remove cs_LastBlockFile recursive mutex 35a814a045 test: Limit clocks to one active instance 55e402ffef scripted-diff: Rename NodeClockContext to FakeNodeClock 1e9546fcf4 test: Use NodeClockContext in more call sites 758fea59a8 test: Drop ++ from NodeClockContext default constructor 7c2ec3949a test: Enter mocktime before peer creation in block_relay_only_eviction 0bfc5e4fff add release notes fdc9fc1df2 test: check getprivatebroadcast and abortprivatebroadcast throw if the node is running without -privatebroadcast set 7b821ef9b7 rpc: getprivatebroadcastinfo and abortprivatebroadcast throw if -privatebroadcast is disabled 5f33da9aa3 Merge bitcoin/bitcoin#35481: fuzz: fix dead HD keypaths (de)serialization round-trip 5deb053a75 fuzz: fix dead HD keypaths (de)serialization round-trip 19b32a2e18 fuzz: reset the mockable steady clock between iterations 27472a542c Merge bitcoin/bitcoin#35466: ci: run ipc functional tests in arm job f6bdbcf79d lint: Grep for `AUTO` test suites in file names b2fbd5b5dd ci: run ipc functional tests in arm job 44fc3a290d rpc: introduce HelpElision variant and ElideGroup helper 2cf2b22ff1 depends: Drop trailing slash from `CMAKE_INSTALL_LIBDIR` da74ff9ca4 test: Add functional test for BIP434 01b8a117d2 test_framework: BIP 434 support 6a129983c9 BIP434: FEATURE message support 3210fc477a net: Add AdvertisedVersion() for protocol version advertised to a peer 5b65e31270 test: remove two unnecessary nodes from the test 94ed45427c serialize: add LimitedVectorFormatter 1b3f776ebb serialize: string_view serialization 47da4f9b71 Merge bitcoin/bitcoin#35410: net: use the proxy if overriden when doing v2->v1 reconnections 54de023a7c guix: add setup.sh 0cac23b66e Merge bitcoin/bitcoin#35431: test: pass -datadir to bitcoin-cli -ipcconnect check f42226d526 qa: Silence socket.timeout exception when substituting it for a JSONRPCException 659671ac3d qa: Avoid cleanup when exception is raised e01741e6ac Merge bitcoin/bitcoin#35446: ci: use pyzmq over zmq 628816bc55 Merge bitcoin/bitcoin#35447: ci: use warpbuild cache for docker buildkit cache d0b76c7f3e rpc+bitcoin-tx: Specify correct type for ParseFixedPoint() a5050ddb6b Merge bitcoin/bitcoin#32150: coinselection: Optimize BnB exploration 082bb1a104 Merge bitcoin/bitcoin#35335: Make deployment configuration available outside of regtest in unit tests 43ca54ca00 refactor(test): Make CAmount arg explicit for BuildCreditingTransaction() b5e91e946c wallet: Remove CoinsResult::Clear() 5bd990a3dd Merge bitcoin/bitcoin#34779: BIP 323: reserve version bits 5-28 as extra nonce space 2189a6f5f2 p2p: Saturate LocalServiceInfo::nScore updates at INT_MAX 82901981bf ci: use Warp cache for Docker layers 7c2718a4b8 Merge bitcoin/bitcoin#34767: Bugfix: GUI/Intro: Handle errors from SelectParams the same as if during InitConfig 4a6d1458b4 ci: add pyzmq to msan job c21b58e263 ci: use pyzmq over zmq b28cf409a1 Merge bitcoin/bitcoin#34866: fuzz: target concurrent leveldb reads de92208c2b migrate: Handle HD chains that have identical seeds but different IDs 2669019fe8 Merge bitcoin/bitcoin#35269: musig: Include pubnonce in session id 7735c13488 test: run bitcoin-cli -ipcconnect check under valgrind with -datadir 8cb8653a22 fuzz: target concurrent leveldb reads 6609088fe6 fuzz: extract ConsumeDBParams helper 61d1c78ed4 Merge bitcoin/bitcoin#35192: wallet: unfriend LegacyDataSPKM and DescriptorScriptPubKeyMan 726e196ef2 ci: inline runner selection 2e0a36c360 Merge bitcoin/bitcoin#35439: test: Improve loopback address check in `rpc_bind.py` 53373d07c3 Merge bitcoin/bitcoin#35430: ci: use warp caching on warp runners 4731049ba4 build: exclude mptest target from compile commands 255f7c720f Merge bitcoin/bitcoin#35404: wallet: allow anti-fee-sniping in sendall RPC while not relying on RBF default c8b8c275fa test: Improve loopback address check in `rcp_bind.py` 654a5223af Merge bitcoin/bitcoin#33661: test: Add test on skip heights in CBlockIndex 19e45334bc Merge bitcoin/bitcoin#35312: kernel: assert invalid buffer preconditions in `btck_*_create` functions 107d4178d9 versionbits: update VersionBitsCache doc comment to match current behaviour 94e3ac0b21 doc: release notes and bips doc update for #34779 1d5240574a qa: test we don't warn for ignored unknown version bits deployments f802edf57c versionbits: Limit live activation params and activation warnings per BIP323 2ce4ae7d8f ci: Add dynamic cache switching to warp cache fbe628756c Merge bitcoin/bitcoin#35131: guix, refactor: Minor script cleanups and improvements bf0d257c11 net: un-default the OpenNetworkConnection()'s proxy_override argument 5a3756d150 test: add a regression test for private broadcast v1 retries 34ac53457f Merge bitcoin/bitcoin#35402: doc: Compress doc/build-unix.md dependency package names into table 10dfdd4b9f Merge bitcoin/bitcoin#35379: test: Fix feature_dbcrash.py --usecli error 214ad1761b Merge bitcoin/bitcoin#35408: ci: 35378 followups a3dc44c085 Merge bitcoin/bitcoin#35385: test: restore JSONRPCException error format 9c1fcaca5c wallet, test: fix sendall anti-fee-sniping when locktime is not specified 570a627640 kernel: assert invalid buffer preconditions in `btck_*_create` functions ac09260982 test: restore JSONRPCException error format ab35a028ed test: make reusable filling of a node's addrman 2333be9cbc test: make reusable starting a standalone P2P listener 2ffa81fac4 test: make reusable SOCKS5 server starting 6c525c2ec1 wallet: unfriend LegacyDataSPKM and DescriptorScriptPubKeyMan classes 8877eec726 wallet: allow anti-fee-sniping in sendall RPC while not relying on RBF default 13b7fffc5e Merge bitcoin/bitcoin#35011: iwyu: Fix warnings in `src/script` and treat them as errors 6183942513 ci, iwyu: Fix warnings in src/scripts and treat them as error 5700a61b73 ci: use ubuntu-latest instead of ubuntu-24.04 265563bf75 doc: remove reference to cirrus b847626562 test: refresh MiniWallet after node restart f4e643cb15 test: merge mining options in package feerate check 280ce6a0ae miner: ensure block_max_weight is flattened before limit checks 65bd3164fb mining: clarify test_block_validity comment 978e7216e6 test: use shared default_ipc_timeout 1ea532e590 Merge bitcoin/bitcoin#34953: crypto: disable ASan instrumentation of SSE4 SHA256 for GCC (matching Clang) d0a54dd8e0 Merge bitcoin/bitcoin#35381: wallet, test: optinrbf deprecation followups c6f225c757 Merge bitcoin/bitcoin#28333: wallet: Construct ScriptPubKeyMans with all data rather than loaded progressively 5486ef8cc2 Merge bitcoin/bitcoin#34198: wallet: fix ancient wallets migration fa787043f5 doc: Compress doc/build-unix.md dependency package names into table f1344e6c7f Merge bitcoin/bitcoin#35378: ci: switch to warp runners d12d8e52d2 Merge bitcoin/bitcoin#35400: doc: Remove good_first_issue.yml, Reword "Getting started" section b86c1c443d test: add coverage for migrating ancient wallets fd44d48b24 wallet: fix ancient wallets migration a34dbc836c Merge bitcoin/bitcoin#35313: Bump leveldb subtree 896eaacd91 Merge bitcoin/bitcoin#34644: mining: add submitBlock to IPC Mining interface fa51f37f18 doc: Reword the Getting-Started section 53388773af guix: Remove redundant ShellCheck `source` directives 62cf7bc53f guix, refactor: Add `BASE` argument to `*_for_host` functions 5d46429e32 guix, refactor: Move `distsrc_for_host()` to `prelude.bash` cab65ea9c6 guix, refactor: Move duplicated `profiledir_for_host()` to `prelude.bash` faa9d4345f guix, refactor: Move duplicated `outdir_for_host()` to `prelude.bash` 6b59fd6b8c guix, refactor: Remove `contains()` function d4c69a7224 guix, refactor: Remove unused `out_name()` function fad585b6e5 test: Wait for node exit after crash in verify_utxo_hash faf1475514 ci: Exclude feature_dbcrash.py under --v2transport --usecli fac27d702f test: Fix feature_dbcrash.py --usecli intermittent error fa09de8b68 test: [refactor] Simplify submit_block_catch_error f701cd159a doc: fix typo in release notes of #34917 7bc39e3d08 wallet, test: add wallet_deprecated_rbf.py for walletrbf deprecated keys & options 2cbbcb5659 wallet, test: remove -deprecatedrpc=bip125 from wallet_send.py 307134bd7e wallet, test: remove -deprecatedrpc=bip125 from wallet_migration.py 3ec550d168 wallet, test: remove -deprecatedrpc=bip125 from wallet_basic.py a52ea9bff9 wallet, test: remove -walletrbf startup option from wallet_backwards_compatibility.py e3f5c18913 Merge bitcoin/bitcoin#34948: guix: Split manifest into build and codesign manifests a9ac680af3 build: remove FALLTHROUGH_INTENDED from leveldb.cmake 4d58c3271c build: remove -Wno-conditional-uninitialized from leveldb build 5fe0615f7a Update leveldb subtree to latest upstream 58cdb5c2e8 Squashed 'src/leveldb/' changes from ab6c84e6f3..a7f9bdc611 4bdd46ace3 ci: switch runners from cirrus to warpbuild fab5733f5d doc: Remove good_first_issue.yml fa98d44951 ci: Rewrite broken wrap-valgrind.sh to .py 00af5620f0 Merge bitcoin/bitcoin#35206: doc: fix doxygen links to threads in developer-notes.md faf7e38973 ci: refactor: Avoid warning: INSTALL_BCC_TRACING_TOOLS: unbound variable 85c27c9de5 Merge bitcoin/bitcoin#35394: test: remove unnecessary rpc calls from feature_dbcrash 42330922dd wallet, test: remove -walletrbf startup option from wallet_backwards_compatibility.py 8cb6e405d8 wallet, test: remove -walletrbf startup option from wallet_listtransactions.py 0ee94b2fef wallet, test: remove -deprecatedrpc=bip125 from wallet_listtransactions.py 5e833e068d wallet, test: -walletrbf startup option from wallet_bumpfee.py a2a2b1745f wallet, test: remove -walletrbf startup option from rpc_psbt.py 615c0aefa8 Merge bitcoin/bitcoin#35391: test: Use operator<< for time_points instead of manual TickSinceEpoch c17cc76a18 test: speed up feature_dbcrash 0687438e94 Merge bitcoin/bitcoin#35372: refactor: Enhance type safety in overflow operations fad4f417d1 test: Use operator<< for time_points instead of manual TickSinceEpoch d846444d01 guix: Split manifest into build and codesign manifests 0b9e10ad40 guix: Update `python-signapple` and wrap with OpenSSL paths 3962138cc0 test: add IPC submitBlock functional test 5b60f69e40 mining: add submitBlock IPC method to Mining interface 813b4a80d7 refactor: introduce SubmitBlock helper a3fe455a95 wallet: refactor to read -walletrbf only once instead of twice 9c15022260 Merge bitcoin/bitcoin#35337: doc: add feature deprecation and removal process to developer notes a4157fc24a Merge bitcoin/bitcoin#33966: refactor: disentangle miner startup defaults from runtime options ac9424fdc6 Merge bitcoin/bitcoin#35145: validation: fix misleading VerifyDB summary log 9767e80b21 Merge bitcoin/bitcoin#35296: doc: Fix broken links in dev notes, move sections 9ec4efebd1 Merge bitcoin/bitcoin#35015: bitcoin-cli: note -rpcclienttimeout is not implemented for IPC connections b43a936355 Merge bitcoin/bitcoin#33974: cmake: Check dependencies after build option interaction d5188b5592 Merge bitcoin/bitcoin#35363: test: Allow --usecli in more tests 743bf350f2 Merge bitcoin/bitcoin#35049: test: remove circular dependency between authproxy and util fa24693819 test: Allow --usecli in tests that already support it fa8d4d5c35 test: Catch CalledProcessError to support --usecli in feature_dbcrash.py faf0f848ef test: use echojson to allow rpc_named_arguments.py --usecli faf993ee44 test: Stop node before modifying config to support rpc_users.py --usecli dd0dea3e89 Merge bitcoin/bitcoin#34917: wallet: mark bip125-replaceable RPC key and walletrbf startup option as deprecated acea6f2caf Merge bitcoin/bitcoin#35251: wallet: Fix for duplicate external signers case 801e3bfe38 chainparams: add overloads for RegTest and SigNet with no options 4995c00a9c chainparams: make deployment configuration available on all test networks 0774eaaf0c util: Require integers for SaturatingAdd() and AdditionOverflow() 32d072a49f doc: add release notes for #35319 d01b461f71 net: ensure no direct private broadcast connections fd230f942d net: use the proxy if overriden when doing v2->v1 reconnections a815e3e262 rpc: Correct type for tx_sigops 7be0d6fa18 test: remove the lazy import of util in authproxy 779f444680 test: move out JSONRPCException from authproxy to util de925455c8 Merge bitcoin/bitcoin#35141: fuzz: apply node context reset pattern to p2p_handshake 2e9fdcc6da doc: add feature deprecation and removal process to developer notes fa4fc8c1d7 test: Set TestNode url field early, so that feature_loadblock.py --usecli works 5faf2ad880 doc: add release notes for deprecation of wallet rbf & bip125 fields aba24a9b62 wallet: remove "RPC Only" from -walletrbf option help description 9f7b08c61c Merge bitcoin/bitcoin#35334: test: Allow --usecli in more tests b9f0040caf Merge bitcoin/bitcoin#34614: ci: Put space and non-ASCII char in scratch dir f28cd7587b Merge bitcoin/bitcoin#35348: ci: switch to GitHub cache for all runners 59918de329 Merge bitcoin/bitcoin#34801: ci: Enable pipefail in 03_test_script.sh e4f033789c Merge bitcoin/bitcoin#35324: test: Document rare failure in test_inv_block better 033a56ccb2 Merge bitcoin/bitcoin#34342: cli: Replace libevent usage with simple http client c03107acf5 ci: switch to GitHub cache for all runners 908cc9d30b Merge bitcoin/bitcoin#35344: kernel: improve BITCOINKERNEL_WARN_UNUSED_RESULT usage e91f8713ac Merge bitcoin/bitcoin#35349: ci: Fix `path` input for vcpkg downloads cache 1e5d3b4f0d doc: add release note for mining option validation 0317f52022 ci: enforce iwyu for touched files 8c58f63578 refactor: have mining files include what they use 3bb6498fb0 mining: store block create options in NodeContext 4637cd157d mining: reject invalid block create options 8daac1d6eb mining: add block create option helpers 128da7c3ff miner: add block_max_weight to BlockCreateOptions fa81e51eae mining: parse block creation args in mining_args 020166080c mining: use interface for tests, bench and fuzzers 44082bea47 interfaces: make Mining use const NodeContext d4368e059c move-only: add node/mining_types.h 6aeb1fbea2 test: cover IPC blockmaxweight policy 63b23ea1e9 test: regression test for waitNext mining policy 24750f8b31 test: add createNewBlock failure helper 63ee9cd15b test: misc interface_ipc_mining.py improvements faf02674b3 refactor: Set TestNode.cli only after RPC is connected fae376cafb refactor: Inline get_rpc_proxy fa00c7c7a4 test: Allow rpc_bind.py --usecli fa8f25118c refactor: Use create_new_rpc_connection in wallet_multiwallet.py fa3ae6c7d3 test: Allow feature_shutdown.py --usecli fa2a3683d5 test: Allow mining_getblocktemplate_longpoll.py --usecli 735b1cf431 Merge bitcoin/bitcoin#34806: refactor: logging: Various API improvements a56b4ead41 Merge bitcoin/bitcoin#35017: mempool: remove all subsequent tx in pkg on failure 00e9df90c8 Merge bitcoin/bitcoin#35333: qa: use NORMAL_GBT_REQUEST_PARAMS consistently in functional tests 37d7ce47c5 Merge bitcoin/bitcoin#35350: test: suppress ECONNABORTED in wait_for_rpc_connection on Windows 18c1cc65e9 kernel: improve BITCOINKERNEL_WARN_UNUSED_RESULT usage 7209eb7790 test: suppress ECONNABORTED in wait_for_rpc_connection on Windows 0553ce5ddb Merge bitcoin/bitcoin#35316: musig: Reject empty pubkey list in GetMuSig2KeyAggCache e4f1e43103 ci: Fix `path` input for vcpkg downloads cache fa99a3ccac ci: Enable pipefail in 03_test_script.sh d61053d97b build: Drop libevent from bitcoin-cli link libraries 798d051c80 cli: Remove libevent usage ca5483a662 qa: use NORMAL_GBT_REQUEST_PARAMS consistently bd0942bbd9 Merge bitcoin/bitcoin#34887: fuzz: target CDBWrapper 2940053761 Merge bitcoin/bitcoin#33223: coinselection: Tiebreak SRD eviction by weight 5ccb698f53 Merge bitcoin-core/gui#936: Remove opt-in RBF 211e1053bf Merge bitcoin/bitcoin#32220: cmake: Get rid of undocumented `BITCOIN_GENBUILD_NO_GIT` environment variable ecf20317cb Merge bitcoin/bitcoin#35270: doc: Document minimum versions for Xcode CLT and MSVC 97f7cc0233 wallet: mark -walletrbf startup option as deprecated c4a7613e6a wallet: mark `bip125-replaceable` key as deprecated in transaction RPCs 8ee5622455 Merge bitcoin/bitcoin#35338: qa: regenerate hardcoded regtest chain for kernel lib unit tests 131fa570b9 test: Add test for BuildSkip() and skip heights c6dbf3158b Merge bitcoin/bitcoin#35304: kernel: doc: document wipe lifecycle and best entry nullability f05b1a3532 rpc: Fix for duplicate external signers case 98f706c698 qa: regenerate hardcoded regtest chain for kernel lib unit tests ac9aa71b7f mempool: remove all subsequent tx in pkg on failure df7ed5f355 chainparams: encapsulate deployment configuration logic b63ef20d54 test: add fuzz harness for CDBWrapper 32169c3855 dbwrapper: accept optional testing leveldb::Env in DBParams 8d390c93fc dbwrapper: make max_file_size a configurable DBParams field 376e7ef07c util: Expose IOErrorIsPermanent in sock header b796bf44f3 Merge bitcoin/bitcoin#35228: wallet: use `outpoint` when estimating input size 3158b890e1 Merge bitcoin/bitcoin#33765: doc: update interface, --stdin flag, `signtx` (#31005) 21edcc47e2 Merge bitcoin/bitcoin#35328: test: restore assertion that tx contains exactly 2500 sigops 5d562430de netbase: Add timeout parameter to ConnectDirectly fa37c6a529 test: [move-only] Extract create_new_rpc_connection a988ac592f cli: Add HTTPResponseHeaders class for parsing response headers ae73b69b52 test: restore assertion that tx contains exactly 2500 sigops a7df1bd7ca Merge bitcoin/bitcoin#34537: crypto: fix incorrect variable names in SHA-256 ARM intrinsics 5570b86fa7 Merge bitcoin/bitcoin#33160: bench: Add more realistic Coin Selection Bench 239424064b Merge bitcoin/bitcoin#35189: kernel: document validation state outputs as overwritten in-place 0358c26d42 kernel: document overwritten validation state outputs 489da5df60 Merge bitcoin/bitcoin#33856: kernel: Refactor process_block_header to return btck_BlockValidationState fa89098888 test: Document rare failure in test_inv_block better ce2044a91d Merge bitcoin/bitcoin#33362: Run feature_bind_port_(discover|externalip).py in CI 2284288e9a Merge bitcoin/bitcoin#35279: psbt, test: remove address type restrictions in test 278b9e39df Merge bitcoin/bitcoin#34934: fuzz: exercise ForNode/ForEachNode callbacks in connman fuzz harness 88d9bc5aa4 kernel: Return btck_BlockValidationState from process_block_header API ed15e14b63 Merge bitcoin/bitcoin#35193: test: avoid non-loopback network traffic from node_init_tests/init_test 4f348c2d73 Merge bitcoin/bitcoin#28802: ArgsManager: support command-specific options c7056ff03f Merge bitcoin/bitcoin#34893: psbt: preserve proprietary fields when combining PSBTs 8ce84321ce musig: Reject empty pubkey list in GetMuSig2KeyAggCache b2a3ca3df9 Merge bitcoin/bitcoin#35117: i2p: clean up SESSION CREATE error logging 7802e578c3 Merge bitcoin/bitcoin#34860: mining: always pad scriptSig at low heights, drop include_dummy_extranonce da769855d0 test: add PSBT proprietary merge regression coverage 3f5b3c7a80 psbt: preserve proprietary fields when combining PSBTs 6189335f6b kernel: doc: document wipe lifecycle and best entry nullability ed1795aa17 Merge bitcoin/bitcoin#35285: bench: add benchmark for GetMappedAS() 379b9fbf03 Merge bitcoin/bitcoin#34225: refactor, key: move `CreateMuSig2{Nonce,PartialSig}` functions to `musig.{h,cpp}` module c471c5085b common: Add unused UrlEncode function 9687ef1bd9 ci: Tolerate unused free functions in intermediate commits 02b2c41103 logging: use util/log.h where possible 57d7495fe5 IWYU fixes 611878b46f scripted-diff: logging: Drop LogAcceptCategory 34332dba2f util/log, logging: Provide ShouldDebugLog and ShouldTraceLog instead of a generic ShouldLog abea304dd6 logging: Move GetLogCategory into Logger class 58113e5833 util/log: Rename LogPrintLevel_ into detail_ namespace f69d1ae56d util/log: Provide util::log::NO_RATE_LIMIT to avoid rate limits 72e92d67df logging: Protect ShrinkDebugFile by m_cs faf6afd99d doc: Move mutex and thread section into guideline section fa514caad7 doc: move-only Valgrind section fa0202f31d doc: move-only Python section fa37606c65 doc: Regroup clang-tidy rules fa9c2ddea9 doc: Fix to use lower-case anchors in links to C++ Core Guidelines a154c05d49 cmake: Check dependencies after build option interaction 096bb0b5c0 bench: add benchmark for GetMappedAS() b6c3670442 i2p: clean up SAM error logging 1c500b1709 test: avoid non-loopback network traffic from node_init_tests/init_test fa2afba28b p2p: Release m_peer_mutex early in InitiateTxBroadcastToAll 3381855e51 doc: external signer: update interface, --stdin flag, IPC-command signtx, contains updates from #33947 ddb94fd3e1 Merge bitcoin/bitcoin#35289: fuzz: Fix timeout in `txorphan` 3142e5f8cf doc: Add release notes for #32220 b71cd5c162 cmake: Skip using git when building from source tarball or as subproject fe941938e8 cmake: Remove unnecessary `BITCOIN_GENBUILD_NO_GIT` environment variable 9a2cced23a cmake, refactor: Move `find_package(Git)` to `src/CMakeLists.txt` 3cab711d69 Merge bitcoin/bitcoin#35284: fuzz: use ImmediateBackgroundTaskRunner to silence DEBUG_LOCKORDER 004a7e3cfb fuzz: Fix txorphan timeout by limiting block weight 7777a92a92 ci: Use path with spaces on windows as well fac6c4270d ci: Put space and non-ASCII char in scratch dir fa38759823 ci: Require $FILE_ENV cad5f56045 Merge bitcoin/bitcoin#29136: wallet: `addhdkey` RPC to add just keys to wallets via new `unused(KEY)` descriptor 9961229360 Merge bitcoin/bitcoin#31298: rpc: combinerawtransaction now rejects unmergeable transactions c680cfe343 Merge bitcoin/bitcoin#35123: wallet: remove outdated arguments from chain scanning methods a145fa881a Merge bitcoin/bitcoin#35156: dbwrapper: reuse scratch `DataStream` buffers 04003e1fa3 Merge bitcoin/bitcoin#35274: doc: clarify libfuzzer-nosan preset uses build_fuzz_nosan dir 5309c90542 Merge bitcoin/bitcoin#35283: doc: mention -DWITH_ZMQ=ON in BSD build guides 90eda67bb8 Remove opt-in RBF fa3d7ce11c doc: Document minimum versions for Xcode CLT and MSVC 2ef6679c2c test: Check that MuSig2 signing does not reuse nonces 8544537f41 mining: drop unused include_dummy_extranonce option 58eeab790d mining: only pad with OP_0 at heights <= 16 00d22328b0 mining: pad coinbase to fix createNewBlock at heights <=16 801d36f55b fuzz: use ImmediateBackgroundTaskRunner to silence DEBUG_LOCKORDER ca93ab808c doc: mention -DWITH_ZMQ=ON in BSD build guides 605ff37403 test: bad-cb-length for createNewBlock() at low heights 1966621b76 test: refactor IPC mining test to use script_BIP34_coinbase_height 8ba5f68b1d refactor, key: move `CreateMuSig2PartialSig` to `musig.{h,cpp}` module d087f266fc refactor, key: move `CreateMuSig2Nonce` to `musig.{h,cpp}` module f36d89f436 key: add `GetSecp256k1SignContext` access function 0065f354a7 doc: clarify libfuzzer-nosan preset uses build_fuzz_nosan dir 81348576cc psbt, test: remove address type restrictions in test 82733e61de Merge bitcoin/bitcoin#35277: ci: Enable ruff ambiguous-unicode-character checks fe2bb43e43 Merge bitcoin/bitcoin#35044: contrib: Fix NameError in signet miner gbt() fa9c919678 refactor: Use ignore-list over verbose select-list cd8d3bd937 wallet: use outpoint when estimating input size fa9b01adec ci: Enable ruff ambiguous-unicode-character checks 09a9bb3536 Merge bitcoin/bitcoin#34547: lint: modernise lint tooling 21a1380c13 key: cleanse ChainCode on destruction bb05986c0a musig: Include pubnonce in session id 3f44f9aef7 test: Add coverage for m_blocks_unlinked invariant in LoadBlockIndex 10ca73c02c Merge bitcoin/bitcoin#34580: build: Add a compiler minimum feature check 1af8e0c4e8 Merge bitcoin/bitcoin#35183: doc: recommend script_flags instead of deployments.taproot f24a7b5f75 doc: recommend script_flags instead of deployments.taproot ccbd00ab87 Merge bitcoin/bitcoin#35152: doc: clarify local IWYU workflow and pragmas b3a3f88346 crypto: cleanse HMAC stack buffers after use 88bfe89793 Merge bitcoin/bitcoin#35227: wallet: check the final BDB page LSN during migration 21599ea612 Merge bitcoin/bitcoin#35241: cmake: Set `CTEST_NIGHTLY_START_TIME` for CDash Nightly pipelines d406cffafd Merge bitcoin/bitcoin#34228: depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script 4defc466a2 cmake: Set `CTEST_NIGHTLY_START_TIME` for CDash Nightly pipelines 1f28ed6b6a Merge bitcoin/bitcoin#35235: contrib: mv verify-commits/pre-push-hook.sh to maintainer tools repo 8396b7f2a3 Merge bitcoin/bitcoin#35236: doc: typo roundup 2b7f5914c4 Merge bitcoin/bitcoin#35222: cmake: add CTestConfig.cmake 888857c551 mv contrib/verify-commits/pre-push-hook.sh to maintainer tools repo d9b57eecad doc: fix whitespace in build-osx.md e7d4a7e3f9 doc: fix stale autotools reference and SQLite typo 3f9c55426a Merge bitcoin/bitcoin#35230: ci: Move --usecli --extended from i386 task to alpine task fad61896e8 ci: Move --usecli --extended from i386 task to alpine task 7c84a2bdb1 Merge bitcoin/bitcoin#35219: doc: Add my key to SECURITY.md cf5c962a39 Merge bitcoin/bitcoin#34991: test: fix feature_index_prune.py bug when using --usecli 6690117c7a Merge bitcoin/bitcoin#35218: test: fix `P2SH` script in coins cache fuzz target 5b11108145 Merge bitcoin/bitcoin#35223: refactor: [rpc] Remove confusing and brittle integral casts (take 3) e2b0984f99 wallet: check BDB last page LSN d5adb9d09b doc: fix doxygen links to threads in developer-notes.md fa864b937e refactor: [rpc] Remove confusing and brittle integral casts (take 3) 9f7a2293c4 depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script 086894098e cmake: add CTestConfig.cmake 0651a1fc15 doc: Add Niklas Goegge's key to SECURITY.md ac58e6c53c test: fix P2SH output in coins cache fuzz aa1d0d7cd7 Merge bitcoin/bitcoin#35209: validation: correct lifetime of precomputed tx data 0429c503fb bench: Replace Coin Selection bench ec1eefda77 bench: Remove unnecessary wallet parameter e6c4ffb956 bench: Fix type mismatch d7ed2840ac Merge bitcoin/bitcoin#21283: Implement BIP 370 PSBTv2 1ed799fb21 validation: correct lifetime of precomputed tx data 371eac8069 fuzz: exercise ForNode/ForEachNode callbacks in connman fuzz harness 08c3c37d12 bitcoin-cli: note -rpcclienttimeout is not implemented for IPC connections c89c8ddbb3 Merge bitcoin/bitcoin#33300: fuzz: compact block harness 4bf1701f58 Merge bitcoin/bitcoin#33796: kernel: Expose `CheckTransaction` consensus validation function 999e9dbfb4 Merge bitcoin/bitcoin#35202: ci: restore sockets in `i686, no IPC` job 5a2e359213 clarify blockfilterindex cache allocation rationale 224120bf12 Merge bitcoin/bitcoin#32394: net: make m_nodes_mutex non-recursive 11c9ef92a8 ci: unconfine seccomp for i686 no IPC 86718e4589 scripted-diff: rename ABEF_SAVE/CDGH_SAVE to ABCD_SAVE/EFGH_SAVE in SHA-256 ARM intrinsics 8f4a3ba897 Merge bitcoin/bitcoin#35165: cmake: Remove NetBSD-specific workaround from `add_boost_if_needed` b1ff4773ba Merge bitcoin/bitcoin#34544: wallet: Disallow wallet names that are paths including `..` and `.` elements db98e357d3 Merge bitcoin/bitcoin#35018: wallet, bench: Use Nanobench setup() for wallet benchmarks, and remove DuplicateMockDatabase 18d003c3dc Merge bitcoin/bitcoin#34916: contrib: override system locale in gen-manpages.py 567ff2b6d6 Merge bitcoin/bitcoin#33196: docs: clarify RPC credentials security boundary 3c2646eacc Merge bitcoin/bitcoin#34026: fuzz: Add tests for `CCoinControl` methods bfbf1a7ef3 kernel: Expose btck_transaction_check consensus function 404470505a Merge bitcoin/bitcoin#34256: test: support `get_bind_addrs` and `feature_bind_extra` on macOS & BSD 25100fc28d Merge bitcoin/bitcoin#35186: util, iwyu: Add missed header d28179bac9 util, iwyu: Add missed header 32e479f7a5 Merge bitcoin/bitcoin#34669: feefrac: drop comparison and operator{<<,>>} for sorted wrappers 11713c9fa9 net: make CConnman::m_nodes_mutex non-recursive aec4fa2de0 net: drop the only recursive usage of CConnman::m_nodes_mutex eed7af666b doc: Add release note for disallowing some wallet path names 3d7f0e4ed5 wallettool: Use GetWalletPath to determine the wallet path ef499680c8 Merge bitcoin/bitcoin#34176: wallet: crash fix, handle non-writable db directories a39cc16b43 doc: Release note for addhdkey 89b9a01b4e wallet, rpc: Disallow importing unused() to wallets without privkeys 35bbee6374 wallet, rpc: Disallow import of unused() if key already exists f3f8bcbd1d wallet: Add addhdkey RPC 9fa4076b20 test: Test merging implicit PSBTv0 with explicit PSBTv0 1660c18232 doc: Release notes for psbtv2 470e52a5f8 fuzz: Enforce additional version invariants in PSBT fuzzer 5bd0579c09 test: Tests for PSBT AddInput and AddOutput b8b6e7f0c2 tests: Add PSBT unit test for ComputeTimeLock 0bc1c2e508 tests: Add test vectors from BIP 370 e0e4dbdeb5 psbt: Change default psbt version to 2 bcc1dca77b Add psbt_version to PSBT RPCs and default to v2 ab38c30195 Implement PSBTv2 field merging 93e339e29f Implement PSBTv2 AddInput and AddOutput b39c86ae60 Allow specifying PSBT version in constructor dcc9a3c8df Implement PSBTv2 in decodepsbt 5770dbd39f Add PSBT::ComputeLockTime() 863cf47b33 Update test_framework/psbt.py for PSBTv2 925161eaf0 Implement PSBTv2 fields de/ser d9cf658ee0 Restrict joinpsbts to PSBTv0 only 3da0e16012 Replace PSBT.tx with PSBT::GetUnsignedTx and PSBT::GetUniqueID c568624ff2 psbt: Return std::optional from PrecomputePSBTData 092de4f1f6 Replace PSBT::GetInputUTXO with PSBTInput::GetUTXO 1d1ae6f0c4 wallet, test: Remove DuplicateMockDatabase 82bc280de4 test: Simple test for importing unused(KEY) 80c29bc6f1 descriptor: Add unused(KEY) descriptor 82c9fe3179 psbt: Use PSBTInput and PSBTOutput fields instead of accessing global tx 95897507e9 psbt: AddInput and AddOutput should take only PSBTInput and PSBTOutput 1b7d323a72 Add PSBTInput::GetOutPoint 543d3e1cdc psbt: add PSBTv2 global tx fields c01c7f068c psbt: Remove default constructor 9671aa08c2 psbt: add tx input and output fields in PSBTInput and PSBTOutput 990b084f11 Have PSBTInput and PSBTOutput know the PSBT's version 7eacc21ff6 psbt: make PSBT structs into classes f926c326bb gui: Store PSBT in std::optional in PSBTOperationsDialog 1e2d146b47 psbt: Refactor duplicate key lookup and size checks 88384180d3 test: PSBTs should roundtrip through RPCs that do nothing 001877500d test: construct psbt with unknown field programmatically 0cb884e6df psbt: Fill hash preimages and taproot builder from SignatureData 57820c472b bench: Utilize setup() for WalletLoading and use a real database 9a7604fd25 bench: Use setup() in WalletMigration to prepare the legacy wallet 426a94e7bd bench: Utilize setup() in WalletEncrypt to create the encryption wallet d672455d20 bench: Utilitze setup() in WalletBalance for marking caches dirty 61412ef887 bench: Utilize setup() in WalletCreate to cleanup previous wallets 451fdd26a4 test: wallet: Constructing a DSPKM that can't TopUp() throws. 32946e0291 wallet: Setup new autogenerated descriptors on construction e20aaff70f wallet: Construct ExternalSignerSPKM with the new descriptor aa4f7823aa wallet: include keys when constructing DescriptorSPKM during import 6538f69135 fuzz: Skip adding descriptor to wallet if it cannot be expanded 8be5ee554b test: wallet: Check that loading wallet with both unencrypted and encrypted keys fails. 80b0c25992 wallet: Load everything into DescSPKM on construction f713fd1725 refactor: wallet: Don't reuse WALLET_BLANK flag for born-encrypted wallets. cd912c4e10 wallet: Consolidate generation setup callers into one function 0301c758ea wallet migration, fuzz: Migrate hd seed once 2424e52836 lint: doc: detail lint tool install methods 5fefa5a654 Don't pin Python patch version fd15b55c2e lint: use requirements.txt 5f4d3383da lint: switch to ruff for formatting and linting a53b81ce4e lint: switch to uv for python management in linter 2b0dc0d228 wallet: Disallow . and .. from wallet names d084bc88be doc: clarify IWYU workflow 7c7cec4567 ci: update IWYU patch reference 75cf9708a0 ci: add one more routable address to the VMs (docker containers) 1b93983bf5 test: make feature_bind_port_(discover|externalip).py auto-detect the skip condition 032223f403 dbwrapper: reuse iterator scratch stream 7403c0f907 dbwrapper: guard `CDBBatch` scratch streams cb1ab0a716 test: cover repeated dbwrapper stream use 31ce729b28 streams: add `ScopedDataStreamUsage` 0e4b0bacec validation: Don't add pruned blocks to m_blocks_unlinked on startup c8d688f41c fuzz: send blocktxn messages in cmpctblock harness d0333bfe99 fuzz: send compact blocks in cmpctblock harness 3c58efe2ac fuzz: mine blocks and send headers for them in cmpctblock harness 651622432d fuzz: create and send transactions in cmpctblock harness 8c9a3fd0e8 net, fuzz: move CMPCTBLOCK_VERSION to header, use in cmpctblock harness 6cd480f62f fuzz: initial compact block fuzz harness 1d66963749 log: clarify VerifyDB summary log a9301cfa07 refactor: disable default std::hash for CTransactionRef 47d68cd981 ci: backport iwyu PR 2013 std::hash mapping e2ef54b8ba cmake: Remove NetBSD-specific workaround from `add_boost_if_needed` 6d86184a8b rpc: combinerawtransaction now rejects unmergeable transactions 08925d5ee7 test: add coverage for loading a wallet in a non-writable directory 0218966c0d test: add coverage for wallet creation in non-writable directory bc0090f1d6 wallet: handle non-writable db directories a49bc1e24e ci: add --extended when using --usecli 904c0d07bb util/stdmutex: Drop StdLockGuard 735b25519a support: clamp RLIMIT_MEMLOCK to size_t 8ab4b9fc85 init: clamp fd limits to int 4afbabdcef Fix startup failure with RLIM_INFINITY fd limits 89af67d79f tests: Add some fuzz test coverage for command-specific args 92df785859 tests: Add some test coverage for ArgsManager::AddCommand 33c8090be9 ArgsManager: automate checking for correct command options 186354a0d8 bitcoin-wallet: use command-specific options d21e82b7d6 ArgsManager: support command-specific options dfe5d6a81d fuzz: apply node context reset pattern to p2p_handshake dc84a31014 wallet: remove fUpdate argument from AddToWalletIfInvolvingMe 94845df073 wallet: remove update_tx argument from SyncTransaction 6e796e1f47 wallet: remove fUpdate argument from ScanForWalletTransactions 54e4c0be8f wallet: remove update argument from RescanFromTime method 701bc2dc02 contrib: Fix NameError in signet miner gbt() 7249b376a0 opt: Skip UTXOs with worse waste, same eff_value 5204291860 opt: Skip evaluation of equivalent input sets ba1807b981 coinselection: Track effective_value lookahead fa226ab902 coinselection: BnB skip exploring high waste 7ecea1dc5d coinselection: Track whether BnB completed 3ca0f36164 coinselection: rewrite BnB in CoinGrinder-style 2e73739837 coinselection: Track BnB iteration count in result eff9e798b9 coinselection: Tiebreak SRD eviction by weight d06dabf26b node: allocate index caches proportional to usage patterns 1950da94fc test: enable `rpc_bind` on macOS and BSD 7236a05503 test: enable `feature_bind_extra` on macOS and BSD 5603ae0ffa test: fix send_batch_request to pass callables when using --usecli fedeff7f20 crypto: disable ASan instrumentation of SSE4 SHA256 for GCC 758f208cc1 contrib: override system locale in gen-manpages.py 2104282ddd fuzz: Add tests for CCoinControl methods 43b09b993d fuzz: Improve oracle for existing CCoinControl tests ac1ccc5bd9 build: Add CTAD feature check 9f273f1c1c build: Add path to doc recommended versions for CLANG, GCC and MSVC 55d37546fa Bugfix: GUI/Intro: Handle errors from SelectParams the same as if during InitConfig 1aa78cdab6 clusterlin: adopt STL ranges algorithms (refactor) 747da25360 feefrac: drop comparison and operator{<<,>>} for sorted wrappers 938312d7a6 docs: clarify RPC credentials security boundary git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: d84fc352cbc1363df5cd6024a22e73fc63283e4f
…fc352cb d84fc352cb Merge bitcoin/bitcoin#35550: net_processing: fix BIP152 first integer interpretation fafff08e1f Merge bitcoin/bitcoin#35403: mining: pr 33966 followups (disentangle miner startup defaults) e12db0902b Merge bitcoin/bitcoin#34411: Full Libevent removal fa8e4700ba Merge bitcoin/bitcoin#35424: doc, wallet: align external signer documentation, reject sendtoaddress/sendmany 146b3adfaa doc: remove libevent 96d7f55f1d vcpkg: remove libevent 0443943dc0 ci: remove libevent a0ca249f3f depends: remove libevent 35d2d06797 cmake: remove libevent 6b58eb6d51 Merge bitcoin/bitcoin#35070: validation: prevent FindMostWorkChain from causing UB 6d8e15dff0 Merge bitcoin/bitcoin#35571: ci: use warp docker buildkit cache 33e3c7524f Merge bitcoin/bitcoin#35521: fuzz: Speed up `dbwrapper_concurrent_reads` harness 9c20859b5f Merge bitcoin/bitcoin#35182: Replace libevent with our own HTTP and socket-handling implementation 48df0939e7 fuzz: Remove unnecessary thread pool mutexes a4c3b003f8 fuzz: Speed up dbwrapper_concurrent_reads harness 61020b36c5 doc: add release note for #35182 replace libevent HTTP server 39e9099da5 logging: deprecate libevent category 8c1eea0777 http: remove libevent usage from this subsystem e427c227fa fuzz: switch http_libevent::HTTPRequest to http_bitcoin::HTTPRequest 21c7542cf8 http: switch servers from libevent to bitcoin cbb8d1fb33 HTTPServer: disconnect after idle timeout (-rpcservertimeout) e5f242eef3 HTTPServer: implement control methods to match legacy API 2ca645c2e4 refactor: split HTTPBindAddresses into config parse and libevent setup fec6b6bca8 refactor: split http_request_cb into libevent callback and dispatch f946ff5a0b Add helper methods to HTTPRequest to match original API dd11b5e01b define HTTP request methods at module level outside of class 7ee7df988e HTTPServer: use a queue to pipeline requests from each connected client 5ef1b80a09 Allow http workers to send data optimistically as an optimization a69bb9e1e6 HTTPServer: disconnect clients cdf71998e5 HTTPServer: compose and send replies to connected clients 6734bcdeff HTTPserver: support "chunked" Transfer-Encoding 80e1cfe5a2 HTTPServer: read requests from connected clients 3c5226ab96 HTTPServer: start an I/O loop in a new thread and accept connections 4ef4ebdc0c http: Introduce HTTPRemoteClient class a85286c5c7 HTTPServer: generate sequential Ids for each newly accepted connection 5a3aa1af28 HTTPServer: implement and test AcceptConnection() f5bc018948 http: Introduce HTTPServer class and implement binding to listening socket 9463e98781 http: Implement HTTPRequest class ad50aa4a0f http: Implement HTTPResponse class 68b5d289d1 http: Implement HTTPHeaders class 89c54ae4cb http: enclose libevent-dependent code in a namespace 5aa3629b48 util/string: LineReader should only trim \r or \r\n 0cdbb191b5 util/string: use string_view in LineReader 881d4b6c75 test: cover common HTTP attacks and common malformed requests 08a25a7231 Merge bitcoin/bitcoin#35465: coins: compact chainstate regularly 27262a2884 Merge bitcoin/bitcoin#35559: scripted-diff: Rename SteadyClockContext to FakeSteadyClock ea626c268a Merge bitcoin/bitcoin#35560: lint: Require scripted-diff script to succeed (take 2) c0922f78af Merge bitcoin/bitcoin#35567: depends: latest config.guess & config.sub b552f1713a ci: use warp docker buildkit cache 1a2523e901 Merge bitcoin/bitcoin#34937: Fix startup failure with RLIM_INFINITY fd limits 5883ba77ea Merge bitcoin/bitcoin#34764: rpc: replace ELISION references with explicit result fields f6939fd13d Merge bitcoin/bitcoin#35564: Update secp256k1 subtree to latest master 61c754ae99 Merge bitcoin/bitcoin#35512: wallet: move fAbortRescan reset into WalletRescanReserver reserve function 794befd4b0 Merge bitcoin/bitcoin#35384: util: Check write failures before renaming settings.json 8f0354995b depends: latest config.guess & config.sub 0e95e1abdb Merge bitcoin/bitcoin#35437: migrate: Handle HD chains that have identical seeds but different IDs fab2874269 lint: Require scripted-diff script to succeed 9caae50682 Update secp256k1 subtree to latest upstream 1f3f0a4e22 Squashed 'src/secp256k1/' changes from 7262adb4b4..bd0287d650 855a3fee88 scripted-diff: Rename SteadyClockContext to FakeSteadyClock 341360964a Merge bitcoin/bitcoin#35549: argsman: Fix duplicate option assertion to allow HIDDEN category registration abc33ff043 test: announce field must be 0 or 1 in sendcmpct 2d0dce0af5 net_processing: fix BIP152 first integer interpretation f963f2b675 argsman: allow duplicate registration between HIDDEN and other categories 0654511e1b util: Check write failures before renaming settings.json 1e169a8a6c Merge bitcoin/bitcoin#35548: doc: updated ci docs to reflect removal of REPO_USE_WARP_RUNNERS flag f570d7cd53 Merge bitcoin/bitcoin#35547: lint: Require scripted-diff script to succeed 744d495019 ci: updated docs to reflect removal of REPO_USE_WARP_RUNNERS flag 2a36d6a561 lint: Require scripted-diff script to succeed 0f156c16e8 Merge bitcoin/bitcoin#35470: argsman: Prevent duplicate option registration across categories 09ba59ff6b Merge bitcoin/bitcoin#35540: test: descriptor: bare multisig at TOP level with exactly 3 pubkeys is allowed 0e475098cd Merge bitcoin/bitcoin#35463: depends: Drop trailing slash from `CMAKE_INSTALL_LIBDIR` 0136e17c0a Merge bitcoin/bitcoin#35546: ci: Use GCC consistently in i686 task fae482b4e6 ci: Use GCC consistently in i686 task 32df86f1d8 argsman: Prevent duplicate option registration across categories a30ef6b91f Merge bitcoin/bitcoin#35396: ci: Rewrite broken wrap-valgrind.sh to .py 55a4c946f6 test: descriptor: bare multisig at TOP level with 3 pubkeys is allowed 9460090f1a Merge bitcoin/bitcoin#35520: lint: remove redundant test suite uniqueness check 61a0305422 Merge bitcoin/bitcoin#35526: ci: bump MSan fuzz timeout from 150 to 180 minutes 6d5c1fb3ee Merge bitcoin/bitcoin#35173: util: shorten thread names to avoid Linux truncation d3e40af259 index: shorten indexer thread names d69c46292d util: zero-pad thread number suffixes 41e531c4ab util: shorten `ThreadPool` worker names 92d812446e Merge bitcoin/bitcoin#35538: test: make TestChain100Setup's m_clock timestamp more readable 011ad6ea3c Merge bitcoin/bitcoin#35441: ci: inline runner selection 58cc2a0453 test: make TestChain100Setup's m_clock timestamp more readable 6e93ef4623 Merge bitcoin/bitcoin#35503: guix: CMake-related improvements f655d887f0 Merge bitcoin/bitcoin#35535: iwyu: Fix warning in `bench/pool.cpp` 059edf1908 guix: Fix "Ignoring empty string" CMake warning for non-Linux hosts 2d86083fd4 guix: Drop redundant CMake `--verbose` options d92a20b310 iwyu: Fix warning in `bench/pool.cpp` 6921f5df01 Merge bitcoin/bitcoin#35414: iwyu: Fix warnings in `src/bench` and treat them as error 355fffb8cc Merge bitcoin/bitcoin#35528: test: doc: remove `--perf` profiling from functional test framework 46927cf82c Merge bitcoin/bitcoin#35504: test/doc: Follow-up nits for #35269 6bc2d996b0 Merge bitcoin/bitcoin#35499: guix: add `package.sh` 87d099d5f8 Merge bitcoin/bitcoin#35519: rpc: tighten setmocktime upper bound to UINT32_MAX 04eccc2be5 Merge bitcoin/bitcoin#35043: refactor: Properly return from ThreadSafeQuestion signal + btcsignals follow-ups 2cfb10b668 Merge bitcoin/bitcoin#35498: net: move cs_main up in FetchBlock to fix rpc assert crash 9fae7e9886 test: doc: remove `--perf` profiling from functional test framework 17353f9d97 ci: bump MSan fuzz timeout debac5f2cd Merge bitcoin/bitcoin#35523: Revert "build: exclude mptest target from compile commands" 406c2348dd rpc: tighten setmocktime upper bound to UINT32_MAX d186c390f4 Revert "build: exclude mptest target from compile commands" 2447385f47 rpc: remove unused RPCResult::Type::ELISION 7a85118005 rpc: expand decodepsbt output script with explicit fields 88e2a6ae89 rpc: expand getaddressinfo embedded with explicit fields a9f9e7d17e rpc: extract fee estimate result helpers 8a615a8800 rpc: extract ListSinceBlockTxFields() helper 372ac283ac rpc: extend TxDoc() for getblock verbosity 2/3 0380a1c46b rpc: extend TxDoc() for getrawtransaction verbosity 2 946feb3f1f test: remove redundant test suite uniqueness lint b3371029dc doc: use signing pubkey instead of aggregate xonly key 4c99ed1076 Merge bitcoin/bitcoin#35418: build: exclude mptest target from compile commands 9bfdde74b5 guix: add package.sh 142e86a65c Merge bitcoin/bitcoin#35458: qa: Avoid extra tracebacks when exception is raised 216b50c9a6 Merge bitcoin/bitcoin#35179: test: Add importdescriptors rpc error coverage 77772e7a30 undo "ui: Compile boost:signals2 only once" fa45783d55 mv btcsignals.h to src/util fa4903db8a refactor: Make scoped_connection ctor explicit fa1bc1fe51 test: Check btcsignals determinism in thread_safety test case fa86e5dba9 refactor: Properly return from ThreadSafeQuestion signal fa4badc0fd refactor: Make ThreadSafeMessageBox signal void faad9d6434 refactor: Mark btcsignals operator [[nodiscard]] 2fe34808fa wallet: reject sendtoaddress and sendmany for external signers 394e473d42 coins: compact chainstate in background aa021b26f3 validation: randomly compact chainstate bd5a32f7db doc: add taproot descriptor to getdescriptors example 7131c82937 doc: clarify which commands receive --chain, --fingerprint and --stdin 4fdd4d8d29 doc: replace stale signtransaction wording with current signtx flow fab92257fe doc, rpc: document enumerate model field and fingerprint deduplication b10889d107 coins: test chainstate flush baseline c117bbc467 Merge bitcoin/bitcoin#35514: ci: Alpine 3.24 3be1115ade ci: Alpine 3.24 3b712b9d02 Merge bitcoin/bitcoin#35120: btcsignals: delete broken scoped_connection move assignment 2818a171c0 test: add abortscan unit test bc30e95163 wallet: move fAbortRescan reset into WalletRescanReserver reserve() b83a999b14 btcsignals: delete broken scoped_connection move assignment 46d0e21d75 Merge bitcoin/bitcoin#35288: ci: Bump toward Ubuntu 26.04 d0b8d445fb Merge bitcoin/bitcoin#35455: fuzz: improve dbwrapper_concurrent_reads performance d6359937bf validation: check invariants when inserting into m_blocks_unlinked 0852925bd8 test/doc: remove misleading comment and improve tests ca4a380281 test: add coverage for UB caused by FindMostWorkChain c787b3b99b validation: avoid duplicates in m_blocks_unlinked e0fb41fd2a Merge bitcoin/bitcoin#35489: fuzz: test non-max descriptor satisfaction weight 50e9f2ad33 Merge bitcoin/bitcoin#35497: test: FakeNodeClock follow-ups in unit tests 809f909e58 Merge bitcoin/bitcoin#35451: lint: Grep for `AUTO` test suites in file names 530e1f5290 Merge bitcoin/bitcoin#34636: node: allocate index caches proportional to usage patterns 8598ec2204 Merge bitcoin/bitcoin#35221: BIP 434 Support: Peer feature negotiation 526aae3768 fuzz: test non-max descriptor satisfaction weight 472b950b7f qa: Use custom assert_greater_than() over naked assert 1ce9e26239 fuzz: improve dbwrapper_concurrent_reads performance fb47793b99 Merge bitcoin/bitcoin#35168: validation: Don't add pruned blocks to `m_blocks_unlinked` on startup 53b836cdce Merge bitcoin/bitcoin#34028: p2p: Prevent integer overflow in LocalServiceInfo::nScore 3bbc3c67ad Merge bitcoin/bitcoin#35101: refactor: disable default std::hash for CTransactionRef 288018131e Merge bitcoin/bitcoin#35254: crypto: cleanse HMAC stack buffers after use and ChainCode c85e04f079 Merge bitcoin/bitcoin#35478: fuzz: reset the mockable steady clock between iterations ed11dd6a5f test: add coverage for importdescriptors when manually interrupting a wallet rescan d90d7f0a55 test: add coverage for importdescriptors errors when using assumeutxo ad388bf254 test: add coverage for importdescriptors while wallet is rescanning ddceb4e603 test: updated different_key to be different_field and also used a single assert_equal with 3 args instead of multiple assert_equals 6751a323c0 iwyu: Fix warnings in `src/bench` and treat them as error fab52281f7 refactor: Drop unused includes after iwyu CI bump fa4774d032 ci: Bump APT_LLVM_V-based task configs to Ubuntu 26.04 fa1414a36a ci: Debian Trixie -> Ubuntu 26.04 359680b74d net: move cs_main up in FetchBlock to fix rpc assert crash 4b91316643 Merge bitcoin/bitcoin#35459: guix: add setup.sh fa03852e9c test: Use SteadyClockContext in pcp_tests fa3716c439 test: Use FakeNodeClock in more places fae9623c8d test: Add FakeNodeClock m_clock to TestChain100Setup a6ed29d6c2 bench, refactor: Use `std::string_view` for `BenchRunner` ctor parameter bcbf5bae16 Merge bitcoin/bitcoin#35114: test: NodeClockContext follow-ups 543c00f47d Merge bitcoin/bitcoin#35448: ci: don't build libunwind in msan 17ed7f5060 Merge bitcoin/bitcoin#35297: p2p: Release m_peer_mutex early in InitiateTxBroadcastToAll 087f02c929 ci: skip libunwind runtime in LLVM build 6d47f7cc6f ci: use llvm 22.1.7 9868e1bf65 Merge bitcoin/bitcoin#35487: scripted-diff: Rename UNIQUE_NAME to BITCOIN_UNIQUE_NAME 577999c2ce Merge bitcoin/bitcoin#35462: test: remove unnecessary nodes from wallet_multisig_descriptor_psbt e36f5d5d0b Merge bitcoin/bitcoin#35456: test: Perform full reset of CoinsResult in order to avoid passing 21M BTC 1d3bc816c3 Merge bitcoin/bitcoin#35267: rpc: make getprivatebroadcastinfo and abortprivatebroadcast fail if privatebroadcast is not enabled fba713a28c scripted-diff: Rename UNIQUE_NAME to BITCOIN_UNIQUE_NAME 1aafd49077 Merge bitcoin/bitcoin#35359: blockstorage: Remove cs_LastBlockFile recursive mutex 84d07e471c test: add coverage for importdescriptor with an encrypted wallet ec6cf49b91 blockstorage: Remove cs_LastBlockFile recursive mutex 35a814a045 test: Limit clocks to one active instance 55e402ffef scripted-diff: Rename NodeClockContext to FakeNodeClock 1e9546fcf4 test: Use NodeClockContext in more call sites 758fea59a8 test: Drop ++ from NodeClockContext default constructor 7c2ec3949a test: Enter mocktime before peer creation in block_relay_only_eviction 0bfc5e4fff add release notes fdc9fc1df2 test: check getprivatebroadcast and abortprivatebroadcast throw if the node is running without -privatebroadcast set 7b821ef9b7 rpc: getprivatebroadcastinfo and abortprivatebroadcast throw if -privatebroadcast is disabled 5f33da9aa3 Merge bitcoin/bitcoin#35481: fuzz: fix dead HD keypaths (de)serialization round-trip 5deb053a75 fuzz: fix dead HD keypaths (de)serialization round-trip 19b32a2e18 fuzz: reset the mockable steady clock between iterations 27472a542c Merge bitcoin/bitcoin#35466: ci: run ipc functional tests in arm job f6bdbcf79d lint: Grep for `AUTO` test suites in file names b2fbd5b5dd ci: run ipc functional tests in arm job 44fc3a290d rpc: introduce HelpElision variant and ElideGroup helper 2cf2b22ff1 depends: Drop trailing slash from `CMAKE_INSTALL_LIBDIR` da74ff9ca4 test: Add functional test for BIP434 01b8a117d2 test_framework: BIP 434 support 6a129983c9 BIP434: FEATURE message support 3210fc477a net: Add AdvertisedVersion() for protocol version advertised to a peer 5b65e31270 test: remove two unnecessary nodes from the test 94ed45427c serialize: add LimitedVectorFormatter 1b3f776ebb serialize: string_view serialization 47da4f9b71 Merge bitcoin/bitcoin#35410: net: use the proxy if overriden when doing v2->v1 reconnections 54de023a7c guix: add setup.sh 0cac23b66e Merge bitcoin/bitcoin#35431: test: pass -datadir to bitcoin-cli -ipcconnect check f42226d526 qa: Silence socket.timeout exception when substituting it for a JSONRPCException 659671ac3d qa: Avoid cleanup when exception is raised e01741e6ac Merge bitcoin/bitcoin#35446: ci: use pyzmq over zmq 628816bc55 Merge bitcoin/bitcoin#35447: ci: use warpbuild cache for docker buildkit cache d0b76c7f3e rpc+bitcoin-tx: Specify correct type for ParseFixedPoint() a5050ddb6b Merge bitcoin/bitcoin#32150: coinselection: Optimize BnB exploration 082bb1a104 Merge bitcoin/bitcoin#35335: Make deployment configuration available outside of regtest in unit tests 43ca54ca00 refactor(test): Make CAmount arg explicit for BuildCreditingTransaction() b5e91e946c wallet: Remove CoinsResult::Clear() 5bd990a3dd Merge bitcoin/bitcoin#34779: BIP 323: reserve version bits 5-28 as extra nonce space 2189a6f5f2 p2p: Saturate LocalServiceInfo::nScore updates at INT_MAX 82901981bf ci: use Warp cache for Docker layers 7c2718a4b8 Merge bitcoin/bitcoin#34767: Bugfix: GUI/Intro: Handle errors from SelectParams the same as if during InitConfig 4a6d1458b4 ci: add pyzmq to msan job c21b58e263 ci: use pyzmq over zmq b28cf409a1 Merge bitcoin/bitcoin#34866: fuzz: target concurrent leveldb reads de92208c2b migrate: Handle HD chains that have identical seeds but different IDs 2669019fe8 Merge bitcoin/bitcoin#35269: musig: Include pubnonce in session id 7735c13488 test: run bitcoin-cli -ipcconnect check under valgrind with -datadir 8cb8653a22 fuzz: target concurrent leveldb reads 6609088fe6 fuzz: extract ConsumeDBParams helper 61d1c78ed4 Merge bitcoin/bitcoin#35192: wallet: unfriend LegacyDataSPKM and DescriptorScriptPubKeyMan 726e196ef2 ci: inline runner selection 2e0a36c360 Merge bitcoin/bitcoin#35439: test: Improve loopback address check in `rpc_bind.py` 53373d07c3 Merge bitcoin/bitcoin#35430: ci: use warp caching on warp runners 4731049ba4 build: exclude mptest target from compile commands 255f7c720f Merge bitcoin/bitcoin#35404: wallet: allow anti-fee-sniping in sendall RPC while not relying on RBF default c8b8c275fa test: Improve loopback address check in `rcp_bind.py` 654a5223af Merge bitcoin/bitcoin#33661: test: Add test on skip heights in CBlockIndex 19e45334bc Merge bitcoin/bitcoin#35312: kernel: assert invalid buffer preconditions in `btck_*_create` functions 107d4178d9 versionbits: update VersionBitsCache doc comment to match current behaviour 94e3ac0b21 doc: release notes and bips doc update for #34779 1d5240574a qa: test we don't warn for ignored unknown version bits deployments f802edf57c versionbits: Limit live activation params and activation warnings per BIP323 2ce4ae7d8f ci: Add dynamic cache switching to warp cache fbe628756c Merge bitcoin/bitcoin#35131: guix, refactor: Minor script cleanups and improvements bf0d257c11 net: un-default the OpenNetworkConnection()'s proxy_override argument 5a3756d150 test: add a regression test for private broadcast v1 retries 34ac53457f Merge bitcoin/bitcoin#35402: doc: Compress doc/build-unix.md dependency package names into table 10dfdd4b9f Merge bitcoin/bitcoin#35379: test: Fix feature_dbcrash.py --usecli error 214ad1761b Merge bitcoin/bitcoin#35408: ci: 35378 followups a3dc44c085 Merge bitcoin/bitcoin#35385: test: restore JSONRPCException error format 9c1fcaca5c wallet, test: fix sendall anti-fee-sniping when locktime is not specified 570a627640 kernel: assert invalid buffer preconditions in `btck_*_create` functions ac09260982 test: restore JSONRPCException error format ab35a028ed test: make reusable filling of a node's addrman 2333be9cbc test: make reusable starting a standalone P2P listener 2ffa81fac4 test: make reusable SOCKS5 server starting 6c525c2ec1 wallet: unfriend LegacyDataSPKM and DescriptorScriptPubKeyMan classes 8877eec726 wallet: allow anti-fee-sniping in sendall RPC while not relying on RBF default 13b7fffc5e Merge bitcoin/bitcoin#35011: iwyu: Fix warnings in `src/script` and treat them as errors 6183942513 ci, iwyu: Fix warnings in src/scripts and treat them as error 5700a61b73 ci: use ubuntu-latest instead of ubuntu-24.04 265563bf75 doc: remove reference to cirrus b847626562 test: refresh MiniWallet after node restart f4e643cb15 test: merge mining options in package feerate check 280ce6a0ae miner: ensure block_max_weight is flattened before limit checks 65bd3164fb mining: clarify test_block_validity comment 978e7216e6 test: use shared default_ipc_timeout 1ea532e590 Merge bitcoin/bitcoin#34953: crypto: disable ASan instrumentation of SSE4 SHA256 for GCC (matching Clang) d0a54dd8e0 Merge bitcoin/bitcoin#35381: wallet, test: optinrbf deprecation followups c6f225c757 Merge bitcoin/bitcoin#28333: wallet: Construct ScriptPubKeyMans with all data rather than loaded progressively 5486ef8cc2 Merge bitcoin/bitcoin#34198: wallet: fix ancient wallets migration fa787043f5 doc: Compress doc/build-unix.md dependency package names into table f1344e6c7f Merge bitcoin/bitcoin#35378: ci: switch to warp runners d12d8e52d2 Merge bitcoin/bitcoin#35400: doc: Remove good_first_issue.yml, Reword "Getting started" section b86c1c443d test: add coverage for migrating ancient wallets fd44d48b24 wallet: fix ancient wallets migration a34dbc836c Merge bitcoin/bitcoin#35313: Bump leveldb subtree 896eaacd91 Merge bitcoin/bitcoin#34644: mining: add submitBlock to IPC Mining interface fa51f37f18 doc: Reword the Getting-Started section 53388773af guix: Remove redundant ShellCheck `source` directives 62cf7bc53f guix, refactor: Add `BASE` argument to `*_for_host` functions 5d46429e32 guix, refactor: Move `distsrc_for_host()` to `prelude.bash` cab65ea9c6 guix, refactor: Move duplicated `profiledir_for_host()` to `prelude.bash` faa9d4345f guix, refactor: Move duplicated `outdir_for_host()` to `prelude.bash` 6b59fd6b8c guix, refactor: Remove `contains()` function d4c69a7224 guix, refactor: Remove unused `out_name()` function fad585b6e5 test: Wait for node exit after crash in verify_utxo_hash faf1475514 ci: Exclude feature_dbcrash.py under --v2transport --usecli fac27d702f test: Fix feature_dbcrash.py --usecli intermittent error fa09de8b68 test: [refactor] Simplify submit_block_catch_error f701cd159a doc: fix typo in release notes of #34917 7bc39e3d08 wallet, test: add wallet_deprecated_rbf.py for walletrbf deprecated keys & options 2cbbcb5659 wallet, test: remove -deprecatedrpc=bip125 from wallet_send.py 307134bd7e wallet, test: remove -deprecatedrpc=bip125 from wallet_migration.py 3ec550d168 wallet, test: remove -deprecatedrpc=bip125 from wallet_basic.py a52ea9bff9 wallet, test: remove -walletrbf startup option from wallet_backwards_compatibility.py e3f5c18913 Merge bitcoin/bitcoin#34948: guix: Split manifest into build and codesign manifests a9ac680af3 build: remove FALLTHROUGH_INTENDED from leveldb.cmake 4d58c3271c build: remove -Wno-conditional-uninitialized from leveldb build 5fe0615f7a Update leveldb subtree to latest upstream 58cdb5c2e8 Squashed 'src/leveldb/' changes from ab6c84e6f3..a7f9bdc611 4bdd46ace3 ci: switch runners from cirrus to warpbuild fab5733f5d doc: Remove good_first_issue.yml fa98d44951 ci: Rewrite broken wrap-valgrind.sh to .py 00af5620f0 Merge bitcoin/bitcoin#35206: doc: fix doxygen links to threads in developer-notes.md faf7e38973 ci: refactor: Avoid warning: INSTALL_BCC_TRACING_TOOLS: unbound variable 85c27c9de5 Merge bitcoin/bitcoin#35394: test: remove unnecessary rpc calls from feature_dbcrash 42330922dd wallet, test: remove -walletrbf startup option from wallet_backwards_compatibility.py 8cb6e405d8 wallet, test: remove -walletrbf startup option from wallet_listtransactions.py 0ee94b2fef wallet, test: remove -deprecatedrpc=bip125 from wallet_listtransactions.py 5e833e068d wallet, test: -walletrbf startup option from wallet_bumpfee.py a2a2b1745f wallet, test: remove -walletrbf startup option from rpc_psbt.py 615c0aefa8 Merge bitcoin/bitcoin#35391: test: Use operator<< for time_points instead of manual TickSinceEpoch c17cc76a18 test: speed up feature_dbcrash 0687438e94 Merge bitcoin/bitcoin#35372: refactor: Enhance type safety in overflow operations fad4f417d1 test: Use operator<< for time_points instead of manual TickSinceEpoch d846444d01 guix: Split manifest into build and codesign manifests 0b9e10ad40 guix: Update `python-signapple` and wrap with OpenSSL paths 3962138cc0 test: add IPC submitBlock functional test 5b60f69e40 mining: add submitBlock IPC method to Mining interface 813b4a80d7 refactor: introduce SubmitBlock helper a3fe455a95 wallet: refactor to read -walletrbf only once instead of twice 9c15022260 Merge bitcoin/bitcoin#35337: doc: add feature deprecation and removal process to developer notes a4157fc24a Merge bitcoin/bitcoin#33966: refactor: disentangle miner startup defaults from runtime options ac9424fdc6 Merge bitcoin/bitcoin#35145: validation: fix misleading VerifyDB summary log 9767e80b21 Merge bitcoin/bitcoin#35296: doc: Fix broken links in dev notes, move sections 9ec4efebd1 Merge bitcoin/bitcoin#35015: bitcoin-cli: note -rpcclienttimeout is not implemented for IPC connections b43a936355 Merge bitcoin/bitcoin#33974: cmake: Check dependencies after build option interaction d5188b5592 Merge bitcoin/bitcoin#35363: test: Allow --usecli in more tests 743bf350f2 Merge bitcoin/bitcoin#35049: test: remove circular dependency between authproxy and util fa24693819 test: Allow --usecli in tests that already support it fa8d4d5c35 test: Catch CalledProcessError to support --usecli in feature_dbcrash.py faf0f848ef test: use echojson to allow rpc_named_arguments.py --usecli faf993ee44 test: Stop node before modifying config to support rpc_users.py --usecli dd0dea3e89 Merge bitcoin/bitcoin#34917: wallet: mark bip125-replaceable RPC key and walletrbf startup option as deprecated acea6f2caf Merge bitcoin/bitcoin#35251: wallet: Fix for duplicate external signers case 801e3bfe38 chainparams: add overloads for RegTest and SigNet with no options 4995c00a9c chainparams: make deployment configuration available on all test networks 0774eaaf0c util: Require integers for SaturatingAdd() and AdditionOverflow() 32d072a49f doc: add release notes for #35319 d01b461f71 net: ensure no direct private broadcast connections fd230f942d net: use the proxy if overriden when doing v2->v1 reconnections a815e3e262 rpc: Correct type for tx_sigops 7be0d6fa18 test: remove the lazy import of util in authproxy 779f444680 test: move out JSONRPCException from authproxy to util de925455c8 Merge bitcoin/bitcoin#35141: fuzz: apply node context reset pattern to p2p_handshake 2e9fdcc6da doc: add feature deprecation and removal process to developer notes fa4fc8c1d7 test: Set TestNode url field early, so that feature_loadblock.py --usecli works 5faf2ad880 doc: add release notes for deprecation of wallet rbf & bip125 fields aba24a9b62 wallet: remove "RPC Only" from -walletrbf option help description 9f7b08c61c Merge bitcoin/bitcoin#35334: test: Allow --usecli in more tests b9f0040caf Merge bitcoin/bitcoin#34614: ci: Put space and non-ASCII char in scratch dir f28cd7587b Merge bitcoin/bitcoin#35348: ci: switch to GitHub cache for all runners 59918de329 Merge bitcoin/bitcoin#34801: ci: Enable pipefail in 03_test_script.sh e4f033789c Merge bitcoin/bitcoin#35324: test: Document rare failure in test_inv_block better 033a56ccb2 Merge bitcoin/bitcoin#34342: cli: Replace libevent usage with simple http client c03107acf5 ci: switch to GitHub cache for all runners 908cc9d30b Merge bitcoin/bitcoin#35344: kernel: improve BITCOINKERNEL_WARN_UNUSED_RESULT usage e91f8713ac Merge bitcoin/bitcoin#35349: ci: Fix `path` input for vcpkg downloads cache 1e5d3b4f0d doc: add release note for mining option validation 0317f52022 ci: enforce iwyu for touched files 8c58f63578 refactor: have mining files include what they use 3bb6498fb0 mining: store block create options in NodeContext 4637cd157d mining: reject invalid block create options 8daac1d6eb mining: add block create option helpers 128da7c3ff miner: add block_max_weight to BlockCreateOptions fa81e51eae mining: parse block creation args in mining_args 020166080c mining: use interface for tests, bench and fuzzers 44082bea47 interfaces: make Mining use const NodeContext d4368e059c move-only: add node/mining_types.h 6aeb1fbea2 test: cover IPC blockmaxweight policy 63b23ea1e9 test: regression test for waitNext mining policy 24750f8b31 test: add createNewBlock failure helper 63ee9cd15b test: misc interface_ipc_mining.py improvements faf02674b3 refactor: Set TestNode.cli only after RPC is connected fae376cafb refactor: Inline get_rpc_proxy fa00c7c7a4 test: Allow rpc_bind.py --usecli fa8f25118c refactor: Use create_new_rpc_connection in wallet_multiwallet.py fa3ae6c7d3 test: Allow feature_shutdown.py --usecli fa2a3683d5 test: Allow mining_getblocktemplate_longpoll.py --usecli 735b1cf431 Merge bitcoin/bitcoin#34806: refactor: logging: Various API improvements a56b4ead41 Merge bitcoin/bitcoin#35017: mempool: remove all subsequent tx in pkg on failure 00e9df90c8 Merge bitcoin/bitcoin#35333: qa: use NORMAL_GBT_REQUEST_PARAMS consistently in functional tests 37d7ce47c5 Merge bitcoin/bitcoin#35350: test: suppress ECONNABORTED in wait_for_rpc_connection on Windows 18c1cc65e9 kernel: improve BITCOINKERNEL_WARN_UNUSED_RESULT usage 7209eb7790 test: suppress ECONNABORTED in wait_for_rpc_connection on Windows 0553ce5ddb Merge bitcoin/bitcoin#35316: musig: Reject empty pubkey list in GetMuSig2KeyAggCache e4f1e43103 ci: Fix `path` input for vcpkg downloads cache fa99a3ccac ci: Enable pipefail in 03_test_script.sh d61053d97b build: Drop libevent from bitcoin-cli link libraries 798d051c80 cli: Remove libevent usage ca5483a662 qa: use NORMAL_GBT_REQUEST_PARAMS consistently bd0942bbd9 Merge bitcoin/bitcoin#34887: fuzz: target CDBWrapper 2940053761 Merge bitcoin/bitcoin#33223: coinselection: Tiebreak SRD eviction by weight 5ccb698f53 Merge bitcoin-core/gui#936: Remove opt-in RBF 211e1053bf Merge bitcoin/bitcoin#32220: cmake: Get rid of undocumented `BITCOIN_GENBUILD_NO_GIT` environment variable ecf20317cb Merge bitcoin/bitcoin#35270: doc: Document minimum versions for Xcode CLT and MSVC 97f7cc0233 wallet: mark -walletrbf startup option as deprecated c4a7613e6a wallet: mark `bip125-replaceable` key as deprecated in transaction RPCs 8ee5622455 Merge bitcoin/bitcoin#35338: qa: regenerate hardcoded regtest chain for kernel lib unit tests 131fa570b9 test: Add test for BuildSkip() and skip heights c6dbf3158b Merge bitcoin/bitcoin#35304: kernel: doc: document wipe lifecycle and best entry nullability f05b1a3532 rpc: Fix for duplicate external signers case 98f706c698 qa: regenerate hardcoded regtest chain for kernel lib unit tests ac9aa71b7f mempool: remove all subsequent tx in pkg on failure df7ed5f355 chainparams: encapsulate deployment configuration logic b63ef20d54 test: add fuzz harness for CDBWrapper 32169c3855 dbwrapper: accept optional testing leveldb::Env in DBParams 8d390c93fc dbwrapper: make max_file_size a configurable DBParams field 376e7ef07c util: Expose IOErrorIsPermanent in sock header b796bf44f3 Merge bitcoin/bitcoin#35228: wallet: use `outpoint` when estimating input size 3158b890e1 Merge bitcoin/bitcoin#33765: doc: update interface, --stdin flag, `signtx` (#31005) 21edcc47e2 Merge bitcoin/bitcoin#35328: test: restore assertion that tx contains exactly 2500 sigops 5d562430de netbase: Add timeout parameter to ConnectDirectly fa37c6a529 test: [move-only] Extract create_new_rpc_connection a988ac592f cli: Add HTTPResponseHeaders class for parsing response headers ae73b69b52 test: restore assertion that tx contains exactly 2500 sigops a7df1bd7ca Merge bitcoin/bitcoin#34537: crypto: fix incorrect variable names in SHA-256 ARM intrinsics 5570b86fa7 Merge bitcoin/bitcoin#33160: bench: Add more realistic Coin Selection Bench 239424064b Merge bitcoin/bitcoin#35189: kernel: document validation state outputs as overwritten in-place 0358c26d42 kernel: document overwritten validation state outputs 489da5df60 Merge bitcoin/bitcoin#33856: kernel: Refactor process_block_header to return btck_BlockValidationState fa89098888 test: Document rare failure in test_inv_block better ce2044a91d Merge bitcoin/bitcoin#33362: Run feature_bind_port_(discover|externalip).py in CI 2284288e9a Merge bitcoin/bitcoin#35279: psbt, test: remove address type restrictions in test 278b9e39df Merge bitcoin/bitcoin#34934: fuzz: exercise ForNode/ForEachNode callbacks in connman fuzz harness 88d9bc5aa4 kernel: Return btck_BlockValidationState from process_block_header API ed15e14b63 Merge bitcoin/bitcoin#35193: test: avoid non-loopback network traffic from node_init_tests/init_test 4f348c2d73 Merge bitcoin/bitcoin#28802: ArgsManager: support command-specific options c7056ff03f Merge bitcoin/bitcoin#34893: psbt: preserve proprietary fields when combining PSBTs 8ce84321ce musig: Reject empty pubkey list in GetMuSig2KeyAggCache b2a3ca3df9 Merge bitcoin/bitcoin#35117: i2p: clean up SESSION CREATE error logging 7802e578c3 Merge bitcoin/bitcoin#34860: mining: always pad scriptSig at low heights, drop include_dummy_extranonce da769855d0 test: add PSBT proprietary merge regression coverage 3f5b3c7a80 psbt: preserve proprietary fields when combining PSBTs 6189335f6b kernel: doc: document wipe lifecycle and best entry nullability ed1795aa17 Merge bitcoin/bitcoin#35285: bench: add benchmark for GetMappedAS() 379b9fbf03 Merge bitcoin/bitcoin#34225: refactor, key: move `CreateMuSig2{Nonce,PartialSig}` functions to `musig.{h,cpp}` module c471c5085b common: Add unused UrlEncode function 9687ef1bd9 ci: Tolerate unused free functions in intermediate commits 02b2c41103 logging: use util/log.h where possible 57d7495fe5 IWYU fixes 611878b46f scripted-diff: logging: Drop LogAcceptCategory 34332dba2f util/log, logging: Provide ShouldDebugLog and ShouldTraceLog instead of a generic ShouldLog abea304dd6 logging: Move GetLogCategory into Logger class 58113e5833 util/log: Rename LogPrintLevel_ into detail_ namespace f69d1ae56d util/log: Provide util::log::NO_RATE_LIMIT to avoid rate limits 72e92d67df logging: Protect ShrinkDebugFile by m_cs faf6afd99d doc: Move mutex and thread section into guideline section fa514caad7 doc: move-only Valgrind section fa0202f31d doc: move-only Python section fa37606c65 doc: Regroup clang-tidy rules fa9c2ddea9 doc: Fix to use lower-case anchors in links to C++ Core Guidelines a154c05d49 cmake: Check dependencies after build option interaction 096bb0b5c0 bench: add benchmark for GetMappedAS() b6c3670442 i2p: clean up SAM error logging 1c500b1709 test: avoid non-loopback network traffic from node_init_tests/init_test fa2afba28b p2p: Release m_peer_mutex early in InitiateTxBroadcastToAll 3381855e51 doc: external signer: update interface, --stdin flag, IPC-command signtx, contains updates from #33947 ddb94fd3e1 Merge bitcoin/bitcoin#35289: fuzz: Fix timeout in `txorphan` 3142e5f8cf doc: Add release notes for #32220 b71cd5c162 cmake: Skip using git when building from source tarball or as subproject fe941938e8 cmake: Remove unnecessary `BITCOIN_GENBUILD_NO_GIT` environment variable 9a2cced23a cmake, refactor: Move `find_package(Git)` to `src/CMakeLists.txt` 3cab711d69 Merge bitcoin/bitcoin#35284: fuzz: use ImmediateBackgroundTaskRunner to silence DEBUG_LOCKORDER 004a7e3cfb fuzz: Fix txorphan timeout by limiting block weight 7777a92a92 ci: Use path with spaces on windows as well fac6c4270d ci: Put space and non-ASCII char in scratch dir fa38759823 ci: Require $FILE_ENV cad5f56045 Merge bitcoin/bitcoin#29136: wallet: `addhdkey` RPC to add just keys to wallets via new `unused(KEY)` descriptor 9961229360 Merge bitcoin/bitcoin#31298: rpc: combinerawtransaction now rejects unmergeable transactions c680cfe343 Merge bitcoin/bitcoin#35123: wallet: remove outdated arguments from chain scanning methods a145fa881a Merge bitcoin/bitcoin#35156: dbwrapper: reuse scratch `DataStream` buffers 04003e1fa3 Merge bitcoin/bitcoin#35274: doc: clarify libfuzzer-nosan preset uses build_fuzz_nosan dir 5309c90542 Merge bitcoin/bitcoin#35283: doc: mention -DWITH_ZMQ=ON in BSD build guides 90eda67bb8 Remove opt-in RBF fa3d7ce11c doc: Document minimum versions for Xcode CLT and MSVC 2ef6679c2c test: Check that MuSig2 signing does not reuse nonces 8544537f41 mining: drop unused include_dummy_extranonce option 58eeab790d mining: only pad with OP_0 at heights <= 16 00d22328b0 mining: pad coinbase to fix createNewBlock at heights <=16 801d36f55b fuzz: use ImmediateBackgroundTaskRunner to silence DEBUG_LOCKORDER ca93ab808c doc: mention -DWITH_ZMQ=ON in BSD build guides 605ff37403 test: bad-cb-length for createNewBlock() at low heights 1966621b76 test: refactor IPC mining test to use script_BIP34_coinbase_height 8ba5f68b1d refactor, key: move `CreateMuSig2PartialSig` to `musig.{h,cpp}` module d087f266fc refactor, key: move `CreateMuSig2Nonce` to `musig.{h,cpp}` module f36d89f436 key: add `GetSecp256k1SignContext` access function 0065f354a7 doc: clarify libfuzzer-nosan preset uses build_fuzz_nosan dir 81348576cc psbt, test: remove address type restrictions in test 82733e61de Merge bitcoin/bitcoin#35277: ci: Enable ruff ambiguous-unicode-character checks fe2bb43e43 Merge bitcoin/bitcoin#35044: contrib: Fix NameError in signet miner gbt() fa9c919678 refactor: Use ignore-list over verbose select-list cd8d3bd937 wallet: use outpoint when estimating input size fa9b01adec ci: Enable ruff ambiguous-unicode-character checks 09a9bb3536 Merge bitcoin/bitcoin#34547: lint: modernise lint tooling 21a1380c13 key: cleanse ChainCode on destruction bb05986c0a musig: Include pubnonce in session id 3f44f9aef7 test: Add coverage for m_blocks_unlinked invariant in LoadBlockIndex 10ca73c02c Merge bitcoin/bitcoin#34580: build: Add a compiler minimum feature check 1af8e0c4e8 Merge bitcoin/bitcoin#35183: doc: recommend script_flags instead of deployments.taproot f24a7b5f75 doc: recommend script_flags instead of deployments.taproot ccbd00ab87 Merge bitcoin/bitcoin#35152: doc: clarify local IWYU workflow and pragmas b3a3f88346 crypto: cleanse HMAC stack buffers after use 88bfe89793 Merge bitcoin/bitcoin#35227: wallet: check the final BDB page LSN during migration 21599ea612 Merge bitcoin/bitcoin#35241: cmake: Set `CTEST_NIGHTLY_START_TIME` for CDash Nightly pipelines d406cffafd Merge bitcoin/bitcoin#34228: depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script 4defc466a2 cmake: Set `CTEST_NIGHTLY_START_TIME` for CDash Nightly pipelines 1f28ed6b6a Merge bitcoin/bitcoin#35235: contrib: mv verify-commits/pre-push-hook.sh to maintainer tools repo 8396b7f2a3 Merge bitcoin/bitcoin#35236: doc: typo roundup 2b7f5914c4 Merge bitcoin/bitcoin#35222: cmake: add CTestConfig.cmake 888857c551 mv contrib/verify-commits/pre-push-hook.sh to maintainer tools repo d9b57eecad doc: fix whitespace in build-osx.md e7d4a7e3f9 doc: fix stale autotools reference and SQLite typo 3f9c55426a Merge bitcoin/bitcoin#35230: ci: Move --usecli --extended from i386 task to alpine task fad61896e8 ci: Move --usecli --extended from i386 task to alpine task 7c84a2bdb1 Merge bitcoin/bitcoin#35219: doc: Add my key to SECURITY.md cf5c962a39 Merge bitcoin/bitcoin#34991: test: fix feature_index_prune.py bug when using --usecli 6690117c7a Merge bitcoin/bitcoin#35218: test: fix `P2SH` script in coins cache fuzz target 5b11108145 Merge bitcoin/bitcoin#35223: refactor: [rpc] Remove confusing and brittle integral casts (take 3) e2b0984f99 wallet: check BDB last page LSN d5adb9d09b doc: fix doxygen links to threads in developer-notes.md fa864b937e refactor: [rpc] Remove confusing and brittle integral casts (take 3) 9f7a2293c4 depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script 086894098e cmake: add CTestConfig.cmake 0651a1fc15 doc: Add Niklas Goegge's key to SECURITY.md ac58e6c53c test: fix P2SH output in coins cache fuzz aa1d0d7cd7 Merge bitcoin/bitcoin#35209: validation: correct lifetime of precomputed tx data 0429c503fb bench: Replace Coin Selection bench ec1eefda77 bench: Remove unnecessary wallet parameter e6c4ffb956 bench: Fix type mismatch d7ed2840ac Merge bitcoin/bitcoin#21283: Implement BIP 370 PSBTv2 1ed799fb21 validation: correct lifetime of precomputed tx data 371eac8069 fuzz: exercise ForNode/ForEachNode callbacks in connman fuzz harness 08c3c37d12 bitcoin-cli: note -rpcclienttimeout is not implemented for IPC connections c89c8ddbb3 Merge bitcoin/bitcoin#33300: fuzz: compact block harness 4bf1701f58 Merge bitcoin/bitcoin#33796: kernel: Expose `CheckTransaction` consensus validation function 999e9dbfb4 Merge bitcoin/bitcoin#35202: ci: restore sockets in `i686, no IPC` job 5a2e359213 clarify blockfilterindex cache allocation rationale 224120bf12 Merge bitcoin/bitcoin#32394: net: make m_nodes_mutex non-recursive 11c9ef92a8 ci: unconfine seccomp for i686 no IPC 86718e4589 scripted-diff: rename ABEF_SAVE/CDGH_SAVE to ABCD_SAVE/EFGH_SAVE in SHA-256 ARM intrinsics 8f4a3ba897 Merge bitcoin/bitcoin#35165: cmake: Remove NetBSD-specific workaround from `add_boost_if_needed` b1ff4773ba Merge bitcoin/bitcoin#34544: wallet: Disallow wallet names that are paths including `..` and `.` elements db98e357d3 Merge bitcoin/bitcoin#35018: wallet, bench: Use Nanobench setup() for wallet benchmarks, and remove DuplicateMockDatabase 18d003c3dc Merge bitcoin/bitcoin#34916: contrib: override system locale in gen-manpages.py 567ff2b6d6 Merge bitcoin/bitcoin#33196: docs: clarify RPC credentials security boundary 3c2646eacc Merge bitcoin/bitcoin#34026: fuzz: Add tests for `CCoinControl` methods bfbf1a7ef3 kernel: Expose btck_transaction_check consensus function 404470505a Merge bitcoin/bitcoin#34256: test: support `get_bind_addrs` and `feature_bind_extra` on macOS & BSD 25100fc28d Merge bitcoin/bitcoin#35186: util, iwyu: Add missed header d28179bac9 util, iwyu: Add missed header 32e479f7a5 Merge bitcoin/bitcoin#34669: feefrac: drop comparison and operator{<<,>>} for sorted wrappers 11713c9fa9 net: make CConnman::m_nodes_mutex non-recursive aec4fa2de0 net: drop the only recursive usage of CConnman::m_nodes_mutex eed7af666b doc: Add release note for disallowing some wallet path names 3d7f0e4ed5 wallettool: Use GetWalletPath to determine the wallet path ef499680c8 Merge bitcoin/bitcoin#34176: wallet: crash fix, handle non-writable db directories a39cc16b43 doc: Release note for addhdkey 89b9a01b4e wallet, rpc: Disallow importing unused() to wallets without privkeys 35bbee6374 wallet, rpc: Disallow import of unused() if key already exists f3f8bcbd1d wallet: Add addhdkey RPC 9fa4076b20 test: Test merging implicit PSBTv0 with explicit PSBTv0 1660c18232 doc: Release notes for psbtv2 470e52a5f8 fuzz: Enforce additional version invariants in PSBT fuzzer 5bd0579c09 test: Tests for PSBT AddInput and AddOutput b8b6e7f0c2 tests: Add PSBT unit test for ComputeTimeLock 0bc1c2e508 tests: Add test vectors from BIP 370 e0e4dbdeb5 psbt: Change default psbt version to 2 bcc1dca77b Add psbt_version to PSBT RPCs and default to v2 ab38c30195 Implement PSBTv2 field merging 93e339e29f Implement PSBTv2 AddInput and AddOutput b39c86ae60 Allow specifying PSBT version in constructor dcc9a3c8df Implement PSBTv2 in decodepsbt 5770dbd39f Add PSBT::ComputeLockTime() 863cf47b33 Update test_framework/psbt.py for PSBTv2 925161eaf0 Implement PSBTv2 fields de/ser d9cf658ee0 Restrict joinpsbts to PSBTv0 only 3da0e16012 Replace PSBT.tx with PSBT::GetUnsignedTx and PSBT::GetUniqueID c568624ff2 psbt: Return std::optional from PrecomputePSBTData 092de4f1f6 Replace PSBT::GetInputUTXO with PSBTInput::GetUTXO 1d1ae6f0c4 wallet, test: Remove DuplicateMockDatabase 82bc280de4 test: Simple test for importing unused(KEY) 80c29bc6f1 descriptor: Add unused(KEY) descriptor 82c9fe3179 psbt: Use PSBTInput and PSBTOutput fields instead of accessing global tx 95897507e9 psbt: AddInput and AddOutput should take only PSBTInput and PSBTOutput 1b7d323a72 Add PSBTInput::GetOutPoint 543d3e1cdc psbt: add PSBTv2 global tx fields c01c7f068c psbt: Remove default constructor 9671aa08c2 psbt: add tx input and output fields in PSBTInput and PSBTOutput 990b084f11 Have PSBTInput and PSBTOutput know the PSBT's version 7eacc21ff6 psbt: make PSBT structs into classes f926c326bb gui: Store PSBT in std::optional in PSBTOperationsDialog 1e2d146b47 psbt: Refactor duplicate key lookup and size checks 88384180d3 test: PSBTs should roundtrip through RPCs that do nothing 001877500d test: construct psbt with unknown field programmatically 0cb884e6df psbt: Fill hash preimages and taproot builder from SignatureData 57820c472b bench: Utilize setup() for WalletLoading and use a real database 9a7604fd25 bench: Use setup() in WalletMigration to prepare the legacy wallet 426a94e7bd bench: Utilize setup() in WalletEncrypt to create the encryption wallet d672455d20 bench: Utilitze setup() in WalletBalance for marking caches dirty 61412ef887 bench: Utilize setup() in WalletCreate to cleanup previous wallets 451fdd26a4 test: wallet: Constructing a DSPKM that can't TopUp() throws. 32946e0291 wallet: Setup new autogenerated descriptors on construction e20aaff70f wallet: Construct ExternalSignerSPKM with the new descriptor aa4f7823aa wallet: include keys when constructing DescriptorSPKM during import 6538f69135 fuzz: Skip adding descriptor to wallet if it cannot be expanded 8be5ee554b test: wallet: Check that loading wallet with both unencrypted and encrypted keys fails. 80b0c25992 wallet: Load everything into DescSPKM on construction f713fd1725 refactor: wallet: Don't reuse WALLET_BLANK flag for born-encrypted wallets. cd912c4e10 wallet: Consolidate generation setup callers into one function 0301c758ea wallet migration, fuzz: Migrate hd seed once 2424e52836 lint: doc: detail lint tool install methods 5fefa5a654 Don't pin Python patch version fd15b55c2e lint: use requirements.txt 5f4d3383da lint: switch to ruff for formatting and linting a53b81ce4e lint: switch to uv for python management in linter 2b0dc0d228 wallet: Disallow . and .. from wallet names d084bc88be doc: clarify IWYU workflow 7c7cec4567 ci: update IWYU patch reference 75cf9708a0 ci: add one more routable address to the VMs (docker containers) 1b93983bf5 test: make feature_bind_port_(discover|externalip).py auto-detect the skip condition 032223f403 dbwrapper: reuse iterator scratch stream 7403c0f907 dbwrapper: guard `CDBBatch` scratch streams cb1ab0a716 test: cover repeated dbwrapper stream use 31ce729b28 streams: add `ScopedDataStreamUsage` 0e4b0bacec validation: Don't add pruned blocks to m_blocks_unlinked on startup c8d688f41c fuzz: send blocktxn messages in cmpctblock harness d0333bfe99 fuzz: send compact blocks in cmpctblock harness 3c58efe2ac fuzz: mine blocks and send headers for them in cmpctblock harness 651622432d fuzz: create and send transactions in cmpctblock harness 8c9a3fd0e8 net, fuzz: move CMPCTBLOCK_VERSION to header, use in cmpctblock harness 6cd480f62f fuzz: initial compact block fuzz harness 1d66963749 log: clarify VerifyDB summary log a9301cfa07 refactor: disable default std::hash for CTransactionRef 47d68cd981 ci: backport iwyu PR 2013 std::hash mapping e2ef54b8ba cmake: Remove NetBSD-specific workaround from `add_boost_if_needed` 6d86184a8b rpc: combinerawtransaction now rejects unmergeable transactions 08925d5ee7 test: add coverage for loading a wallet in a non-writable directory 0218966c0d test: add coverage for wallet creation in non-writable directory bc0090f1d6 wallet: handle non-writable db directories a49bc1e24e ci: add --extended when using --usecli 904c0d07bb util/stdmutex: Drop StdLockGuard 735b25519a support: clamp RLIMIT_MEMLOCK to size_t 8ab4b9fc85 init: clamp fd limits to int 4afbabdcef Fix startup failure with RLIM_INFINITY fd limits 89af67d79f tests: Add some fuzz test coverage for command-specific args 92df785859 tests: Add some test coverage for ArgsManager::AddCommand 33c8090be9 ArgsManager: automate checking for correct command options 186354a0d8 bitcoin-wallet: use command-specific options d21e82b7d6 ArgsManager: support command-specific options dfe5d6a81d fuzz: apply node context reset pattern to p2p_handshake dc84a31014 wallet: remove fUpdate argument from AddToWalletIfInvolvingMe 94845df073 wallet: remove update_tx argument from SyncTransaction 6e796e1f47 wallet: remove fUpdate argument from ScanForWalletTransactions 54e4c0be8f wallet: remove update argument from RescanFromTime method 701bc2dc02 contrib: Fix NameError in signet miner gbt() 7249b376a0 opt: Skip UTXOs with worse waste, same eff_value 5204291860 opt: Skip evaluation of equivalent input sets ba1807b981 coinselection: Track effective_value lookahead fa226ab902 coinselection: BnB skip exploring high waste 7ecea1dc5d coinselection: Track whether BnB completed 3ca0f36164 coinselection: rewrite BnB in CoinGrinder-style 2e73739837 coinselection: Track BnB iteration count in result eff9e798b9 coinselection: Tiebreak SRD eviction by weight d06dabf26b node: allocate index caches proportional to usage patterns 1950da94fc test: enable `rpc_bind` on macOS and BSD 7236a05503 test: enable `feature_bind_extra` on macOS and BSD 5603ae0ffa test: fix send_batch_request to pass callables when using --usecli fedeff7f20 crypto: disable ASan instrumentation of SSE4 SHA256 for GCC 758f208cc1 contrib: override system locale in gen-manpages.py 2104282ddd fuzz: Add tests for CCoinControl methods 43b09b993d fuzz: Improve oracle for existing CCoinControl tests ac1ccc5bd9 build: Add CTAD feature check 9f273f1c1c build: Add path to doc recommended versions for CLANG, GCC and MSVC 55d37546fa Bugfix: GUI/Intro: Handle errors from SelectParams the same as if during InitConfig 1aa78cdab6 clusterlin: adopt STL ranges algorithms (refactor) 747da25360 feefrac: drop comparison and operator{<<,>>} for sorted wrappers 938312d7a6 docs: clarify RPC credentials security boundary git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: d84fc352cbc1363df5cd6024a22e73fc63283e4f
…b directories 7a958f7 test: add coverage for loading a wallet in a non-writable directory (furszy) 95dc9cd test: add coverage for wallet creation in non-writable directory (furszy) b176564 wallet: handle non-writable db directories (furszy) Pull request description: Make wallet creation and load fail with a clear error when the db directory isn’t writable. #### 1) For Wallet Creation Before: creating a wallet would return a generic error: "SQLiteDatabase: Failed to open database: unable to open database file" After: creating a wallet returns: "SQLiteDatabase: Failed to open database in directory <dir_path>: directory is not writable" #### 2) For Wallet Loading We currently allow loading wallets located on non-writable directories. This is problematic because the node crashes on any subsequent write; generating a block is enough to trigger it. Can be verified just by running the following test on master: furszy/bitcoin-core@85fa4e2 Also, to check directory writability, this creates a tmp file rather than relying on the `permissions()` functions, since perms bits alone may not reliably reflect actual writability in some systems. Testing Note: Pushed the tests in separate commits so they can be cherry-picked on master for comparison. ACKs for top commit: rkrux: re-ACK 7a958f7 achow101: ACK 7a958f7 seduless: Tested ACK 7a958f7 Tree-SHA512: e480eab329a1d595fe0b191e83c97956e3ff1d1e335ada8ac6fe72bc4b2bb9b13b0d49db0254d34ad75f816db06d9cd0c21d3063d7d8ee6687a7ea2324c36288
…b directories da663ff test: add coverage for loading a wallet in a non-writable directory (furszy) 3ce2c02 test: add coverage for wallet creation in non-writable directory (furszy) 45561de wallet: handle non-writable db directories (furszy) Pull request description: Make wallet creation and load fail with a clear error when the db directory isn’t writable. #### 1) For Wallet Creation Before: creating a wallet would return a generic error: "SQLiteDatabase: Failed to open database: unable to open database file" After: creating a wallet returns: "SQLiteDatabase: Failed to open database in directory <dir_path>: directory is not writable" #### 2) For Wallet Loading We currently allow loading wallets located on non-writable directories. This is problematic because the node crashes on any subsequent write; generating a block is enough to trigger it. Can be verified just by running the following test on master: furszy/bitcoin-core@85fa4e2 Also, to check directory writability, this creates a tmp file rather than relying on the `permissions()` functions, since perms bits alone may not reliably reflect actual writability in some systems. Testing Note: Pushed the tests in separate commits so they can be cherry-picked on master for comparison. ACKs for top commit: rkrux: re-ACK da663ff achow101: ACK da663ff seduless: Tested ACK da663ff Tree-SHA512: e480eab329a1d595fe0b191e83c97956e3ff1d1e335ada8ac6fe72bc4b2bb9b13b0d49db0254d34ad75f816db06d9cd0c21d3063d7d8ee6687a7ea2324c36288
Make wallet creation and load fail with a clear error when the db directory isn’t writable.
1) For Wallet Creation
Before: creating a wallet would return a generic error:
"SQLiteDatabase: Failed to open database: unable to open database file"
After: creating a wallet returns:
"SQLiteDatabase: Failed to open database in directory <dir_path>: directory is not writable"
2) For Wallet Loading
We currently allow loading wallets located on non-writable directories. This is problematic
because the node crashes on any subsequent write; generating a block is enough to trigger it.
Can be verified just by running the following test on master: furszy@85fa4e2
Also, to check directory writability, this creates a tmp file rather than relying on the
permissions()functions, since perms bits alone may not reliably reflect actual writabilityin some systems.
Testing Note:
Pushed the tests in separate commits so they can be cherry-picked on master for comparison.