Commit Graph

46293 Commits

Author SHA1 Message Date
Ava Chow
9fc3724fca Merge bitcoin/bitcoin#35083: [30.x] Backports
6c3f40117f doc: update release notes for v30.x (fanquake)
33d66c67ee ci: unconfine seccomp for i686 no IPC (Lőrinc)
9632450ff6 multi_index: fix compilation failure with boost >= 1.91 (Cory Fields)
561d072e05 test: Add missing self.options.timeout_factor scale in tool_bitcoin_chainstate.py (MarcoFalke)

Pull request description:

  Backports:
  * #35080
  * #35175
  * #35202

ACKs for top commit:
  achow101:
    ACK 6c3f40117f

Tree-SHA512: 3acc73ef19001f4a84e388f21215a239fd3017351f561019b4f688165f3fb2f347879ca285aa31b9cd9b96473c5b6edf175a050cf6c6a7ffed61ad3065df603e
2026-05-06 03:18:24 -07:00
fanquake
6c3f40117f doc: update release notes for v30.x 2026-05-05 15:16:09 +02:00
Lőrinc
33d66c67ee ci: unconfine seccomp for i686 no IPC
Docker 29.4.2 blocks `socketcall(2)` in the default seccomp profile:
https://docs.docker.com/engine/release-notes/29/#2942
https://github.com/moby/profiles/releases/tag/seccomp%2Fv0.2.2
https://github.com/moby/moby/pull/52501

That affects the `i686, no IPC` job because it runs 32-bit Linux test binaries inside Docker.

Add Docker's documented `--security-opt seccomp=unconfined` workaround to this job's `CI_CONTAINER_CAP` - the hook `ci/test/02_run_container.py` already appends to `docker run`.

This restores socket availability for the 32-bit test binaries throughout the job:
https://docs.docker.com/engine/security/seccomp/#run-without-the-default-seccomp-profile

Github-Pull: #35202
Rebased-From: 11c9ef92a8
2026-05-05 15:15:29 +02:00
Cory Fields
9632450ff6 multi_index: fix compilation failure with boost >= 1.91
This effectively reverts a3cb309e7c from PR #30194.

That PR reduced the multi_index type signatures as recommended upstream, but
this is no longer supported as of boost 1.91 because it is no longer necessary.
1.91 drops support for the pre-c++11 work-arounds that bloated the type
signatures to begin with.

The upstream `BOOST_MULTI_INDEX_ENABLE_MPL_SUPPORT` define is meant to provide
compatibility with removed features, but it does not work for this case. Using
`indexed_by` directly when defining the `multi_index` (as opposed to inheriting
from it) works with all versions, and avoids the use of the back-compat define.

This is a slight regression when building against boost < 1.91 because the
bloated type signatures are reintroduced in that case, but it's not significant
enough to go to the trouble of introducing version detection and ifdefs.

Github-Pull: #35175
Rebased-From: 0bc9d354df
2026-05-01 07:52:50 +01:00
MarcoFalke
561d072e05 test: Add missing self.options.timeout_factor scale in tool_bitcoin_chainstate.py
Apply the timeout factor inside the add_block function.

Also, force named args for the two expected strings.

Also, add trailing comma for style.

Github-Pull: #35080
Rebased-From: fa02eb87df
2026-04-15 15:29:06 +01:00
merge-script
c5bf64408c Merge bitcoin/bitcoin#34856: [30.x] Backports
75d707b307 doc: update release notes for v30.x (fanquake)
6bba04ba73 depends, qt: Fix build on aarch64 macOS 26.4 (Hennadii Stepanov)
84c2f003b3 wallet: feebumper, fix crash when combined bump fee is unavailable (furszy)
f05988aa05 wallet: fix amount computed as boolean in coin selection (furszy)
72d2b85414 tests: applied PYTHON_GIL to the env for every test (kevkevinpal)
fde84b822e cmake: Migrate away from deprecated SQLite3 target (Daniel Pfeifer)

Pull request description:

  Backports:
  * #34848
  * #34869
  * #34870
  * #34888
  * #34956

ACKs for top commit:
  marcofleon:
    lgtm ACK 75d707b307

Tree-SHA512: 5bbb3f5480a376105644b10b64af6bc7c04eb9ff7ef3a31b586a018441d1aed6dee24c91862ebae0dd3792b2caa76f7f87d94be58f8a42ed696c382cd26c5e4e
2026-04-07 22:22:46 +08:00
fanquake
75d707b307 doc: update release notes for v30.x 2026-04-01 08:35:56 +08:00
Hennadii Stepanov
6bba04ba73 depends, qt: Fix build on aarch64 macOS 26.4
Github-Pull: #34956
Rebased-From: 3aeccb7d73
2026-04-01 08:35:31 +08:00
furszy
84c2f003b3 wallet: feebumper, fix crash when combined bump fee is unavailable
When a large cluster of unconfirmed transactions exceeds the limit,
calculateCombinedBumpFee() returns std::nullopt.

Previously, we continued executing and the optional value was
accessed unconditionally, leading to a std::bad_optional_access
exception.

Fix this by returning early when the returned bumped fee is null.

Note:
This is a crash for the GUI, and an uncaught exception for the RPC
bumpfee and psbtbumpfee.

Github-Pull: #34870
Rebased-From: 6072a2a6a1
2026-03-24 10:30:30 +08:00
furszy
f05988aa05 wallet: fix amount computed as boolean in coin selection
The comparison is evaluated before the assignment, so total_amount
ends up holding a boolean instead of the actual amount:
total_amount = (a - b < c)
which is not what we want here. This has been working by accident.

Github-Pull: #34888
Rebased-From: 0026b330c4
2026-03-24 10:23:33 +08:00
kevkevinpal
72d2b85414 tests: applied PYTHON_GIL to the env for every test
Github-Pull: #34869
Rebased-From: b14f2c76a1
2026-03-20 11:21:07 +08:00
Daniel Pfeifer
fde84b822e cmake: Migrate away from deprecated SQLite3 target
CMake version 4.3 deprecated the imported target `Sqlite::Sqlite3`.
Use the preferred name `Sqlite3::Sqlite3` instead and provide an
alias for older versions of CMake. Also define the same alias when
using vcpkg.

Github-Pull: #34848
Rebased-From: 498b6eb6b5
2026-03-19 14:47:56 +08:00
merge-script
e2edf09d49 Merge bitcoin/bitcoin#34805: [30.x] Backports
f788f1e5cc doc: update release notes for v30.x (fanquake)
0f922ed1f9 ci: check macos bundle structure and codesigning (fanquake)
17778c2b63 macdeploy: use plugins dir to find plugins (fanquake)
671980e779 macdeploy: subprocess out to zip rather than shutil.make_archive (fanquake)
e2f6e3a80f ci: bump cirruslabs actions versions (will)
1bc5233c19 ci: Bump GHA actions versions (MarcoFalke)

Pull request description:

  Backports:
  * #34787
  * #34802
  * #34815

ACKs for top commit:
  willcl-ark:
    ACK f788f1e5cc
  marcofleon:
    lgtm ACK f788f1e5cc

Tree-SHA512: a4fffdd3b39f9cfce046aea454fe5688f48a20d4055f7e5aaeb80db025fc2f400e34d936fdb59dc0f2b8cd014b86dc4b4eb2f21696b02b59551a0b70e7f192c8
2026-03-18 09:15:01 +08:00
fanquake
f788f1e5cc doc: update release notes for v30.x 2026-03-16 20:58:10 +08:00
fanquake
0f922ed1f9 ci: check macos bundle structure and codesigning
Github-Pull: #34787
Rebased-From: d03e3be246
2026-03-16 20:58:07 +08:00
fanquake
17778c2b63 macdeploy: use plugins dir to find plugins
Rather than looking for /translations, which might not exist (it doesn't
in a recent brew installed qt on macOS). i.e:
```bash
ls /opt/homebrew/opt/qtbase/share/qt
doc
libexec
metatypes
mkspecs
modules
plugins
sbom
```

Github-Pull: #34787
Rebased-From: 66d80d57b4
2026-03-16 19:22:30 +08:00
fanquake
671980e779 macdeploy: subprocess out to zip rather than shutil.make_archive
Calling shutil.make_archive(), does not preserve symlinks when using the
zip format, see https://github.com/python/cpython/issues/139679.

Call `zip` using subprocess instead. This code is only run when using a
macos machine, and I think it's safe to assume that zip is available, same
as codesign, and all other tools we call in this script.

Github-Pull: #34787
Rebased-From: ab137cbfe2
2026-03-16 19:22:26 +08:00
will
e2f6e3a80f ci: bump cirruslabs actions versions
Github-Pull: #34815
Rebased-From: 9a968ad35e
2026-03-12 11:22:38 +00:00
MarcoFalke
1bc5233c19 ci: Bump GHA actions versions
Github-Pull: #34802
Rebased-From: fadaa7db33
2026-03-11 15:40:40 +00:00
merge-script
e292a7b507 Merge bitcoin/bitcoin#34689: [30.x] Backports
49a777d0dd doc: update release notes for v30.x (fanquake)
0f9e08f870 doc: update build guides pre v31 (fanquake)
597ac36285 doc: Fix `fee` field in `getblock` RPC result (nervana21)
47ed306689 depends: Allow building Qt packages after interruption (Hennadii Stepanov)
d221d1c633 psbt: validate pubkeys in MuSig2 pubnonce/partial sig deserialization (tboy1337)
e1210ac259 doc: Improve dependencies.md IPC documentation (Ryan Ofsky)
c17a5cd5f8 test: Add missing timeout_factor to zmq socket (MarcoFalke)
304250983e netif: fix compilation warning in QueryDefaultGatewayImpl() (MarcoFalke)
475a5b0504 refactor: Use static_cast<decltype(...)> to suppress integer sanitizer warning (MarcoFalke)
7220ee3fc7 util: Fix UB in SetStdinEcho when ENOTTY (MarcoFalke)

Pull request description:

  Backports:
  * #34093
  * #34219
  * #34597
  * #34690
  * #34702
  * #34706
  * #34713
  * #34789

ACKs for top commit:
  marcofleon:
    ACK 49a777d0dd

Tree-SHA512: b4ce54860b7306b22de75bb093ad574110875253e4ea3ca96a736809c8291dea1144a617c8791f36618d8e367022709ba5cf84ca0e450ef6d76394ab80f22e2f
2026-03-11 10:03:57 +00:00
fanquake
49a777d0dd doc: update release notes for v30.x 2026-03-10 15:41:57 +00:00
fanquake
0f9e08f870 doc: update build guides pre v31
We are testing on FreeBSD 15 (nightly) and macOS 26 (CI).

Github-Pull: #34789
Rebased-From: 6b20ad84e0
2026-03-10 15:41:52 +00:00
nervana21
597ac36285 doc: Fix fee field in getblock RPC result
The `fee` field in the `getblock` RPC result (verbosity 2 and 3) may be
omitted when block undo data is not available. Marking it optional in
the `RPCResult` aligns the documented schema with the runtime behavior.

Github-Pull: #34702
Rebased-From: f580cc7e9f
2026-03-09 15:52:30 +00:00
Hennadii Stepanov
47ed306689 depends: Allow building Qt packages after interruption
Github-Pull: #34713
Rebased-From: 2a7a4f608a
2026-03-09 15:52:30 +00:00
tboy1337
d221d1c633 psbt: validate pubkeys in MuSig2 pubnonce/partial sig deserialization
Add validation for pubkeys in MuSig2 pubnonce and partial signature deserialization to prevent crashes with invalid curve points.

- Validate aggregate and participant pubkeys in PSBT MuSig2 fields

- Add comprehensive test coverage for invalid pubkey rejection

- Ensure proper error handling during PSBT deserialization

Github-Pull: #34219
Rebased-From: f51665bee7
2026-03-09 15:52:30 +00:00
Ryan Ofsky
e1210ac259 doc: Improve dependencies.md IPC documentation
Improve dependencies.md to document IPC dependencies better:

- Link to native_capnp.mk file not capnp.mk file so it's possible to see what
  version of Cap'n Proto is being used in release binaries. This is important
  since #31895 dropped the "Version Used" column and the capnp.mk file does not
  include version number.
- Indicate Capn"Proto is used for IPC and link to multiprocess.md documenting
  the feature.
- Link to correct PR requiring Cap'n Proto 0.7.1. Previous link was
  pointing at PR which required 0.7.0.
- Mention libmultiprocess as a dependency even though it is included as a git
  subtree and can be built as a cmake subproject. Libmultiprocess still needs
  to be built separately when cross compiling, and is useful to build separately
  when developing, and is still a depends package.

Based on 2cf352fd8e from #33623 by willcl-ark
which made similar changes in the 29.x branch.

Github-Pull: #34706
Rebased-From: b87a1c27c9
2026-03-09 15:52:30 +00:00
MarcoFalke
c17a5cd5f8 test: Add missing timeout_factor to zmq socket
Github-Pull: #34690
Rebased-From: fa48f8c865
2026-03-09 15:52:29 +00:00
MarcoFalke
304250983e netif: fix compilation warning in QueryDefaultGatewayImpl()
```
src/common/netif.cpp:137:51: error: comparison of integers of different signs: 'int64_t' (aka 'long') and 'unsigned long' [-Werror,-Wsign-compare]
  137 |         for (nlmsghdr* hdr = (nlmsghdr*)response; NLMSG_OK(hdr, recv_result); hdr = NLMSG_NEXT(hdr, recv_result)) {
      |                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/netlink/netlink.h:220:31: note: expanded from macro 'NLMSG_OK'
  220 | #define NLMSG_OK(_hdr, _len)            NL_ITEM_OK(_hdr, _len, NLMSG_HDRLEN, _NLMSG_LEN)
      |                                         ^                ~~~~  ~~~~~~~~~~~~
/usr/include/netlink/netlink.h:203:10: note: expanded from macro 'NL_ITEM_OK'
  203 |         ((_len) >= _hlen && _LEN_M(_ptr) >= _hlen && _LEN_M(_ptr) <= (_len))
      |           ~~~~  ^  ~~~~~
1 error generated.
```

Happens on FreeBSD 15.0, with the default compiler (Clang 19).

On FreeBSD 14, `/usr/include/netlink/netlink.h` contains:
```
 #define NLMSG_HDRLEN                    ((int)sizeof(struct nlmsghdr))
```

On FreeBSD 15, `/usr/include/netlink/netlink.h` contains:
```
 #define NLMSG_HDRLEN                    (sizeof(struct nlmsghdr))
```

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>

Github-Pull: #34093
Rebased-From: c1361fc42d
2026-03-09 15:52:29 +00:00
MarcoFalke
475a5b0504 refactor: Use static_cast<decltype(...)> to suppress integer sanitizer warning
This refactor does not change any behavior, except for the integer
sanitizer warning.

Can be tested via:

UBSAN_OPTIONS="suppressions=$(pwd)/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" ./bld-cmake/bin/bitcoin-cli -stdinrpcpass uptime

