Skip to content

wallet: crash fix, handle non-writable db directories#34176

Merged
achow101 merged 3 commits into
bitcoin:masterfrom
furszy:2025_wallet_check_db_permissions
Apr 29, 2026
Merged

wallet: crash fix, handle non-writable db directories#34176
achow101 merged 3 commits into
bitcoin:masterfrom
furszy:2025_wallet_check_db_permissions

Conversation

@furszy

@furszy furszy commented Dec 29, 2025

Copy link
Copy Markdown
Member

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 writability
in some systems.

Testing Note:
Pushed the tests in separate commits so they can be cherry-picked on master for comparison.

@DrahtBot

DrahtBot commented Dec 29, 2025

Copy link
Copy Markdown
Contributor

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

Code Coverage & Benchmarks

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

Reviews

See the guideline for information on the review process.

Type Reviewers
ACK rkrux, seduless, achow101
Concept ACK stickies-v
Stale ACK bensig

If your review is incorrectly listed, please copy-paste <!--meta-tag:bot-skip--> into the comment that the bot should ignore.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #33014 (rpc: Fix internal bug in descriptorprocesspsbt when encountering invalid signatures by b-l-u-e)

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.

@rkrux rkrux left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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)
 

Comment thread test/functional/wallet_createwallet.py Outdated
Comment thread test/functional/wallet_createwallet.py Outdated
Comment thread test/functional/wallet_createwallet.py Outdated
Comment thread test/functional/wallet_createwallet.py Outdated
@furszy furszy force-pushed the 2025_wallet_check_db_permissions branch from c919a62 to 4ad08fc Compare December 30, 2025 16:09
@furszy

furszy commented Dec 30, 2025

Copy link
Copy Markdown
Member Author

Thanks for the review @rkrux!
Applied all suggestions except the touch() if-block, since the function doesn’t return a boolean (per docs, it either returns None or an exception). Also pulled out the is_dir_writable function to make the introduced try-except-finally workflow slightly more readable.

@stickies-v

stickies-v commented Jan 3, 2026

Copy link
Copy Markdown
Contributor

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 sqlite3_errmsg(m_db) offer a more simple alternative? I think I'm slightly Approach NACK atm, unless I'm wrong on the usefulness of the change.

@furszy

furszy commented Jan 3, 2026

Copy link
Copy Markdown
Member Author

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?

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 -journal file. I should add a simple test case demonstrating this bad behavior and append it to the PR description..

Also, do you really think that labeling these changes as "excessive" is correct?
We are talking about an 8-line function that improves the user experience at almost no cost and could be useful in other contexts as well. Even setting aside the post-opening crash and only focusing on the creation issue, I wouldn’t label this as an excessive change.

Didn't test, but would sqlite3_errmsg(m_db) offer a more simple alternative? I think I'm slightly Approach NACK atm, unless I'm wrong on the usefulness of the change.

sqlite3_errmsg(m_db) returns the same message as sqlite3_errstr(ret). Both return the generic and not particularly useful "unable to open database file".

@furszy

furszy commented Jan 3, 2026

Copy link
Copy Markdown
Member Author

@stickies-v done. Run this simple test on master: furszy@85fa4e2
The node crashes after loading a wallet in a non-writable directory; generating a block is enough to trigger it.

@stickies-v

Copy link
Copy Markdown
Contributor

Also, do you really think that labeling these changes as "excessive" is correct?

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).

The node crashes after loading a wallet in a non-writable directory; generating a block is enough to trigger it.

This seems like a much better rationale to me for this PR. Concept ACK. Approach-wise, I'm confused why the sqlite3_db_readonly call we already have doesn't do what we'd expect it to do, but I'm not sure I'll be diving into this further, just wanted to leave early concept feedback.

@bensig

bensig commented Jan 7, 2026

Copy link
Copy Markdown
Contributor

ACK 2ef6add

Tests passed

Comment thread src/util/fs_helpers.cpp Outdated
@rkrux

rkrux commented Jan 22, 2026

Copy link
Copy Markdown
Contributor

Concept ACK 2ef6add, will finish review.

luke-jr pushed a commit to luke-jr/bitcoin that referenced this pull request Jan 22, 2026
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
luke-jr pushed a commit to luke-jr/bitcoin that referenced this pull request Jan 22, 2026
luke-jr pushed a commit to luke-jr/bitcoin that referenced this pull request Jan 22, 2026
Previously, wallets in non-writable directories were loaded,
leading to crashes on any subsequent write.

Github-Pull: bitcoin#34176
Rebased-From: 2ef6add
@furszy furszy changed the title wallet: improve error msg when db directory is not writable wallet: early error when db directory is not writable Jan 22, 2026
@DrahtBot

Copy link
Copy Markdown
Contributor

🚧 At least one of the CI tasks failed.
Task iwyu: https://github.com/bitcoin/bitcoin/actions/runs/24446517288/job/71441389870
LLM reason (✨ experimental): CI failed because IWYU required include changes (it modified fs_helpers.cpp and then deliberately exited with failure).

Hints

Try to run the tests locally, according to the documentation. However, a CI failure may still
happen due to a number of reasons, for example:

  • Possibly due to a silent merge conflict (the changes in this pull request being
    incompatible with the current code in the target branch). If so, make sure to rebase on the latest
    commit of the target branch.

  • A sanitizer issue, which can only be found by compiling with the sanitizer and running the
    affected test.

  • An intermittent issue.

Leave a comment here, if you need help tracking down a confusing failure.

@furszy furszy force-pushed the 2025_wallet_check_db_permissions branch 2 times, most recently from d9ef1c5 to 5272012 Compare April 16, 2026 20:05
@furszy

furszy commented Apr 16, 2026

Copy link
Copy Markdown
Member Author

Small push to fix the IWYU CI job. Ready to go.

luke-jr pushed a commit to bitcoinknots/bitcoin that referenced this pull request Apr 16, 2026
@rkrux

rkrux commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

re-ACK 5272012

git range-diff 2718462...5272012

furszy added 3 commits April 25, 2026 17:32
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.
@furszy furszy force-pushed the 2025_wallet_check_db_permissions branch from 5272012 to 08925d5 Compare April 25, 2026 21:35
@furszy

furszy commented Apr 25, 2026

Copy link
Copy Markdown
Member Author

rebased, conflicts solved. Ready to go.

@rkrux

rkrux commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

re-ACK 08925d5

git range-diff 5272012...08925d5

@seduless seduless left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Tested ACK 08925d5

nit: Looks like the finally block from the earlier discussion was dropped during a rebase, so the cleanup is unprotected again in both wallet_startup.py and wallet_createwallet.py.

@achow101

Copy link
Copy Markdown
Member

ACK 08925d5

@achow101 achow101 merged commit ef49968 into bitcoin:master Apr 29, 2026
27 checks passed
@furszy furszy deleted the 2025_wallet_check_db_permissions branch April 30, 2026 02:14
yuvicc added a commit to yuvicc/bitcoinkernel-jdk that referenced this pull request May 26, 2026
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…
alexanderwiederin added a commit to alexanderwiederin/rust-bitcoinkernel that referenced this pull request Jun 24, 2026
…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
sedited pushed a commit to sedited/rust-bitcoinkernel that referenced this pull request Jun 25, 2026
…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
Kino1994 pushed a commit to Kino1994/bitcoin-full-history that referenced this pull request Jun 28, 2026
…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
BigcoinBGC pushed a commit to BigcoinBGC/bigcoin that referenced this pull request Jun 30, 2026
…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants