Commit Graph

46218 Commits

Author SHA1 Message Date
merge-script
abb6ae2ec5 Merge bitcoin/bitcoin#34209: [30.x]: Final backports & 30.2rc1
483d158f53 doc: update manual pages for v30.2rc1 (fanquake)
747a863f5b build: bump version to v30.2rc1 (fanquake)
cc3cdbe921 doc: update release notes for v30.2rc1 (fanquake)
c4082a45e6 wallettool: do not use fs::remove_all in createfromdump cleanup (Ava Chow)
185ca0e391 test: coverage for migration failure when last sync is beyond prune height (furszy)
bc71372c0e wallet: migration, fix watch-only and solvables wallets names (furszy)
bef4b1fdee wallet: improve post-migration logging (furszy)
ac940ac2ca test: restorewallet, coverage for existing dirs, unnamed wallet and prune failure (furszy)
8e5c02a77f test: add coverage for unnamed wallet migration failure (furszy)
ac4d0956cc wallet: fix unnamed wallet migration failure (furszy)
454ac8e7db wallet: RestoreWallet failure, erase only what was created (furszy)

Pull request description:

  Backports:
  * #34156
  * #34215

ACKs for top commit:
  darosior:
    ACK 483d158f53
  willcl-ark:
    tACK 483d158f53
  janb84:
    ACK 483d158f53
  w0xlt:
    ACK 483d158f53
  marcofleon:
    lgtm ACK 483d158f53

Tree-SHA512: b43485a8745a663d3a031113a6a266af699b3e70b77f72a0e69ea1986adcaa0ee0d4ce51aacd0fde91611cb4bdba9b6be52e5dca59ff8b12135715b8b1ed5ef2
v30.2rc1
2026-01-07 15:44:56 +00:00
fanquake
483d158f53 doc: update manual pages for v30.2rc1 2026-01-07 14:34:29 +00:00
fanquake
747a863f5b build: bump version to v30.2rc1 2026-01-07 14:34:28 +00:00
fanquake
cc3cdbe921 doc: update release notes for v30.2rc1 2026-01-07 14:34:24 +00:00
Ava Chow
c4082a45e6 wallettool: do not use fs::remove_all in createfromdump cleanup
Github-Pull: #34215
Rebased-From: f78f6f1dc8
2026-01-07 14:33:39 +00:00
furszy
185ca0e391 test: coverage for migration failure when last sync is beyond prune height
Github-Pull: #34156
Rebased-From: b7c34d08dd
2026-01-07 11:20:07 +00:00
furszy
bc71372c0e wallet: migration, fix watch-only and solvables wallets names
Because the default wallet has no name, the watch-only and solvables
wallets created during migration end up having no name either.

This fixes it by applying the same prefix name we use for the backup
file for an unnamed default wallet.

Before: watch-only wallet named "_watchonly"
After:  watch-only wallet named "default_wallet_watchonly"

Github-Pull: #34156
Rebased-From: 82caa8193a
2026-01-07 11:20:04 +00:00
furszy
bef4b1fdee wallet: improve post-migration logging
Right now, after migration the last message users see is "migration completed",
but the migration isn't actually finished yet. We still need to load the new wallets
to ensure consistency, and if that fails, the migration will be rolled back. This
can be confusing for users.

This change logs the post-migration loading step and if a wallet fails to load and
the migration will be rolled back.

Github-Pull: #34156
Rebased-From: d70b159c42
2026-01-07 11:20:00 +00:00
furszy
ac940ac2ca test: restorewallet, coverage for existing dirs, unnamed wallet and prune failure
The first test verifies that restoring into an existing empty directory
or a directory with no .dat db files succeeds, while restoring into a
dir with a .dat file fails.

The second test covers restoring into the default unnamed wallet
(wallet.dat), which also implicitly exercises the recovery path used
after a failed migration.

The third test covers failure during restore on a prune node. When
the wallet last sync was beyond the pruning height.

Github-Pull: #34156
Rebased-From: f011e0f068
2026-01-07 11:19:57 +00:00
furszy
8e5c02a77f test: add coverage for unnamed wallet migration failure
Verifies that a failed migration of the unnamed (default) wallet
does not erase the main /wallets/ directory, and also that the
backup file exists.

Github-Pull: #34156
Rebased-From: 36093bde63
2026-01-07 11:19:39 +00:00
furszy
ac4d0956cc wallet: fix unnamed wallet migration failure
When migrating any legacy unnamed wallet, a failed migration would
cause the cleanup logic to remove its parent directory. Since this
type of legacy wallet lives directly in the main '/wallets/' folder,
this resulted in unintentionally erasing all wallets, including the
backup file.