Github-Pull: #34597
Rebased-From: fa6af85634
2026-03-09 15:52:29 +00:00
MarcoFalke
7220ee3fc7 util: Fix UB in SetStdinEcho when ENOTTY
Github-Pull: #34597
Rebased-From: fa692974ac
2026-03-09 15:52:29 +00:00
merge-script
62730a897e Merge bitcoin/bitcoin#34754: [30.x] Partial backport #34650
fbfc778b68 qt: Add patch to fix SFINAE warnings in QAnyStringView with gcc16 (Hennadii Stepanov)
8f5c205aa9 qt: add patches to fix SFINAE errors/warnings with gcc16 (Cory Fields)
b268b4b3d4 qt: add patch to fix build with gcc16 (Cory Fields)
916428f2c2 cmake: Fix `FindQt` module (Hennadii Stepanov)

Pull request description:

  This PR backports commits from https://github.com/bitcoin/bitcoin/pull/34650 not related to Qt update. They fix issues when building with GCC 16 and improves Qt detecting.

ACKs for top commit:
  fanquake:
    ACK fbfc778b68
  willcl-ark:
    utACK fbfc778b68

Tree-SHA512: dd2d1b23aaad64a8eb6a279dbb7def1b29149cfdebd88e0667ebbccfd30ad9762f90dbbc6968eae148e724f0257646939360765c2fae1b5d513a11cf0c2902d8
2026-03-09 15:51:44 +00:00
Hennadii Stepanov
fbfc778b68 qt: Add patch to fix SFINAE warnings in QAnyStringView with gcc16
Github-Pull: #34650
Rebased-From: 473e5f8efc
2026-03-06 18:09:46 +00:00
Cory Fields
8f5c205aa9 qt: add patches to fix SFINAE errors/warnings with gcc16
Meta-Issue: https://qt-project.atlassian.net/browse/QTBUG-143470
Backports:

679e8bda1e
3312e89b47
05f201a3d5

An additional includes fix is needed after the others:
d68fc6ecc8

Github-Pull: #34650
Rebased-From: 3cb4d6066b
2026-03-06 18:09:18 +00:00
Cory Fields
b268b4b3d4 qt: add patch to fix build with gcc16
Backported from:
7fccc79dd5

Github-Pull: #34650
Rebased-From: d7e972a90d
2026-03-06 18:08:53 +00:00
Hennadii Stepanov
916428f2c2 cmake: Fix FindQt module
The `find_package(Qt .. MODULE REQUIRED COMPONENTS ...)` call must treat
any missing component as a fatal error.

Github-Pull: #34650
Rebased-From: c55584575a
2026-03-06 11:33:20 +00:00
merge-script
f4f87c9d3b Merge bitcoin/bitcoin#34459: [30.x] Backports
fdaf6565a9 doc: update release notes for v30.x (fanquake)
0202ae341f doc: Update Guix install for Debian/Ubuntu (MarcoFalke)
2d035b1d4f guix: use a temporary file over sponge (fanquake)
dca7700269 test: valgrind --trace-children=yes for bitcoin wrapper (MarcoFalke)
dd8924909a test: Remove redundant warning about missing binaries (MarcoFalke)
6993b1be78 test: Fix broken --valgrind handling after bitcoin wrapper (MarcoFalke)
d54d7dfe9f wallet: rpc: manpage: fix example missing `fee_rate` argument (SomberNight)
412725b7a3 net: reduce log level for PCP/NAT-PMP NOT_AUTHORIZED failures (ANAVHEOBA)
85f8d28fac build: avoid exporting secp256k1 symbols (Cory Fields)
b7a182c749 doc: fix broken bpftrace installation link (jayvaliya)
1a757af7ea ci: Print verbose build error message in test-each-commit (MarcoFalke)
f5d4dc9419 ci: [refactor] Allow overwriting check option in run helper (MarcoFalke)
7317a0ba1f ci: Always print low ccache hit rate notice (MarcoFalke)
0a768d4a5a fuzz: Use `__AFL_SHM_ID` for naming test directories (marcofleon)
48749cf4c7 miniscript: correct and_v() properties (Antoine Poinsot)
19b3e2e50e test: use ModuleNotFoundError in interface_ipc.py (fanquake)

