Commit Graph

44181 Commits

Author SHA1 Message Date
fanquake
ef2a013e31 doc: update release notes for 29.x 2025-06-30 13:29:28 +01:00
dergoegge
4b656e2023 test: Add msgtype to msg_generic slots
Github-Pull: #32833
Rebased-From: 7dc43ea503
2025-06-30 13:28:55 +01:00
Antoine Poinsot
1c0e19b93a node: cap -dbcache to 1GiB on 32-bit architectures
32-bit architecture is limited to 4GiB, so it doesn't make sense to set a too
high value. Since this setting is performance critical, pick an arbitrary value
higher than for -maxmempool but still reasonable.

Github-Pull: #32530
Rebased-From: 9f8e7b0b3b
2025-06-26 17:36:06 +01:00
Antoine Poinsot
eafea2393d init: cap -maxmempool to 500 MB on 32-bit systems
32-bit architecture is limited to 4GiB, so it doesn't make sense to set a too high value. 500 MB is
chosen as an arbitrary maximum value that seems reasonable.

Github-Pull: #32530
Rebased-From: 2c43b6adeb
2025-06-26 17:36:02 +01:00
Hennadii Stepanov
a3c1939d6e cmake: Explicitly specify Boost_ROOT for Homebrew's package
On macOS, this change ensures that the Boost package is located at its
real path rather than via the symlink in the default prefix.

Github-Pull: #32814
Rebased-From: 8800b5acc1
2025-06-26 15:02:08 +01:00
Hennadii Stepanov
a990c1002b cmake: Use HINTS instead of PATHS in find_* commands
According to the CMake documentation, `HINTS` "should be paths computed
by system introspection, such as a hint provided by the location of
another item already found", which is precisely the case in the
`FindQRencode` module.

Entries in `HINTS` are searched before those in `PATHS`. On macOS,
Homebrew’s `libqrencode` will therefore be located at its real path
rather than via the symlink in the default prefix.

Github-Pull: #32805
Rebased-From: ead4468748
2025-06-26 12:10:51 +01:00
Sebastian Falbesoner
5987c1b6ab test: fix catchup loop in outbound eviction functional test
The catchup loop in the outbound eviction functional test currently has
a small flaw, as the contained waiting for a `getheaders` message just
waits for any such message instead of one with the intended block hash.
The reason is that the `prev_prev_hash` variable is set incorrectly,
since the `tip_header` instance is not updated and its field `.hash` is
None. Fix that by updating `tip_header` and use the correct field -- we
want the tip header's previous hash (`.hashPrevBlock`).

Github-Pull: #32742
Rebased-From: dd8447f70f
2025-06-26 11:24:02 +01:00
will
e37a70bf71 build: add root dir to CMAKE_PREFIX_PATH
Nix patches cmake to remove the root directory `/` from
`CMAKE_SYSTEM_PREFIX_PATH`:
428b49b28e/pkgs/by-name/cm/cmake/001-search-path.diff (L10)

Without this, and when using the toolchain for depends builds, cmake's
`find_path()` and `find_package()` do not know where to find
dependencies, causing issues like:
https://github.com/bitcoin/bitcoin/issues/32428

Adding this path back via CMAKE_PREFIX_PATH is harmless on other
systems, and fixes the toolchain for Nix users.

We append the `/` dir a maximum of once, as the toolchain may be called
repeatedly during builds.

Co-authored-by: Russell Yanofsky <russ@yanofsky.org>
Co-authored-by: josibake <josibake@protonmail.com>