To be fully safe, we will no longer call `fs::remove_all`. Instead,
we only erase the individual db files we have created, leaving
everything else intact. The created wallets parent directories are
erased only if they are empty.
As part of this last change, `RestoreWallet` was modified to allow
an existing directory as the destination, since we no longer remove
the original wallet directory (we only remove the files we created
inside it). This also fixes the restore of top-level default wallets
during failures, which were failing due to the directory existence
check that always returns true for the /wallets/ directory.

This bug started after:
f6ee59b6e2
Previously, the `fs::copy_file` call was failing for top-level wallets,
which prevented the `fs::remove_all` call from being reached.

Github-Pull: #34156
Rebased-From: f4c7e28e80
2026-01-07 11:19:35 +00:00
furszy
454ac8e7db wallet: RestoreWallet failure, erase only what was created
Track what RestoreWallet creates so only those files and directories
are removed during a failure and nothing else. Preexisting paths
must be left untouched.

Note:
Using fs::remove_all() instead of fs::remove() in RestoreWallet does
not cause any problems currently, but the change is necessary for the
next commit which extends RestoreWallet to work with existing directories,
which may contain files that must not be deleted.

Github-Pull: #34156
Rebased-From: 4ed0693a3f
2026-01-07 11:18:38 +00:00
merge-script
e9f73b8149 Merge bitcoin/bitcoin#34192: [30.x] Backports
f22122bc27 doc: update release notes for v30.x (fanquake)
7568bc3ab0 test: Avoid hard time.sleep(1) in feature_init.py (MarcoFalke)
c065bcd2d7 init: Signal m_tip_block_cv on Ctrl-C (Ryan Ofsky)
6983c7d769 test: Test SIGTERM handling during waitforblockheight call (Ryan Ofsky)
8769c718f4 doc: Update OpenBSD Build Guide (Hennadii Stepanov)
ed0774bd08 doc: update copyright year (fanquake)
f620dde411 fuzz: doc: remove any mention to address_deserialize_v2 (brunoerg)
b734c4026b guix: reduce allowed exported symbols (fanquake)
7ea855fd55 build: Update minimum required Boost version (Hennadii Stepanov)

Pull request description:

  Backports:
  * #33511
  * #33950
  * #34091
  * #34107
  * #34137
  * #34174
  * #34182

ACKs for top commit:
  willcl-ark:
    ACK f22122bc27
  marcofleon:
    ACK f22122bc27

Tree-SHA512: a4486d331ce8fef07e611188098a965348cdfb081b81e5a2c700e119b1cf3c28cddbeca883ab512a510f6aaa5fc14bf896f70823fa63afcdd0762d9fbda0118b
2026-01-05 17:27:19 +00:00
fanquake
f22122bc27 doc: update release notes for v30.x 2026-01-05 12:09:33 +00:00
MarcoFalke
7568bc3ab0 test: Avoid hard time.sleep(1) in feature_init.py
Github-Pull: #34137
Rebased-From: fa727e3ec9
2026-01-05 12:09:02 +00:00
Ryan Ofsky
c065bcd2d7 init: Signal m_tip_block_cv on Ctrl-C
Signal m_tip_block_cv when Ctrl-C is pressed or SIGTERM is received, the same
way it is currently signalled when the `stop` RPC is called. This lets RPC
calls like `waitforblockheight` and IPC calls like `waitTipChanged` be
interrupted, instead of waiting for their original timeouts and delaying
shutdown.

Historical notes:

- The behavior where `stop` RPC signals `m_tip_block_cv`, but CTRL-C does not,
  has been around since the condition variable was introduced in #30409
  (7eccdaf160).
- The signaling was later moved without changing behavior in #30967
  (5ca28ef28b). This commit moves it again to
  the Interrupt() function, which is probably the place it should have been
  added initially, so it works for Ctrl-C shutdowns as well as `stop`
  shutdowns.
- A Qt shutdown bug calling wait methods was fixed previously in #18452
  (da73f1513a), and this change updates that
  fix to avoid the hang happening again in Qt.

Github-Pull: #33511
Rebased-From: c25a5e670b
2026-01-05 12:07:02 +00:00
Ryan Ofsky
6983c7d769 test: Test SIGTERM handling during waitforblockheight call
Currently when CTRL-C is pressed and there is an active `waitforblockheight`,
or `waitforblock`, or `waitfornewblock` RPC call, or a mining interface
`waitTipChanged` IPC call with a long timeout, the node will not shut down
right away, and will wait for the timeout to be reached before exiting.

This behavior is not ideal and only happens when the node is stopped with
CTRL-C or SIGTERM. When the node is stopped with `bitcoin-cli stop`, the wait
calls are interrupted and the node does shut down right away.

The next commit improves node behavior. This commit just adds test coverage to
simplify the next commit and clarify the change in behavior there.

Github-Pull: #33511
Rebased-From: 6a29f79006
2026-01-05 12:06:57 +00:00
Hennadii Stepanov
8769c718f4 doc: Update OpenBSD Build Guide
Github-Pull: #34182
Rebased-From: 84d8c52662
2026-01-05 11:58:47 +00:00
fanquake
ed0774bd08 doc: update copyright year
Github-Pull: #34174
Rebased-From: b23b901363
2026-01-05 11:41:23 +00:00
brunoerg
f620dde411 fuzz: doc: remove any mention to address_deserialize_v2
Github-Pull: #34091
Rebased-From: caf4843a59
2025-12-31 12:30:48 +00:00
fanquake
b734c4026b guix: reduce allowed exported symbols
Github-Pull: #33950
Rebased-From: 7b90b4f5bb
2025-12-31 12:27:29 +00:00
Hennadii Stepanov
7ea855fd55 build: Update minimum required Boost version
Building with Boost 1.73.0 is broken.

Github-Pull: #34107
Rebased-From: f480c1e717
2025-12-31 12:22:49 +00:00
merge-script
dd47caee82 Merge bitcoin/bitcoin#34092: [30.x] Finalise v30.1
2a21824b11 doc: update manual pages for v30.1 (fanquake)
57264431ff build: bump version to v30.1 (fanquake)
26294d627e doc: update release notes for v30.1 (fanquake)

Pull request description:

  Finalise `v30.1`.

ACKs for top commit:
  waketraindev:
    ACK 2a21824b11
  hebasto:
    ACK 2a21824b11, I have reviewed the code and it looks OK.
  brunoerg:
    code review ACK 2a21824b11
  janb84:
    ACK 2a21824b11
  w0xlt:
    Code Review ACK 2a21824b11

Tree-SHA512: 622d289db49c793fcb7b415d5113495eb824dc87780b082ccd5c43e37d116dca5a606340979a77cad1bfdbfac2c5fd5f18262746ed0e492d9e87bb0d802386ee
v30.1
2025-12-18 15:54:33 +00:00
fanquake
2a21824b11 doc: update manual pages for v30.1 2025-12-17 15:40:17 +00:00
fanquake
57264431ff build: bump version to v30.1 2025-12-17 15:29:05 +00:00
fanquake
26294d627e doc: update release notes for v30.1 2025-12-17 15:27:46 +00:00
merge-script
b1499ddf8b Merge bitcoin/bitcoin#33997: [30.x] Backports & 30.1rc1
d59ebac718 doc: update manual pages for v30.1rc1 (fanquake)
b83d4f7c57 build: bump version to v30.1rc1 (fanquake)
b26c93a9df doc: update release notes for v30.1rc1 (fanquake)
18f3ada037 Remove unreliable seed from chainparams.cpp, and the associated README (SatsAndSports)
187e3b89b5 [test] wallet send 3 generation TRUC (glozow)
ab58b2c0f8 [wallet] never try to spend from unconfirmed TRUC that already has ancestors (glozow)
d872277db5 contrib: fix manpage generation (fanquake)
2256f8965e contrib: rename gen-sdk to gen-sdk.py (fanquake)
5408e85145 macdeploy: disable compression in macOS gen-sdk script (fanquake)
338570de5c contrib: more selectively pick files for macOS SDK (fanquake)

Pull request description:

  Backports:
  * #32009
  * #33528
  * #33723
  * #33996

  Prior `30.x` backports in #33609.

ACKs for top commit:
  hebasto:
    re-ACK d59ebac718.
  marcofleon:
    ACK d59ebac718