Pull request description:

  Backports:
  * #34409
  * #34434
  * #34445
  * #34453
  * #34461
  * #34510
  * #34549
  * #34554
  * #34561
  * #34608
  * #34627
  * #34671

ACKs for top commit:
  willcl-ark:
    ACK fdaf6565a9
  marcofleon:
    lgtm ACK fdaf6565a9

Tree-SHA512: dc0ca9a6298519e1dc69d37985f82d87765b6857b491285e3ff77eac5870bf72c662f18ab90b35d3df595dc75f9b0762299259e53588efb7f4994797fdd07213
2026-02-27 10:30:28 +00:00
fanquake
fdaf6565a9 doc: update release notes for v30.x 2026-02-26 09:42:04 +00:00
MarcoFalke
0202ae341f doc: Update Guix install for Debian/Ubuntu
Fixes https://github.com/bitcoin/bitcoin/issues/33982

Co-authored-by: Purple Ninja <129023353+ToRyVand@users.noreply.github.com>

Github-Pull: #34671
Rebased-From: faa70ca764
2026-02-26 09:40:29 +00:00
fanquake
2d035b1d4f guix: use a temporary file over sponge
Remove sponge (moreutils).

Github-Pull: #34627
Rebased-From: c86bce597a
2026-02-25 11:01:55 +00:00
MarcoFalke
dca7700269 test: valgrind --trace-children=yes for bitcoin wrapper
Github-Pull: #34608
Rebased-From: fa5d478853
2026-02-25 10:56:44 +00:00
MarcoFalke
dd8924909a test: Remove redundant warning about missing binaries
The error was added in commit 1ea7e45a1f,
because there was an additional confusing `AssertionError: [node 0]
Error: no RPC connection` instead of just a single `FileNotFoundError:
[Errno 2] No such file or directory`.

This is no longer needed on current master.

Also, the test is incomplete, because it was just checking bitcoind and
bitcoin-cli, not any other missing binaries.

Also, after the previous commit, it would not work in combination with
--valgrind.

Instead of trying to make it complete, and work in all combinations,
just remove it, because the already existing error will be clear in any
case.

This can be tested via:

```sh
 ./test/get_previous_releases.py

 mv releases releases_backup
 # Confirm the test is skipped due to missing releases
 ./bld-cmake/test/functional/wallet_migration.py
 # Confirm the test fails due to missing releases
 ./bld-cmake/test/functional/wallet_migration.py --previous-releases
 mv releases_backup releases

 mv ./releases/v28.2 ./releases/v28.2_backup
 # Confirm the test fails with a single FileNotFoundError
 ./bld-cmake/test/functional/wallet_migration.py
 mv ./releases/v28.2_backup ./releases/v28.2
 # Confirm the test runs and passes
 ./bld-cmake/test/functional/wallet_migration.py

 rm ./bld-cmake/bin/bitcoind
 # Confirm the test fails with a single "No such file or directory",
 # testing with and without --valgrind
 ./bld-cmake/test/functional/wallet_migration.py
 ./bld-cmake/test/functional/wallet_migration.py --valgrind
```

Github-Pull: #34608
Rebased-From: fa29fb72cb
2026-02-25 10:56:43 +00:00
MarcoFalke
6993b1be78 test: Fix broken --valgrind handling after bitcoin wrapper
Prior to this commit, tool_bitcoin.py was failing:

```sh
$ ./bld-cmake/test/functional/tool_bitcoin.py --valgrind
TestFramework (ERROR): Unexpected exception
Traceback (most recent call last):
  File "./test/functional/test_framework/test_framework.py", line 138, in main
    self.setup()
    ~~~~~~~~~~^^
  File "./test/functional/test_framework/test_framework.py", line 269, in setup
    self.setup_network()
    ~~~~~~~~~~~~~~~~~~^^
  File "./test/functional/tool_bitcoin.py", line 38, in setup_network
    assert all(node.args[:len(node_argv)] == node_argv for node in self.nodes)
           ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
```