Github-Pull: #32798
Rebased-From: e27a94596f
2025-06-25 11:38:37 +01:00
merge-script
983b268768 Merge bitcoin/bitcoin#32589: [29.x] More backports
0922f6bbc3 doc: update release notes for 29.x (fanquake)
5697605414 contrib: tracing: Correctly read msg type in p2p_monitor.py (David Gumberg)
4c7ed36c96 test: Fix list index out of range error in feature_bip68_sequence.py (zaidmstrr)
3e23b47a6f doc: fix transifex 404s (fanquake)
616baf3c27 doc: taproot became always active in v24.0 (Sjors Provoost)
ef6111bd18 depends: capnp 1.2.0 (fanquake)
8246c6a65f test: wallet, coverage for crash on dup block disconnection during unclean shutdown (Martin Zumsande)
a18085a18b wallet: fix crash on double block disconnection (furszy)
7264459c0d build: patch cmake min version on freetype (josibake)
27c533052c doc, windows: CompanyName "Bitcoin" => "Bitcoin Core project" (Hodlinator)
1b51d750ad depends: fix SHA256SUM command on OpenBSD (use GNU mode output) (Sebastian Falbesoner)
aea8a394b1 doc: make `-DWITH_ZMQ=ON` explicit on `build-unix.md` (Luis Schwab)
23e76ef520 guix: warn and abort when SOURCE_DATE_EPOCH is set (will)
876a7b2db5 doc: add missing packages for BSDs (cmake, gmake, curl) to depends/README.md (Sebastian Falbesoner)
78688c8413 rpc, doc: update `listdescriptors` RCP help (rkrux)
c899334e36 rpc: Note in fundrawtransaction doc, fee rate is for package (benthecarman)
247ee59f55 doc: update tor docs to use bitcoind binary from path (ismaelsadeeq)
4a1143b083 depends: use "mkdir -p" when installing xproto (fanquake)
646fa1d028 test: fix sync function in rpc_psbt.py (Martin Zumsande)
17b31fc802 doc: Add missing top-level description to pruneblockchain RPC (nervana21)
e34b6fbcad guix: accomodate migration to codeberg (fanquake)
142153ee42 cmake: Add missed `SSE41_CXXFLAGS` (Hennadii Stepanov)

Pull request description:

  Backports
  - #31757
  - #32333
  - #32439
  - #32551 (just 800b7cc42c)
  - #32568
  - #32607
  - #32630
  - #32678
  - #32679
  - #32690 (just 8713e8060d)
  - #32693
  - #32696
  - #32708
  - #32711
  - #32719
  - #32760
  - #32765
  - #32771
  - #32776
  - #32777

  Closes #32625.

ACKs for top commit:
  instagibbs:
     ACK 0922f6bbc3
  willcl-ark:
    ACK 0922f6bbc3

Tree-SHA512: 0389e5d85fa897fdbefd37635f6ec822ca5ab48a57c4d40fdd4d1be2465c676f514b0db4d72c962ee15e0090b27ff17701e167d660eaa25f855d06bbb1fe0e6e
2025-06-25 11:03:05 +01:00
fanquake
0922f6bbc3 doc: update release notes for 29.x 2025-06-23 12:48:15 +01:00
David Gumberg
5697605414 contrib: tracing: Correctly read msg type in p2p_monitor.py
Github-Pull: #32771
Rebased-From: 3473986fe1
2025-06-23 10:01:45 +01:00
zaidmstrr
4c7ed36c96 test: Fix list index out of range error in feature_bip68_sequence.py
Github-Pull: #32765
Rebased-From: e285e691b7
2025-06-19 15:06:14 +01:00
fanquake
3e23b47a6f doc: fix transifex 404s
Github-Pull: #32777
Rebased-From: 53a996f122
2025-06-19 11:48:46 +01:00
Sjors Provoost
616baf3c27 doc: taproot became always active in v24.0
Github-Pull: #32776
Rebased-From: 8ee8a951c2
2025-06-19 11:42:10 +01:00
fanquake
ef6111bd18 depends: capnp 1.2.0
Github-Pull: #32760
Rebased-From: c7eaac326a
2025-06-19 10:40:41 +01:00
Martin Zumsande
8246c6a65f test: wallet, coverage for crash on dup block disconnection during unclean shutdown
Co-authored-by: furszy <matiasfurszyfer@protonmail.com>