Tree-SHA512: 41656dc7c2e7a023325b288ff38cf95877a3c223ed5c6defc1c0939b725fb5423455583881f283aff14821bc4fea5a4d4d0ac458cab6450eb9b1bc7730fc027c
v30.1rc1
2025-12-05 14:44:42 +00:00
fanquake
d59ebac718 doc: update manual pages for v30.1rc1 2025-12-05 09:46:37 +00:00
fanquake
b83d4f7c57 build: bump version to v30.1rc1 2025-12-05 09:46:37 +00:00
fanquake
b26c93a9df doc: update release notes for v30.1rc1 2025-12-05 09:46:37 +00:00
SatsAndSports
18f3ada037 Remove unreliable seed from chainparams.cpp, and the associated README
Github-Pull: #33723
Rebased-From: b0c706795c
2025-12-05 09:46:37 +00:00
glozow
187e3b89b5 [test] wallet send 3 generation TRUC
Github-Pull: #33528
Rebased-From: dcd42d6d8f
2025-12-05 09:46:37 +00:00
glozow
ab58b2c0f8 [wallet] never try to spend from unconfirmed TRUC that already has ancestors
Github-Pull: #33528
Rebased-From: e753fadfd0
2025-12-05 09:46:32 +00:00
fanquake
d872277db5 contrib: fix manpage generation
0972f55040 from #33229 broke manpage
generation, because the assumption that the last word in the line
containing the version number, was the version number, no-longer holds
for some binaries. i.e bitcoind.

Github-Pull: #33996
Rebased-From: e9536faaee
2025-12-03 11:20:36 +00:00
fanquake
2256f8965e contrib: rename gen-sdk to gen-sdk.py
This puts it in scope for the Python linters.

Github-Pull: #32009
Rebased-From: 3e01b5d0e7
2025-12-02 12:14:53 +00:00
fanquake
5408e85145 macdeploy: disable compression in macOS gen-sdk script
Starting with Python 3.11, Pythons gzip might delegate to zlib.
Depending on the OS, i.e Ubuntu vs Fedora, the underlying zlib
implementation might differ, resulting in different output.

For now, or until a better solution exists, disable compression. This
results in the SDK increasing in size to ~157mb. Which is not
unreasonable, to regain determinism (and would be significantly worse
without the previous commit).

See: https://docs.python.org/3/library/gzip.html#gzip.compress

Co-authored-by: stickies-v <stickies-v@protonmail.com>

Github-Pull: #32009
Rebased-From: c1213a35ab
2025-12-02 12:14:31 +00:00
fanquake
338570de5c contrib: more selectively pick files for macOS SDK
Only include what we really need. Skip 100s of mb of manpages,
swiftmodules, modulemaps.
Note that System/Library is only needed for the Qt build.

Github-Pull: #32009
Rebased-From: a33d034545
2025-12-02 12:13:59 +00:00
merge-script
72675b8f55 Merge bitcoin/bitcoin#33609: [30.x] Backports
b2cb203af0 doc: update release notes for 30.x (fanquake)
39d53dd8bf interfaces: add interruptWait method (ismaelsadeeq)
577ddf6f5d depends: Add patch for Windows11Style plugin (Hennadii Stepanov)
a0a2b07701 scripted-diff: Remove obsolete comment (Hennadii Stepanov)
e2c71c4fca doc: Correct `pkgin` command usage on NetBSD (Hennadii Stepanov)
c0d851e6c6 qt: Modernize custom filtering (Hennadii Stepanov)
34576c4574 ci: fix configure docker action inputs (will)
8f8c7cf7fa ci: fix lint docker caching (will)
049bf100f1 qt: add createwallet, createwalletdescriptor, and migratewallet to history filter (WakeTrainDev)
3afd5a9729 miner: fix empty mempool case for waitNext() (Sjors Provoost)
23ac752d09 bitcoin: Make wrapper not require -m (Ryan Ofsky)
cd7937ce2d test: add tool_bitcoin to test bitcoin wrapper behavior (Ryan Ofsky)
42d4847fdf init: add exe name to bitcoind, bitcoin-node -version output to be able to distinguish these in tests (Ryan Ofsky)
96110f8846 [doc] correct topology requirements in submitpackage helptext (glozow)
729e4c2abd multiprocess: align our logging with libmultiprocess's (Cory Fields)
f8db6f6ce7 multiprocess: update multiprocess EventLoop construction to use options (Cory Fields)
5e389959b9 test: change log rate limit version gate from 299900 to 290100 (Eugene Siegel)
c48d3a6ad8 ci: expose all ACTIONS_* vars (willcl-ark)
73ed57a35e depends: Use $(package)_file_name when downloading from the fallback (Ava Chow)
72d1141bd8 ci: Use native platform for win-cross task (MarcoFalke)
c9fa661131 ci: Properly include $FILE_ENV in DEPENDS_HASH (Ava Chow)

Pull request description:

  Backports:
  * #33229
  * #33508
  * #33517
  * #33558
  * #33566
  * #33580
  * #33581
  * #33612
  * #33630
  * #33676
  * #33744
  * #33826
  * #33827
  * #33906
  * https://github.com/bitcoin-core/gui/pull/899
  * https://github.com/bitcoin-core/gui/pull/901