This commit fixes this issue by running `bitcoin` under valgrind. Also,
it comes with other improvements:

* Drop the outdated valgrind 3.14 requirement, because there is no
  distro that ships a version that old anymore.
* Drop the VALGRIND_SUPPRESSIONS_FILE env var handling, because it was
  presumably never used since it was introduced. Also, the use-case
  seems limited.

Review note:

The set_cmd_args was ignoring the --valgrind test option.

In theory, this could be fixed by refactoring Binaries::node_argv() to
be used here. However, for now, just re-implement the node_argv logic in
set_cmd_args to prepend the valgrind cmd.

Github-Pull: #34608
Rebased-From: fa03fbf7e3
2026-02-25 10:56:40 +00:00
SomberNight
d54d7dfe9f wallet: rpc: manpage: fix example missing fee_rate argument
The function signature for the `send` RPC is:
```
send [{"address":amount,...},{"data":"hex"},...] ( conf_target "estimate_mode" fee_rate options version )
```

The last example in the manpage is missing the `fee_rate` arg, but is trying to specify the `options` arg, by index.
The parser confuses the intended `options` arg as the missing `fee_rate` arg.

See:
```
$ bitcoin-cli -rpcuser=doggman -rpcpassword=donkey -rpcport=18554 -regtest send '{"bcrt1qusm48zmlzwr32csxdw4ar7atw260h22c9ten9l": 0.1}' 1 economical '{"add_to_wallet": false, "inputs": [{"txid":"0b7e1a471dc948b7a6187936b16e6d7d9833629b2f9dd8a392eb89928f63aaad", "vout":0}]}'
error code: -8
error message:
Cannot specify both conf_target and fee_rate. Please provide either a confirmation target in blocks for automatic fee estimation, or an explicit fee rate.
```
vs
```
$ bitcoin-cli -rpcuser=doggman -rpcpassword=donkey -rpcport=18554 -regtest send '{"bcrt1qusm48zmlzwr32csxdw4ar7atw260h22c9ten9l": 0.1}' 1 economical null '{"add_to_wallet": false, "inputs": [{"txid":"0b7e1a471dc948b7a6187936b16e6d7d9833629b2f9dd8a392eb89928f63aaad", "vout":0}]}'
{
  "psbt": "cHNidP8BAHECAAAAAa2qY4+SieuSo9idL5tiM5h9bW6xNnkYprdIyR1HGn4LAAAAAAD9////AkR2DwQAAAAAFgAUpLDwJu+wFRHLQAgKAb0psk7UVd2AlpgAAAAAABYAFOQ3U4t/E4cVYgZrq9H7q3K0+6lYAAAAAAABAIUCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wQC4wMA/////wLIF6gEAAAAABYAFLMY1zihXrefAA0DA5nld4MCPjkrAAAAAAAAAAAmaiSqIant4vYcP3HR3v0/qZnfo2lTdVxpBol5mWK0i+vYNpdOjPkAAAAAAQEfyBeoBAAAAAAWABSzGNc4oV63nwANAwOZ5XeDAj45KwEIawJHMEQCIElTV4pbUrsPR9qHWcioowVv3QVWHizxwevfD0u/I8YyAiBCY3OzF81PSLM00h4ueQkehYuxDFZu7Jk51iejphKnnwEhA0VKdYVSyBpWoxBwTDOupB58Fi3mEBs+u+OOqEYVd2sZACICA98YLWyH7dBCfXVxe7woiLSTgV1mJN8Zc8KgZ77pVSg+GNBMeT5UAACAAQAAgAAAAIABAAAAbAAAAAAA",
  "txid": "625b71b314a6ac4f738634e29dc007cd5edc0427c1ae96ab706d06a62910cea2",
  "hex": "02000000000101adaa638f9289eb92a3d89d2f9b6233987d6d6eb1367918a6b748c91d471a7e0b0000000000fdffffff0244760f0400000000160014a4b0f026efb01511cb40080a01bd29b24ed455dd8096980000000000160014e437538b7f13871562066babd1fbab72b4fba9580247304402204953578a5b52bb0f47da8759c8a8a3056fdd05561e2cf1c1ebdf0f4bbf23c6320220426373b317cd4f48b334d21e2e79091e858bb10c566eec9939d627a3a612a79f012103454a758552c81a56a310704c33aea41e7c162de6101b3ebbe38ea84615776b1900000000",
  "complete": true
}
```