Github-Pull: #31757
Rebased-From: 11f8ab140f
2025-06-19 10:39:27 +01:00
furszy
a18085a18b wallet: fix crash on double block disconnection
The wallet crashes if it processes the same block disconnection event twice in a row due
to an incompatible coinbase transaction state.
This happens because 'disconnectBlock' provides 'TxStateInactive' without the "abandoned"
flag for coinbase transactions to 'SyncTransaction', while 'AddToWallet()' internally
modifies it to retain the abandoned state.

The flow is as follows:
1) On the first disconnection, the transaction state transitions from "confirmed" to
"inactive," bypassing the state equality check since the provided state differs. Then,
'AddToWallet' internally updates the state to "inactive + abandoned"

2) On the second disconnection, as we provide only the "inactive" state
to 'SyncTransaction()', the state equality assertion fails and crashes the wallet.

Github-Pull: #31757
Rebased-From: 9ef429b6ae
2025-06-19 10:39:27 +01:00
josibake
7264459c0d build: patch cmake min version on freetype
Patch cmake_minimum_required version for freetype, using the version from
https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/352/diffs

This fixes a failure when building with CMake 4, where compatibility
with CMake versions < 3.5 has been removed (see https://cmake.org/cmake/help/latest/release/4.0.html#deprecated-and-removed-features)

Github-Pull: #32693
Rebased-From: d7c37906e7
2025-06-19 10:39:27 +01:00
Hodlinator
27c533052c doc, windows: CompanyName "Bitcoin" => "Bitcoin Core project"
Matches /share/setup.nsi.in:14

Github-Pull: #32719
Rebased-From: 239fc4d62e
2025-06-19 10:39:27 +01:00
Sebastian Falbesoner
1b51d750ad depends: fix SHA256SUM command on OpenBSD (use GNU mode output)
On OpenBSD, the `sha256` command by default outputs hashsums on files in
"BSD" mode, looking like this:

$ sha256 ~/.vimrc
SHA256 (/home/thestack/.vimrc) = 6ba69d100e8c5ca0488ded6293d4e5f740a6a5d5ace96cbcf0599c18d27389e4

This is not compatible with our depends commands, which expect the
hashes to be on the first column (to be extracted via `cut -d" " -f1`).
Fix this by switching to GNU mode output, looking like this:

$ sha256 -r ~/.vimrc
6ba69d100e8c5ca0488ded6293d4e5f740a6a5d5ace96cbcf0599c18d27389e4 /home/thestack/.vimrc

Without this change, the multiprocess depends build fails with the following output:

$ gmake -C depends MULTIPROCESS=1 NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_QR=1 NO_WALLET=1 NO_ZMQ=1 NO_USDT=1
[ ..... ]
Extracting native_libmultiprocess...
sha256: /home/thestack/bitcoin/depends/work/build/x86_64-unknown-openbsd7.7/native_libmultiprocess/-2bc902f4693/.src-ipc-libmultiprocess.tar.hash: no properly formatted checksum lines found
gmake: *** [funcs.mk:342: /home/thestack/bitcoin/depends/work/build/x86_64-unknown-openbsd7.7/native_libmultiprocess/-2bc902f4693/.stamp_extracted] Error 1

Github-Pull: #32690
Rebased-From: 8713e8060d
2025-06-19 10:39:27 +01:00
Luis Schwab
aea8a394b1 doc: make -DWITH_ZMQ=ON explicit on build-unix.md
Github-Pull: #32696
Rebased-From: 32d4e92b9a
2025-06-10 17:27:40 +01:00
will
23e76ef520 guix: warn and abort when SOURCE_DATE_EPOCH is set
Current behaviour will by-default use SOURCE_DATE_EPOCH from the
environment without warning. This breaks the default reproducibility
from a guix build.

Warn when and exit when this variable is set, and
FORCE_SOURCE_DATE_EPOCH is unset.

Github-Pull: #32678
Rebased-From: 5c4a0f8009
2025-06-10 15:22:51 +01:00
Sebastian Falbesoner
876a7b2db5 doc: add missing packages for BSDs (cmake, gmake, curl) to depends/README.md
Github-Pull: #32711
Rebased-From: 89526deddf
2025-06-10 13:32:02 +01:00
rkrux
78688c8413 rpc, doc: update listdescriptors RCP help
This RPC lists all the descriptors present in the wallet, not only
the ones that were imported, but also the ones generated when a
new wallet is created.

It can be verified by creating a new wallet and calling the
`listdescriptors` RPC, which will contain 8 ranged descriptors that
are created for every new wallet.

Github-Pull: #32708
Rebased-From: b44514b876
2025-06-10 11:31:10 +01:00
benthecarman
c899334e36 rpc: Note in fundrawtransaction doc, fee rate is for package
Github-Pull: #32607
Rebased-From: f98e1aaf34
2025-06-09 16:13:01 +01:00
ismaelsadeeq
247ee59f55 doc: update tor docs to use bitcoind binary from path
Github-Pull: #32679
Rebased-From: 4ce53495e5
2025-06-09 16:12:25 +01:00
fanquake
4a1143b083 depends: use "mkdir -p" when installing xproto
It looks like the mkdir detection in xproto is broken on Alpine. Ensure
we always use `mkdir -p`.

Fixes #32494.

Github-Pull: #32568
Rebased-From: df9ebbf659
2025-06-03 20:26:27 +01:00
Martin Zumsande
646fa1d028 test: fix sync function in rpc_psbt.py
It currently only syncs between the first two nodes,
which may do nothing when the block is created on the
third node.

Github-Pull: #32630
Rebased-From: 4df4df45d7
2025-05-29 12:31:10 +01:00
nervana21
17b31fc802 doc: Add missing top-level description to pruneblockchain RPC
Previously, the `pruneblockchain` RPC help output included only the method signature and arguments, with no top-level description explaining its purpose or constraints.

This PR adds a concise top-level description, improving documentation consistency and alerting users to the potential impacts of using the command.

Github-Pull: #32333
Rebased-From: 135a0f0aa7
2025-05-29 12:15:57 +01:00
fanquake
e34b6fbcad guix: accomodate migration to codeberg
See https://guix.gnu.org/blog/2025/migrating-to-codeberg/.

When interacting with the old repo you may now also see:
```bash
warning: redirecting to https://codeberg.org/guix/guix/
```

Github-Pull: #32439
Rebased-From: c8d9baae94
2025-05-28 09:53:33 +01:00
Hennadii Stepanov
142153ee42 cmake: Add missed SSE41_CXXFLAGS
Github-Pull: #32551
Rebased-From: 800b7cc42c
2025-05-22 14:55:42 +01:00
merge-script
589b56192f Merge bitcoin/bitcoin#32292: [29.x] Backports
a0d1f69b55 doc: update release notes for 29.x (fanquake)
6c0f26d3bd test: check that creating a wallet does not log version info (Ava Chow)
e685b4eca2 test: Check that the correct versions are logged on wallet load (Ava Chow)
25aa15ee7f walletdb: Log the wallet version after it has been read from disk (Ava Chow)
cf034172bf test: fix another intermittent failure in wallet_basic.py (Martin Zumsande)
c966158426 test: Fix intermittent failure in wallet_basic.py (Martin Zumsande)
6c4e3de2ac test: Use uninvolved pruned node in feature_pruning undo test (enoch)
edd4073d70 test: Fix nTimes typo in feature_pruning test (enoch)
cc2fcdfc5e cmake: Allow `WITH_DBUS` on all Unix-like systems (Hennadii Stepanov)
caec3cc41b crypto: disable ASan for sha256_sse4 with Clang (fanquake)
fabf4ff237 tracing: fix invalid argument in mempool_monitor (William Casarin)
f9d2c67a0c cmake: Respect user-provided configuration-specific flags (Hennadii Stepanov)
6ed087dede doc: Fix test_bitcoin path (monlovesmango)
2f6c802b54 doc: Fix fuzz test_runner.py path (monlovesmango)
f4d9546425 qt: Replace stray tfm::format to cerr with qWarning (laanwj)
5aa4956cd3 gui: crash fix, disconnect numBlocksChanged() signal during shutdown (furszy)
3665310808 scripted-diff: Use bpf_cflags (MarcoFalke)
4ed5c34abb test: Add imports for util bpf_cflags (MarcoFalke)
3dbd2b3d17 refactor: Remove spurious virtual from final ~CZMQNotificationInterface (MarcoFalke)
64552c83b2 ci: Add workaround for vcpkg's libevent package (Hennadii Stepanov)
85f3e1de68 test: Handle empty string returned by CLI as None in RPC tests (Brandon Odiwuor)
ca70d5cb25 Remove support for RNDR/RNDRRS for aarch64 on Linux (laanwj)

Pull request description:

  Backports for `29.x`:

  - #32184
  - #32187
  - #32248
  - #32286
  - #32312
  - #32336
  - #32353
  - #32356
  - #32389
  - #32437
  - #32454
  - #32469
  - #32483
  - #32553
  - https://github.com/bitcoin-core/gui/pull/864
  - https://github.com/bitcoin-core/gui/pull/868

ACKs for top commit:
  willcl-ark:
    crACK a0d1f69b55

Tree-SHA512: 72aafd17348aa4b602661efd07d48c6af6637c7349e7b032a65f46364e50094723d1c80dced71f0d5ddec59d6dafb72f0463944413a4d810a35cdca6b8272780
2025-05-22 12:05:19 +01:00
fanquake
a0d1f69b55 doc: update release notes for 29.x 2025-05-20 12:30:25 +01:00
Ava Chow
6c0f26d3bd test: check that creating a wallet does not log version info
Github-Pull: #32553
Rebased-From: 4b2cd0b41f
2025-05-20 12:29:25 +01:00
Ava Chow
e685b4eca2 test: Check that the correct versions are logged on wallet load
Github-Pull: #32553
Rebased-From: 39a483c8e9
2025-05-20 12:29:21 +01:00
Ava Chow
25aa15ee7f walletdb: Log the wallet version after it has been read from disk
Logging the wallet version before anything has been read from disk results
in the wrong version being logged.

Also split the last client version logging as it may not always be
present to be logged.

Github-Pull: #32553
Rebased-From: 359ecd3704
2025-05-20 12:29:18 +01:00
Martin Zumsande
cf034172bf test: fix another intermittent failure in wallet_basic.py
During init, the test framework will start using rpc after the
mempool was loaded. It will not wait for postInitProcess or
outstanding transactionAddedToMempool notifications, leading to
a possible race, in which listunspent is being called while the
tx is still in Inactive status. Prevent this by processing
outstanding notifications.

Github-Pull: #32483
Rebased-From: e7ad86e1ca
2025-05-14 13:26:53 +01:00
Martin Zumsande
c966158426 test: Fix intermittent failure in wallet_basic.py
There could be a race with outstanding TxAddedToMempool notifications
being applied to the soon-to-be created wallet.

Fixes an intermittent timeout reproducable by adding a sleep to
AddToWallet.

Github-Pull: #32483
Rebased-From: 07350e204d
2025-05-14 13:26:48 +01:00
enoch
6c4e3de2ac test: Use uninvolved pruned node in feature_pruning undo test
After fixing the nTime variable name, the test_pruneheight_undo_presence
test began failing because node 2, which is involved in reorg testing,
could be on a different chain than other nodes. This caused failures
when trying to fetch blocks from other nodes that didn't recognize
node 2's chain.

Switch to using node 5 instead, which is also a pruned node but isn't
involved in reorg testing, ensuring it stays on the same chain as the
other nodes. This allows the block fetching to work as intended in the
test.

Github-Pull: #32312
Rebased-From: 2aa63d511a
2025-05-14 10:01:32 +01:00
enoch
edd4073d70 test: Fix nTimes typo in feature_pruning test
Fix incorrect variable name in comment (nTimes -> nTime) in
feature_pruning.py. This typo caused the test to always reset
mine_large_blocks.nTime to 0, rather than only on the first run
as intended.

Github-Pull: #32312
Rebased-From: 772ba7f9ce
2025-05-14 10:01:26 +01:00
Hennadii Stepanov
cc2fcdfc5e cmake: Allow WITH_DBUS on all Unix-like systems
This change makes the `WITH_DBUS` option available on all Unix-like
systems, not just Linux, thereby fixing a regression that was
overlooked during the migration from Autotools.

Note: Enabling D-Bus support on macOS still makes no sense, since the
`Notificator` class uses the User Notification Center regardless.

Github-Pull: #32469
Rebased-From: 5b7ed460c7
2025-05-12 14:25:19 +01:00
fanquake
caec3cc41b crypto: disable ASan for sha256_sse4 with Clang
This can alsofail to compile when optimisations are being used, see:
https://github.com/bitcoin/bitcoin/issues/31913.
So disable just ASan for this function under any optimisation level.

Github-Pull: #32437
Rebased-From: 4e8ab5e00f
2025-05-12 14:25:16 +01:00
William Casarin
fabf4ff237 tracing: fix invalid argument in mempool_monitor
The mempool_monitor tracing tool is incorrectly reading the reason
as the first argument. Fix this!

Github-Pull: #32454
Rebased-From: 31c5ebc400
2025-05-09 09:31:38 +01:00
Hennadii Stepanov
f9d2c67a0c cmake: Respect user-provided configuration-specific flags
Github-Pull: #32356
Rebased-From: edde96376a
2025-05-08 16:35:14 +01:00
monlovesmango
6ed087dede doc: Fix test_bitcoin path
This commit fixes a couple command paths for interacting with the
test_bitcoin binary within the Unit Test documentation.

Github-Pull: #32389
Rebased-From: 6cbc28b8dd
2025-05-06 18:04:28 +01:00
monlovesmango
2f6c802b54 doc: Fix fuzz test_runner.py path
This commit fixes the path listed in the documentation for the fuzz
testing test_runner.py. Previously the --help option worked but running
fuzz tests from the documented path did not.

Github-Pull: #32353
Rebased-From: 61f238e84a
2025-05-06 18:04:28 +01:00
laanwj
f4d9546425 qt: Replace stray tfm::format to cerr with qWarning
GUI warnings should go to the log, not to the console (which may not be
connected at all).

Github-Pull: gui#868
Rebased-From: edd46566bd
2025-05-06 18:04:28 +01:00
furszy
5aa4956cd3 gui: crash fix, disconnect numBlocksChanged() signal during shutdown
The crash stems from the order of the shutdown procedure:
We first unset the client model, then destroy the wallet controller—but we leave
the internal wallet models ('m_wallets') untouched for a brief period. As a result,
there’s a point in time where views still have connected signals and access to
wallet models that are not connected to any wallet controller.
Now.. since the clientModel is only replaced with nullptr locally and not destroyed
yet, signals like numBlocksChanged can still emit. Thus, when wallet views receive
them, they see a non-null wallet model ptr, and proceed to call backend functions
from a model that is being torn down.

As the shutdown procedure begins by unsetting clientModel from all views. It’s safe
to ignore events when clientModel is nullptr.

Github-Pull: gui#864
Rebased-From: 71656bdfaa
2025-05-06 18:04:28 +01:00
MarcoFalke
3665310808 scripted-diff: Use bpf_cflags
-BEGIN VERIFY SCRIPT-

 ren() { sed --regexp-extended -i "s/$1/$2/g" $( git grep --extended-regexp -l "$1" ) ; }

 ren 'cflags=\["-Wno-error=implicit-function-declaration"\]' 'cflags=bpf_cflags()'

-END VERIFY SCRIPT-

Github-Pull: #32336
Rebased-From: facb9b327b
2025-05-06 18:04:28 +01:00
MarcoFalke
4ed5c34abb test: Add imports for util bpf_cflags
This is required for the next commit.

Github-Pull: #32336
Rebased-From: fa0c1baaf8
2025-05-06 18:04:27 +01:00