ACKs for top commit:
  willcl-ark:
    ACK b2cb203af0
  marcofleon:
    Lgtm, ACK b2cb203af0

Tree-SHA512: cde3584c7ad9bc6034a54527c1f5e84f0c5e314520109342a5cbb3c6c703286e2bed26f2b24fbf0ba7bcc9cbc140d79921e9d63def6b5c4782fd2e208f51948a
2025-12-02 10:15:15 +00:00
fanquake
b2cb203af0 doc: update release notes for 30.x 2025-12-01 14:59:27 +00:00
ismaelsadeeq
39d53dd8bf interfaces: add interruptWait method
- This method can be used to cancel a running
  waitNext().

- This commit also adds a test case for interruptWait method

Github-Pull: #33676
Rebased-From: dcb56fd4cb
2025-11-26 16:49:06 +00:00
Hennadii Stepanov
577ddf6f5d depends: Add patch for Windows11Style plugin
Github-Pull: #33906
Rebased-From: 8558902e57
2025-11-25 17:12:56 +00:00
Hennadii Stepanov
a0a2b07701 scripted-diff: Remove obsolete comment
The removed comment become obsolete after bitcoin/bitcoin#32697 and
bitcoin/bitcoin#32881.

-BEGIN VERIFY SCRIPT-

sed -i "s/ Some tests are disabled if Python 3 is not available.//g" \
$( git grep -l " Some tests are disabled if Python 3 is not available." ./doc/ )

-END VERIFY SCRIPT-

Github-Pull: #33826
Rebased-From: 36724205fc
2025-11-10 11:00:58 +00:00
Hennadii Stepanov
e2c71c4fca doc: Correct pkgin command usage on NetBSD
Github-Pull: #33827
Rebased-From: 0698c6b494
2025-11-10 10:32:55 +00:00
Hennadii Stepanov
c0d851e6c6 qt: Modernize custom filtering
In `QSortFilterProxyModel`, `invalidateFilter()` is scheduled for
deprecation in Qt 6.13.
`beginFilterChange()` was introduced in Qt 6.9.
`endFilterChange()` was introduced in Qt 6.10.

Github-Pull: gui#899
Rebased-From: e15e8cbada
2025-11-05 09:52:41 +00:00
will
34576c4574 ci: fix configure docker action inputs
The options used were wrong in two ways: firstly they were not enforced
as a "choice" (i.e. invalid input valudes could be provided without
error) and one of the options was listed as `gh` when we passed it as
`gha` from ci.yml.

"Fix" this by removing the choice altogether but sanity-testing the
input value against an expected list using a GHA "warning" to notify of
unknown inputs.

Github-Pull: #33744
Rebased-From: 7632e0ba31
2025-11-04 11:42:20 +00:00
will
8f8c7cf7fa ci: fix lint docker caching
Fixes: 33735

Correct runner type selection for the lint job.

This was erroneously left-out during refactor of the runner selection
mechanism in #33302 causing the lint job to run on GH hosts (and
therefore not be able to acces local cirrus caches).

Github-Pull: #33744
Rebased-From: 0b3b8a3be1
2025-11-04 11:42:15 +00:00
WakeTrainDev
049bf100f1 qt: add createwallet, createwalletdescriptor, and migratewallet to history filter
Github-Pull: #gui901
Rebased-From: 4e352efa2c
2025-11-04 11:40:15 +00:00
Sjors Provoost
3afd5a9729 miner: fix empty mempool case for waitNext()
Block template fees are calculated by looping over new_tmpl->vTxFees
and return (early) once the fee_threshold is exceeded.

This left an edge case when the mempool is empty, which this commit
fixes and adds a test for. It does so by using std::accumulate instead
of manual loops.

Also update interface_ipc.py to account for the new behavior.

Co-authored-by: Raimo33 <claudio.raimondi@protonmail.com>

Github-Pull: #33566
Rebased-From: 8f7673257a
2025-10-23 15:36:56 +02:00
Ryan Ofsky
23ac752d09 bitcoin: Make wrapper not require -m
Choose the right binary by default if an IPC option is specified

Github-Pull: #33229
Rebased-From: 453b0fa286
2025-10-17 15:43:25 +01:00
Ryan Ofsky
cd7937ce2d test: add tool_bitcoin to test bitcoin wrapper behavior
Github-Pull: #33229
Rebased-From: 29e836fae6
2025-10-17 15:43:22 +01:00