Github-Pull: #34561
Rebased-From: 50cf6838e6
2026-02-25 10:05:09 +00:00
ANAVHEOBA
412725b7a3 net: reduce log level for PCP/NAT-PMP NOT_AUTHORIZED failures
Users running on home networks with routers that don't support PCP (Port
Control Protocol) or NAT-PMP port mapping receive frequent warning-level
log messages every few minutes:

  "pcp: Mapping failed with result NOT_AUTHORIZED (code 2)"

This is expected behavior for many consumer routers that have PCP
disabled by default, not an actionable error.

Add explicit constants for the NOT_AUTHORIZED result code (value 2)
for both NAT-PMP and PCP protocols. Log the first NOT_AUTHORIZED
failure at warning level for visibility, then downgrade subsequent
occurrences to LogDebug to avoid log noise. Other failure types
continue to warn unconditionally.

Fixes #34114

Co-authored-by: willcl-ark <will@256k1.dev>

Github-Pull: #34549
Rebased-From: afea2af139
2026-02-20 09:44:19 +00:00
Cory Fields
85f8d28fac build: avoid exporting secp256k1 symbols
Take advantage of the new secp256k1 option to avoid visibility attributes on
API functions.

While most users of a shared libsecp always want API functions exported so that
they can actually be linked against, we always build it statically. When that
static lib is linked into a (static or shared) libbitcoinkernel, by default its
symbols end up exported there as well.

As libsecp is an implementation detail of the kernel (and any future Core lib),
its symbols should never be exported.

Github-Pull: #34554
Rebased-From: 2ccfdb582b
2026-02-18 16:24:27 +00:00
jayvaliya
b7a182c749 doc: fix broken bpftrace installation link
The bpftrace project moved from iovisor/bpftrace to bpftrace/bpftraceand
removed the separate INSTALL.md file. Installation instructionsare now
in the README.md Quick Start section.

Github-Pull: #34510
Rebased-From: 42ee31e80c
2026-02-09 14:27:59 +00:00
MarcoFalke
1a757af7ea ci: Print verbose build error message in test-each-commit
Github-Pull: #34461
Rebased-From: bbbb78a4f2
2026-02-03 12:33:05 +00:00
MarcoFalke
f5d4dc9419 ci: [refactor] Allow overwriting check option in run helper
Also, use str(e) consistently in all run helpers.

This refactor does not change any behavior.

This can be reviewed by checking that all instances are exactly
identical code now:
$ git grep --function-context 'def run(cmd'

Github-Pull: #34461
Rebased-From: 2222dadabb
2026-02-03 10:53:40 +00:00
MarcoFalke
7317a0ba1f ci: Always print low ccache hit rate notice
Github-Pull: #34453
Rebased-From: fad2876ec3
2026-01-30 11:54:20 +00:00
marcofleon
0a768d4a5a fuzz: Use __AFL_SHM_ID for naming test directories
Use the AFL++ shared memory ID environment variable to create
a deterministic datadir path. This prevents accumulation of stale
directories after a fuzz iteration crashes or times out. During
long fuzz campaigns, this accumulation has occasionally resulted
in running out of disk space.

Github-Pull: #34445
Rebased-From: d3e681bc06
2026-01-30 11:52:57 +00:00