50553 Commits

Author SHA1 Message Date
merge-script
f3fec67c3e Merge bitcoin/bitcoin#36227: Pre 32.x branching updates
9a48134aea docs: Update bips.md (sedited)
57d3d00130 build: Bump version to 32.99 (sedited)

Pull request description:

  Bump the major version and add a note to the bips document about BIP 370.

ACKs for top commit:
  fanquake:
    ACK 9a48134aea
  janb84:
    ACK 9a48134aea

Tree-SHA512: 1be9dacd2c14d169a8495864bd66c05966f3cffe086649c1ded0827439934e543975283e394ed67ae4ff3d433531168481e1b0b1507071175504285f476d7ea4
2026-09-11 17:11:36 +01:00
sedited
9a48134aea docs: Update bips.md 2026-09-11 13:48:42 +02:00
sedited
57d3d00130 build: Bump version to 32.99 2026-09-11 13:46:16 +02:00
merge-script
4d463de804 Merge bitcoin/bitcoin#36226: doc: Move release notes to wiki ahead of branch-off
5df082721c doc: Move release notes to wiki ahead of branch-off (sedited)

Pull request description:

  Draft release notes are ready for editing over here: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/v32.0-Release-Notes-Draft

ACKs for top commit:
  fanquake:
    ACK 5df082721c
  hebasto:
    ACK 5df082721c.

Tree-SHA512: 1635b896ad38d9abb13dbef183076e25e4458881d5ad76bc9382d947eac188ac802cb2b9b4ff11e34b79c04ced11475e2ad9757a2ae18471e1db5b2fccd8dba7
2026-09-11 12:29:47 +01:00
sedited
5df082721c doc: Move release notes to wiki ahead of branch-off 2026-09-11 12:54:28 +02:00
merge-script
8c64ff0242 Merge bitcoin/bitcoin#34914: contrib: replace deprecated --deep codesign flag, fix accidental --verify skip on ci
da7d7dbc7c contrib: remove deprecated --deep codesign flag (Sjors Provoost)
ad4eeaf859 ci: avoid modifying GOAL in 03_test_script.sh (Sjors Provoost)

Pull request description:

  Replace the deprecated `codesign --deep` with explicit, and minimal, per-component signing of Frameworks, Plugins and the top-level bundle.

  The CI signature check introduced in #34787 is updated to use `--strict`.

  Can be tested with:

  ```sh
  cmake -B build -DBUILD_GUI=ON
  # delete artifacts before rebuilding the `deploy` target
  rm -rf build/Bitcoin-Qt.app build/bitcoin-macos-app.zip
  cmake --build build -t deploy
  codesign --verify --deep --strict --verbose=4 build/dist/Bitcoin-Qt.app
  ```

  Fixes #32486, supersedes #33592 (this is a condensed version)

  Additionally this PR modifies `03_test_script.sh` to avoid modifying `GOAL` in place. That was causing the `codesign --verify` step to get skipped entirely.

ACKs for top commit:
  fanquake:
    ACK da7d7dbc7c - I think we should try and cleanup `macdeployqtplus` somewhat, but that can happen in future.
  willcl-ark:
    Light ACK da7d7dbc7c

Tree-SHA512: 54e6d38a327a9a241d842728390770e7819d45180c69c288f1e26c5706aff8ebedbb4f608c4a45b2b186e3369181b116aa82134a38fcaabf3af3711be14b9863
2026-09-11 10:55:50 +01:00
merge-script
501ba4cad4 Merge bitcoin/bitcoin#36196: contrib, kernel: fixed seeds, chainparams, headerssync params, and assumeutxo updates pre-32.0
fed50258f8 kernel: add recent assumeutxo snapshot (Ava Chow)
7eb4cec1a9 kernel: Update headerssync params (Ava Chow)
42d93d40de kernel: update chainTxData (Ava Chow)
a25511dfbc kernel: update defaultAssumeValid and minimumChainWork (Ava Chow)
67726a63a4 kernel: update assumed blockchain and chainstate sizes (Ava Chow)
fcfc1df041 contrib: Update fixed seeds (Ava Chow)
6385aa1df8 contrib: Update makeseeds for 30.3 and 31.x (Ava Chow)

Pull request description:

  All the updates per the release process, except asmap.

  Assumeutxo snapshots are available at https://achow101.com/files/utxo-snapshots/

ACKs for top commit:
  fanquake:
    ACK fed50258f8
  sedited:
    Reproduced ACK fed50258f8

Tree-SHA512: ae6d79a5216fe6a919376aa36da9afd1b0ae81d8aba96ab88fa85f3c5c0b5fe13d91ead66103ca7ba54b05a638363145c31d40c2050ec79bf3dab4fb1b4da666
2026-09-11 10:39:19 +01:00
merge-script
92986c7362 Merge bitcoin/bitcoin#36213: Release: 32.0 translations update
2c2667eaa9 qt: 32.0 translations update (Hennadii Stepanov)

Pull request description:

  This PR follows our [Release Process](fc4f35fdce/doc/release-process.md) and concludes the translation-related work for this release cycle.

  It is one of the steps required _before_ branch-off, as scheduled in https://github.com/bitcoin/bitcoin/issues/33607.

  Previous similar PR: https://github.com/bitcoin/bitcoin/pull/34718.

  **A note for reviewers:**
  The actual translations on Transifex are a moving target. As a result, your diff after running [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) may differ.

ACKs for top commit:
  sedited:
    ACK 2c2667eaa9

Tree-SHA512: 1b9fdb58733185031828cf46ad9044262ee84f29f98f41ce6990e533c8e835634c1c66ffcae8a938dc5e2df870048f7213f75160b1eb414555eb16c8df01b6e1
2026-09-11 10:28:35 +01:00
merge-script
1a4e034ddb Merge bitcoin/bitcoin#36209: guix: cache GUI depends separately
1fe87c2505 guix: cache GUI depends separately (will)

Pull request description:

  Alternative to #35929

  The GUI and non-GUI Guix profiles produce different depends build IDs. However, depends deletes the existing per-package cache directory when storing a new build. Sharing a cache root therefore causes each profile to evict the other's packages, forcing rebuilds on subsequent runs.

  This PR keeps these packages in separate `GUIX/BUILD` and `GUIX/GUI` directories under the cache root. This also keeps them separate from ordinary developer builds when BASE_CACHE is being used there.

  #35929 replaces `GUIX_ENVIRONMENT` in package ID generation with a hash of selected Guix inputs. Its current implementation covers the manifests, patches, pinned Guix revision and additional flags, but that list needs to stay aligned with how we construct the environment and may therefore be brittle to future changes.

  In this version I prefer keeping the resolved environment in the cache key and simply keeping the caches separate.

  #### Tradeoffs vs #35929

  This PR means building and storing some dependencies twice, which I consider a reasonable cost for simpler cache tracking/invalidation. This is likely going to be the case for Linux anyway i.e after a change like #36193 or #25573.

ACKs for top commit:
  achow101:
    ACK 1fe87c2505
  hebasto:
    ACK 1fe87c2505, tested on Ubuntu 26.04 by doing several consecutive Guix builds interleaved with branch switches and observing the cache behavior.
  sedited:
    ACK 1fe87c2505

Tree-SHA512: 33d8926fd8cc81338dd2d2c389a0ae9388256da5b1fdebabf05308f057535d1240d6e8bc0fc30a11a80cd3677c39067b0a5c3cc87272d162d8dbe727d8e1cc7c
2026-09-11 10:19:02 +02:00
merge-script
a6b330973e Merge bitcoin/bitcoin#36150: indexes: set prune lock to genesis before first block
9b22995140 indexes: set prune lock to genesis before first block (Andrew Toth)
0ae3b40c27 test: characterize startup with newly added prune and index (Andrew Toth)

Pull request description:

  When setting both a new index and prune size and restarting an unpruned node, the node will prune the block store first and then the index will fail to start syncing.

  Fix this by setting the prune lock to 0 if the index does not yet have a best block.

ACKs for top commit:
  sedited:
    Re-ACK 9b22995140
  fjahr:
    Code review ACK 9b22995140

Tree-SHA512: fff46c65c6350bdcbb3e0bbc8cde655c619ce48c19730e3caf3175257f7d3cb1abb8cce07f84cf78e20e54f9e3e4963da072cdde6d01a1ceb8a731920220cd13
2026-09-11 09:59:12 +02:00
Ava Chow
fed50258f8 kernel: add recent assumeutxo snapshot 2026-09-10 13:45:30 -07:00
Ava Chow
7eb4cec1a9 kernel: Update headerssync params 2026-09-10 13:45:29 -07:00
Andrew Toth
9b22995140 indexes: set prune lock to genesis before first block
When setting both a new index and prune size and restarting
an unpruned node, the node will prune the block store first
and then the index will fail to start syncing.

Fix this by setting the prune lock to 0 if the index does not
yet have a best block.
2026-09-10 14:10:47 -04:00
merge-script
fc6923cec5 Merge bitcoin/bitcoin#36215: asmap: Make version match externally computed hashes
7ee94bf4b0 asmap: Make outputted ASMap version match externally computed hashes (Hodlinator)

Pull request description:

  #### Problem

  Running CLI utilities such as `sha256sum` on the encoded asmap blob, and then grepping for the outputted hash in the `bitcoind` debug.log was unsuccessful.

  #### Solution

  * Change the version computation from double to single SHA256
    *Note: This invalidates serialized AddrMan data which forces re-bucketing.*
  * Avoid reversing byte order when logging the version

  Inspired by https://github.com/bitcoin/bitcoin/pull/36201#issuecomment-5605080265 + https://github.com/bitcoin/bitcoin/pull/36201#pullrequestreview-5158109401

ACKs for top commit:
  fjahr:
    tACK 7ee94bf4b0
  jurraca:
    ACK 7ee94bf4b0
  sedited:
    ACK 7ee94bf4b0

Tree-SHA512: 362edea9ebd62eeb4f9a0677386018826ca4454028d7132c31940a6ea2abf89305da916c8786aaf41012dab8c79cdc8b171c1cb3a5d815ad10ce3df1c615c45f
2026-09-10 19:35:07 +02:00
Hennadii Stepanov
2c2667eaa9 qt: 32.0 translations update 2026-09-10 17:21:33 +01:00
merge-script
51b540c59a Merge bitcoin/bitcoin#36218: build: avoid pipe2 on Darwin (for now)
9c7748315d build: avoid pipe2 on Darwin (for now) (fanquake)

Pull request description:

  macOS 27 will support `pipe2` at runtime, and Xcode 27 (and Command Line Tools) support it at compile time. This means a macOS < 27 system will detect support for `pipe2`, but then binaries will crash at runtime, as pipe2 is not available.

  Just avoid `pipe2` on macOS for now, and continue using `pipe`. Note that the compilation also produces availability warnings:
  ```bash
  [415/1121] Building CXX object src/util/CMakeFiles/bitcoin_util.dir/tokenpipe.cpp.o
  ../src/util/tokenpipe.cpp:89:9: warning: 'pipe2' is only available on macOS 27.0 or newer [-Wunguarded-availability-new]
     89 |     if (pipe2(fds, O_CLOEXEC) != 0) {
        |         ^~~~~
  /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/unistd.h:219:9: note: 'pipe2' has been marked as being introduced in macOS 27.0 here, but the deployment target is macOS 26.0.0
    219 | int     pipe2(int [2], int);
        |         ^
  ../src/util/tokenpipe.cpp:89:9: note: enclose 'pipe2' in a __builtin_available check to silence this warning
     89 |     if (pipe2(fds, O_CLOEXEC) != 0) {
        |         ^~~~~
     90 |         return std::nullopt;
     91 |     }
  ```
  and this will need to be backported. When macOS 27 is released, we could change approach, but wanted to PR something straightforward (and backportable) for `32.x`.

ACKs for top commit:
  hebasto:
    ACK 9c7748315d, tested on macOS Tahoe 26.6.2 with CLT 27.0:
  willcl-ark:
    ACK 9c7748315d

Tree-SHA512: 5aa97b93e7038344a5118eef2660b101e443eff52ab94fb4b8eb88ec4e09b8a3000b9b4e2aa59b406d8acbb6d9add8f0c3a2dd5e1db53b1dfc97a0fcbaf48995
2026-09-10 17:03:21 +01:00
merge-script
a42da819a9 Merge bitcoin/bitcoin#36174: http: throttle send buffer when client stops draining
28b69e2988 http: stop processing requests from a client when send buffer is full (Matthew Zipkin)

Pull request description:

  This is a follow-up to #36123 and applies a second throttle mechanism to the send-side. If a misbehaving client refuses to read data from the socket, the server will now stop processing requests instead of packing more and more responses to `m_send_buffer` without bound.

  After we parse a complete request from a client, **before** we dispatch it to a worker, we quickly lock and check the size of `m_send_buffer`. If there's already 32MiB of data there (reusing `MAX_BODY_SIZE` here, open for bikeshedding...) we do not dispatch the request to a worker, leaving it in place as `m_req`.

  This was found and disclosed responsibly by the Red Team 🟥.

ACKs for top commit:
  hodlinator:
    ACK 28b69e2988
  janb84:
    re ACK 28b69e2988
  sedited:
    ACK 28b69e2988

Tree-SHA512: ecefdf6406fa40aa28fe284fd4b5a148a0e4ef84b857e373cc7a55c84bac5c7a928b09c088d9ebe5a2adadfbd95a5ae1644f024947ed891da067130d1aa84ae6
2026-09-10 14:27:09 +02:00
Sjors Provoost
da7d7dbc7c contrib: remove deprecated --deep codesign flag
Replace the deprecated `codesign --deep` with explicit per-component
signing of Frameworks, Plugins and the top-level bundle.

CI is updated to verify with --deep --strict.

Can be verified with:
codesign --verify --deep --strict --verbose=4 build/dist/Bitcoin-Qt.app

Co-authored-by: amisha <amishhhaaaa@gmail.com>
2026-09-10 14:03:44 +02:00
fanquake
9c7748315d build: avoid pipe2 on Darwin (for now)
macOS 27 will support pipe2 at runtime, and Xcode 27 (and Command Line
Tools) support it at compile time. This means a macOS < 27 system will
detect support for pipe2, but then binaries will crash at runtime, as
pipe2 is not available.

Just avoid pipe2 on macOS for now, and continue using pipe. Note that
the compilation also produces availability warnings, and this will need
to be backported.
2026-09-10 12:22:30 +01:00
will
1fe87c2505 guix: cache GUI depends separately
The GUI manifest has a distinct Guix profile and consequently produces
different depends build IDs. Previously this mean that the gui build
would invalidate the build cache for the non-guix build.

Move guix builds under a GUIX/ root, and further BUILD/ and GUI/ trees,
so that local developer builds, GUI and non GUI guix builds can all
co-exist together.

There will end up being more copies of build depends packages, (local
builds, and two guix variants), but these all use different toolchains
and toolsets so this is desirable.
2026-09-10 11:44:54 +01:00
Hodlinator
7ee94bf4b0 asmap: Make outputted ASMap version match externally computed hashes
* Change version from double to single SHA256
  This invalidates serialized AddrMan data which forces re-bucketing.

* Avoid reversing byte order for ASMap version in log
  Makes it easier to match it with externally computed hashes of the encoded file.
2026-09-10 12:37:44 +02:00
merge-script
4a15e0b6f9 Merge bitcoin/bitcoin#36195: test: get_previous_releases.py use PREVIOUS_RELEASES_DIR
ecdf9db906 test: get_previous_releases.py use `PREVIOUS_RELEASES_DIR` (David Gumberg)

Pull request description:

  `test_framework.py` already uses `PREVIOUS_RELEASES_DIR` to set a default directory to find previous releases, so should `get_previous_releases.py` when fetching them.

  This is more convenient for local development when using multiple worktrees where having `$PREVIOUS_RELEASES_DIR` set is useful.

  Also allows some CI code to get deleted.

  _LLM Usage Disclosure: Qwen3.8-0.5B generated the next 800,000 pages of my epistolary novel while I made this PR._

ACKs for top commit:
  hodlinator:
    ACK ecdf9db906
  willcl-ark:
    ACK ecdf9db906

Tree-SHA512: cd99ff118bdf0425b286ad1efb99be3b53997e4f0915722923e79081ee0820c23a2177b2b4a45153d1d5e2963363b5b59d7840e203d7722e46204f9bee2f6485
2026-09-10 11:33:10 +01:00
merge-script
b5ef74b248 Merge bitcoin/bitcoin#36211: doc: Fix PR reference in productivity guide
b3a9b84b37 doc: Correct upstream-pull reference (littleyier)

Pull request description:

  Notice that the refspec in `doc/productivity.md` maps to `upstream-pull/NUMBER`, but the doc mentions `upstream-pull/NUMBER/head` right below it.
  Dropping the trailing `/head` so the `git show` / `git chekcout` examples actually match up. Tested both locally in a scratch repo and they work fine now.

ACKs for top commit:
  sedited:
    ACK b3a9b84b37

Tree-SHA512: e5bb1b093d6cc1445988c5c74c7282efa39edf599093719ccb31a8ac11ab9bf4f4857cfb8fe48af558fd99ac25e2b5a106f487a8d022bdb3074cc1bc3824fa88
2026-09-10 11:00:10 +01:00
merge-script
5a5b1ed747 Merge bitcoin/bitcoin#36201: Update embedded asmap to 1788801420
3c91db262b net: Update embedded asmap to 1788801420 (Fabian Jahr)

Pull request description:

  Depends on #36199 and https://github.com/bitcoin-core/asmap-data/pull/70 getting merged and receiving enough attestations. The run just happened so I hope we'll get these ACKs before the end of the week.

ACKs for top commit:
  hodlinator:
    ACK 3c91db262b

Tree-SHA512: a93aa1e25a7484e79eb7f8fa1d4871ee5a1356c2d9638a503729e31e629ae9448d4c0b82d8016cf8b0c1f7ec2d86ee03a9b14b27a5c3e12b39fb7cff4232086b
2026-09-10 10:53:58 +01:00
littleyier
b3a9b84b37 doc: Correct upstream-pull reference 2026-09-10 06:02:48 +09:00
merge-script
fc4f35fdce Merge bitcoin/bitcoin#35513: rpc: help metadata fixes
8976ba50a2 rpc: require connman in getnetworkinfo (Ruslan Kasheparov)
975229580f rpc: Fix inaccuracies in RPC help docs (Ruslan Kasheparov)

Pull request description:

  Align RPC help documentation with actual implementation.

ACKs for top commit:
  sedited:
    ACK 8976ba50a2
  willcl-ark:
    ACK 8976ba50a2

Tree-SHA512: 9cea335aa1a74e3c598ce43cfa9a99b992b4436203e9b5e90a9e8b3bbd3cbf7ef3d5f112f426c7d13ba7b0ff9723f84be8fbfff23bdf940de51ef15708ea5ac4
2026-09-09 22:22:57 +02:00
Ava Chow
af83bacdf9 Merge bitcoin/bitcoin#36202: doc: add rel note about potential CJDNS removal
d6a2341632 doc: add rel note about potential CJDNS removal (fanquake)

Pull request description:

  Related to discussion in #36041.

ACKs for top commit:
  achow101:
    ACK d6a2341632
  mzumsande:
    ACK [d6a2341](d6a2341632)
  willcl-ark:
    ACK d6a2341632

Tree-SHA512: 4e421a2d7a17202059d34878a0f702cdd12aa41693c281d36e4c0c670e67eef7631a54b66cb237082e5fa491873be6992b6d378cb6c2145fc5c870826225afcc
2026-09-09 12:58:53 -07:00
David Gumberg
ecdf9db906 test: get_previous_releases.py use PREVIOUS_RELEASES_DIR
`test_framework.py` already uses `PREVIOUS_RELEASES_DIR` to set a
default directory to find previous releases, so should
`get_previous_releases.py` when fetching them.

This is more convenient for local development when using multiple
worktrees where having `$PREVIOUS_RELEASES_DIR` set is useful.

Also allows some CI code to get deleted.
2026-09-09 10:16:16 -07:00
Matthew Zipkin
28b69e2988 http: stop processing requests from a client when send buffer is full
Prevents a memory exhaustion case where a misbehaving client
refuses to read responses and drain the socket buffer. Instead of
packing more data on to the server-side m_send_buffer, stop
dispatching requests from the client to workers
2026-09-09 13:15:46 -04:00
Sjors Provoost
ad4eeaf859 ci: avoid modifying GOAL in 03_test_script.sh
The modification caused "codesign --verify" to be silently skipped.

Introduce BUILD_TARGETS for the cmake target list so GOAL remains
unmodified throughout the script.
2026-09-09 18:34:54 +02:00
merge-script
7e75b3b922 Merge bitcoin/bitcoin#36116: iwyu: Fix warnings in src/rpc and treat them as errors
7d54a88b44 iwyu: Fix warnings in `src/rpc` and treat them as errors (Hennadii Stepanov)
462ff18d79 iwyu, refactor: Fix includes in some source files (Hennadii Stepanov)

Pull request description:

  This PR continues the ongoing effort to enforce IWYU warnings.

  See [Developer Notes](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#using-iwyu).

ACKs for top commit:
  stickies-v:
    re-ACK 7d54a88b44

Tree-SHA512: aeeb8e2851e4012c4e8474c524fafae01f6c323537d533c693e9b018ee2752cedf19b35b3ac0433a287b2ad7953ae0a466d20ddd3a00e854985d2404abce2512
2026-09-09 17:05:13 +01:00
merge-script
9d4325f403 Merge bitcoin/bitcoin#36203: Update secp256k1 subtree to latest master
da3401e50f Squashed 'src/secp256k1/' changes from 687155df6b..a7f264373e (fanquake)

Pull request description:

  Primarily prompted by https://github.com/bitcoin-core/secp256k1/pull/1932, which came up here: https://github.com/bitcoin/bitcoin/pull/35301#discussion_r3946630066. See https://github.com/bitcoin-core/secp256k1/issues/1930.

  Includes:
  * https://github.com/bitcoin-core/secp256k1/pull/1878
  * https://github.com/bitcoin-core/secp256k1/pull/1908
  * https://github.com/bitcoin-core/secp256k1/pull/1910
  * https://github.com/bitcoin-core/secp256k1/pull/1911
  * https://github.com/bitcoin-core/secp256k1/pull/1915
  * https://github.com/bitcoin-core/secp256k1/pull/1916
  * https://github.com/bitcoin-core/secp256k1/pull/1922
  * https://github.com/bitcoin-core/secp256k1/pull/1923
  * https://github.com/bitcoin-core/secp256k1/pull/1924
  * https://github.com/bitcoin-core/secp256k1/pull/1928
  * https://github.com/bitcoin-core/secp256k1/pull/1931
  * https://github.com/bitcoin-core/secp256k1/pull/1932

ACKs for top commit:
  theStack:
    ACK ba9050ac9b
  sedited:
    Re-ACK ba9050ac9b

Tree-SHA512: ff44b7efb77f6f817a5f78c3731cf736ca196be63cb4e0688457e5b01e2fb6dbe5f6ca5257a1d31cdf4d8a59340eba2c99e14ad07e3c86dcd1925dead200982c
2026-09-09 16:38:13 +02:00
Fabian Jahr
3c91db262b net: Update embedded asmap to 1788801420 2026-09-09 16:27:25 +02:00
merge-script
ffe6aa57fe Merge bitcoin/bitcoin#36199: net: treat RFC 9637 new IPv6 documentation range as invalid
b48a27691d fuzz: assert invalid addresses are not routable (Fabian Jahr)
e6c775c6d6 net: treat RFC 9637 new IPv6 documentation range as invalid (Fabian Jahr)

Pull request description:

  [RFC 9637](https://www.rfc-editor.org/rfc/rfc9637.html) was newly introduced in 2024 but we don't handle this yet. This pull handles it in the same way as RFC 3849 of which 9637 is an extension.

  This came up in #36196 because the new `GetMappedAS()` benchmark from https://github.com/bitcoin/bitcoin/pull/35285 asserts on these addresses being unmapped. New maps using `--fill` couldn't be embedded because the filling assigns these addresses. Making this range invalid in the code fixes the benchmarks.

ACKs for top commit:
  0xB10C:
    ACK b48a27691d
  willcl-ark:
    ACK b48a27691d
  hodlinator:
    re-ACK b48a27691d
  sedited:
    ACK b48a27691d

Tree-SHA512: d28552c0620f2b4c7de311d9ddf90bffb0f2dfdac4d76e305fc6b8138c8f3f070958a8a50679b45e1875cb5b24f6a7a10297ad327200b3ed5cd5ab5338187bcc
2026-09-09 16:24:22 +02:00
fanquake
ba9050ac9b Update secp256k1 subtree to latest master 2026-09-09 13:32:23 +01:00
fanquake
da3401e50f Squashed 'src/secp256k1/' changes from 687155df6b..a7f264373e
a7f264373e Merge bitcoin-core/secp256k1#1923: group: VERIFY input/output ge/gej/fe exhaustively
3f6ee3e989 Merge bitcoin-core/secp256k1#1931: tests: cover rejection of invalid plain seckey alongside a valid one
05f9289984 tests: silentpayments: cover rejection of invalid plain seckey alongside a valid one
978d3fa7f9 Merge bitcoin-core/secp256k1#1932: silentpayments: drop "empty key arrays must be NULL" requirement
ad3688d1e5 changelog: mention dropped NULL requirement for silentpayments key arrays
89e3a70662 silentpayments: drop "empty key arrays must be NULL" requirement
c36269ef95 group/refactor: Use constant expression for readability
031dbae659 group: Export secp256k1_ge_set_ge(j)_zinv properly in group.h
4f3bd158d5 group: Cover all input/output ge/gej/fe with VERIFY calls
0711443e6d group: Add missing FE_VERIFY checks on rzr outputs
1bd7492181 group: Remove redundant SECP256K1_GEJ_VERIFY
cddd125f72 group: Split functions into pre/post VERIFY and _impl
aa0af2fac4 Merge bitcoin-core/secp256k1#1928: tests: add coverage for exact-size DER signature serialization
500ccb60f7 tests: add coverage for exact-size DER signature serialization
a9a61831bd Merge bitcoin-core/secp256k1#1924: tests: add coverage for the DER long form length encoding
ddb1dfa770 tests: add coverage for the DER long form length encoding
1c8babcd6c Merge bitcoin-core/secp256k1#1922: field: Check that argument of _fe_set_int() is a constant
bae6b89a20 Merge bitcoin-core/secp256k1#1908: refactor: replace `_get_hash_context` with direct `->hash_ctx` access
f6d821db03 field: Fix typo in comment
1ce0066e60 field: Check that argument of _fe_set_int() is a constant
c8745f6b3a refactor: replace `_get_hash_context` with direct `->hash_ctx` access
3397f3cb28 Merge bitcoin-core/secp256k1#1878: field: correct `_fe_half` docs (output is not normalized, input requires magnitude <= 31)
86c7cbaf5a Merge bitcoin-core/secp256k1#1915: refactor: Move (de)ser helpers from musig and eckey to group
bfd40bd0ce refactor: Rename privkey to seckey in eckey helpers
d8ee6e6cf6 refactor: Move parsing helpers from musig to group
a37d7cc064 Merge bitcoin-core/secp256k1#1916: ecdh/ellswift: simplify seckey loading with `_scalar_set_b32_seckey`
3d69f4ce1c Merge bitcoin-core/secp256k1#1911: refactor: rename `ctx` param to `ecmult_gen_ctx` where applicable
c00dc81810 ecdh/ellswift: simplify seckey loading with `_scalar_set_b32_seckey`
81a5a7567d refactor: rename `ctx` param to `ecmult_gen_ctx` where applicable
2577fb1888 refactor: Move pubkey parsing and serialization from eckey to group
439278a649 Merge bitcoin-core/secp256k1#1910: scratch: reject sizes that overflow when added to header
3d4340d173 scratch: reject sizes that overflow when added to header
56e031a148 field: correct `_fe_half` docs (output is not normalized, input requires magnitude <= 31)

git-subtree-dir: src/secp256k1
git-subtree-split: a7f264373e5b187536c21e434f632b571b3ab178
2026-09-09 13:32:23 +01:00
Hennadii Stepanov
7d54a88b44 iwyu: Fix warnings in src/rpc and treat them as errors 2026-09-09 12:48:55 +01:00
Hennadii Stepanov
462ff18d79 iwyu, refactor: Fix includes in some source files
This change is required for the subsequent commit to compile.
2026-09-09 12:48:38 +01:00
merge-script
2285d1931a Merge bitcoin/bitcoin#35468: ci, iwyu: Request IPC file generation explicitly
a31eb8bfa4 ci, iwyu: Request IPC file generation explicitly (Hennadii Stepanov)

Pull request description:

  Fixes a part of https://github.com/bitcoin/bitcoin/issues/35361:
  > ... other sporadic error output:
  >
  > ```
  > [1](https://github.com/bitcoin/bitcoin/actions/runs/26292243180/job/77395542650#step:11:11661)
  > error: no such file or directory: '/home/admin/actions-runner/_work/_temp/build/src/ipc/capnp/common.capnp.c++'
  > error: no input files
  > error: unable to handle compilation, expected exactly one compiler job in ''
  > error: no such file or directory: '/home/admin/actions-runner/_work/_temp/build/src/ipc/capnp/common.capnp.proxy-client.c++'
  > error: no input files
  > error: unable to handle compilation, expected exactly one compiler job in ''
  > error: no such file or directory: '/home/admin/actions-runner/_work/_temp/build/src/ipc/capnp/common.capnp.proxy-server.c++'
  > error: no input files
  > error: unable to handle compilation, expected exactly one compiler job in ''
  > error: no such file or directory: '/home/admin/actions-runner/_work/_temp/build/src/ipc/capnp/common.capnp.proxy-types.c++'
  > error: no input files
  > ```

ACKs for top commit:
  ryanofsky:
    Code review ACK a31eb8bfa4. Thanks for the updates! This is a minimal fix getting rid of IWYU "fatal error" output from IPC files in the iwyu CI job.
  willcl-ark:
    ACK a31eb8bfa4

Tree-SHA512: 7059c3adbb1f8cb5f69149b45e180b01753dc93c852829eccbc70e6ddcfa212dec45a0e8625c6cb0ea3b8ee05f8f17181f36fd4d277e8f6cc9fe4578b0228166
2026-09-09 12:19:14 +01:00
Fabian Jahr
b48a27691d fuzz: assert invalid addresses are not routable
Co-authored-by: Hodlinator <172445034+hodlinator@users.noreply.github.com>
2026-09-09 13:11:02 +02:00
Fabian Jahr
e6c775c6d6 net: treat RFC 9637 new IPv6 documentation range as invalid 2026-09-09 13:09:23 +02:00
merge-script
005ea9f42e Merge bitcoin/bitcoin#35778: scripted-diff: Use C.UTF-8 locale in all shell scripts
46654094be lint: Use C.UTF-8 locale only in shell scripts (Hennadii Stepanov)
982ee64938 lint: Skip `libmultiprocess` subtree in `lint-shell-locale.py` (Hennadii Stepanov)
1194918a5d scripted-diff: Use C.UTF-8 locale in all shell scripts (Hennadii Stepanov)

Pull request description:

  This unifies the used locales across the entire codebase.

  Additionally, the `test/lint/lint-shell-locale.py` linter has been adjusted accordingly.

  Also see https://github.com/bitcoin/bitcoin/pull/35775#issuecomment-5047323736.

ACKs for top commit:
  fanquake:
    ACK 46654094be

Tree-SHA512: e72e076614602937c5fe6ca27d0bb7bebe4464ef28455c43a1bd1d700ffeeea684365fa5749cb1e5fdad56178a1e88a544b5854783b57aef468efb105a03af57
2026-09-09 12:02:03 +01:00
merge-script
064122af26 Merge bitcoin/bitcoin#36181: ci: Upgrade IWYU to 0.27 compatible with Clang 23
3b944f194f iwyu: Switch to generated Clang intrinsics mapping file (Hennadii Stepanov)
1b5ee3be59 ci: Upgrade IWYU to 0.27 compatible with Clang 23 (Hennadii Stepanov)
6ed7c535ad iwyu: Prefer canonical headers (Hennadii Stepanov)

Pull request description:

  The new IWYU [release](https://github.com/include-what-you-use/include-what-you-use/tree/clang_23) includes several improvements and bug fixes, including:
  - https://github.com/include-what-you-use/include-what-you-use/pull/1991
  - https://github.com/include-what-you-use/include-what-you-use/pull/2013
  - https://github.com/include-what-you-use/include-what-you-use/pull/2014
  - https://github.com/include-what-you-use/include-what-you-use/pull/2058
  - https://github.com/include-what-you-use/include-what-you-use/pull/2062
  - https://github.com/include-what-you-use/include-what-you-use/pull/2093

  This allows us to remove all corresponding workarounds and patches.

  Additionally, the compiler intrinsics mapping has switched from a hardcoded file to a dynamically generated one.

ACKs for top commit:
  fanquake:
    ACK 3b944f194f
  l0rinc:
    shallow code review ACK 3b944f194f

Tree-SHA512: b4b92be735244c00f667657f55501d60fd65a1b77e39b40275cdb7b82c95b6b53e9df6fa7f36560f0578a175bf61f6dc4409e167c6fdbc2248d957c17a916a67
2026-09-09 12:00:40 +01:00
merge-script
99f81fe029 Merge bitcoin/bitcoin#35303: policy: fix negative CFeeRate::ToString() formatting
4200f8163a policy: fix negative CFeeRate::ToString() formatting (joaonevess)

Pull request description:

  `CFeeRate` may represent modified/effective fee rates, for example after a negative `prioritisetransaction` fee delta.

  Previously, `CFeeRate::ToString()` formatted the quotient and remainder directly. For negative values, C++ `%` produces a negative remainder, which could result in malformed strings such as `0.-01 sat/vB`.

  This changes formatting to emit the sign once and format non-negative quotient/remainder parts. Positive fee rate formatting is unchanged.

  This is a display-only change and does not affect fee calculation or policy behavior.

ACKs for top commit:
  polespinasa:
    ACK 4200f8163a
  winterrdog:
    Re-ACK 4200f8163a
  sedited:
    ACK 4200f8163a

Tree-SHA512: bf499078040154ac7828d0a58248b725156b7cfd763a8d6a2e48bcbd77f195a5e0ca9d3a973becdc7436e0bafb46a22cb49dd7ae947f98b434bed7d048d18397
2026-09-09 12:47:56 +02:00
Hennadii Stepanov
46654094be lint: Use C.UTF-8 locale only in shell scripts 2026-09-09 11:08:28 +01:00
fanquake
d6a2341632 doc: add rel note about potential CJDNS removal 2026-09-09 10:37:36 +01:00
merge-script
fb26bc9cfe Merge bitcoin/bitcoin#35445: wallet, descriptor: Revert StringType::COMPAT for Miniscript expressions and drop the concept of a Descriptor ID that can be validated
ec2adf3c51 test: Check miniscript descriptor h and apostrophe equivalence (w0xlt)
a2d001b57c test: Enforce descriptor reimport is an update (Ava Chow)
e2b2f1c5c6 descriptor: Rename DescriptorID to CompatDescriptorHash (Ava Chow)
6ad31c062c test: Add 31.0 to wallet backwards compatibility test (Ava Chow)
2a6c53371b wallet, spkm: Treat Descriptor ID as an opaque SPKM ID (Ava Chow)
62e826fa76 wallet: Update WalletDescriptor from another one instead of overwriting (Ava Chow)
1113f7590e wallet, export: Include descriptor cache when exporting descriptors (Ava Chow)
9fc7b2618b spkm: Remove DescriptorSPKM constructor that doesn't take a descriptor (Ava Chow)
770ff64bd7 test: Add v30.2 and Miniscript to wallet backwards compatibility test (Ava Chow)
35d6a60dbf descriptor: Add ToCanonicalString (Ava Chow)
1d87af26ce descriptors: Remove default StringType from PubkeyProvider::ToString() (Ava Chow)
1c7f9aaf75 miniscript: Don't use StringType::COMPAT (Ava Chow)

Pull request description:

  Since keys in Miniscript expressions were not correctly handling `StringType::COMPAT` when generating the Descriptor ID, in order to keep compatibility with previous versions, we need to continue to handle that enum incorrectly when computing the ID.

  Given that this it the second time that we have had this issue, this PR also drops the concept of Descriptor ID being something that we can validate. Instead, the ID read in from the database is treated as an opaque blob that is used only to tie together the records related to a particular SPKM. It is instead treated as a ScriptPubKeyMan ID and users of it must be retrieving the ID from somewhere rather than computing it from a descriptor. The check of comparing the read ID to the computed ID is removed so that all previously created wallets can be read.

  To clarify that the ID is not actually an ID, the function `DescriptorID` is renamed to `CompatDescriptorHash` and it is still used to generate the SPKM ID that is written to the database.

  The ID was additionally being used to determine whether a descriptor is equal to another descriptor. This was used only by `importdescriptors` and `createwalletdescriptor`. These uses have been changed to do a string comparison rather than computing a hash and comparing the hashes. This removes the need to rely on `CompatDescriptorHash`.

  The only caveat is that previously the hash was being used to do a map lookup in `m_spk_managers`, but this is now changed to use `std::find_if`. The lookup complexity changes from logarithmic to linear, which may be really bad for wallets with a lot of descriptors, e.g. migrated formerly non-HD wallets. I think in general though, the tradeoff is okay, and neither of these functions purport to be performant, especially as `importdescriptors` may also do a rescan which can take a long time. However, if that is a concern, an additional map of `CompatDescriptorHash` to DescriptorSPKM can be added.

  Lastly, the wallet backwards compatibility test is updated to have 30.2 and 31.0 nodes, and a wallet with miniscript expressions. This exercises both creating wallets in previous versions and making sure they load in master, and making new wallets on master and checking whether they load, depending on the version.

  Fixes #35432

ACKs for top commit:
  pseudoramdom:
    ACK ec2adf3c51
  davidgumberg:
    crACK ec2adf3c51
  w0xlt:
    ACK ec2adf3c51

Tree-SHA512: a32995c171b829a874cfd1bb03adde46fd8737322d5c44bc2ff27eff1ea8742c16c7ea1bb6fdc0fb2b89d0f11919850383799c3af126e7f55fe0878a8f1a7024
2026-09-09 10:23:11 +01:00
merge-script
494300f4cc Merge bitcoin/bitcoin#35796: depends: fix IPC listeners on macOS dying when accepting a dead socket
e07224f2d5 depends: fix IPC listeners on macOS dying when accepting a dead socket (xyzconstant)

Pull request description:

  This PR adds a depends patch to fix a Cap'n Proto bug present in macOS that throws the following exception after accepting a disconnected client:

  ```
  mp/proxy.cpp:48: error: Uncaught exception in daemonized task.; exception = kj/async-io-unix.c++:1365: failed: setsocketopt(IPPROTO_TCP, TCP_NODELAY): Invalid argument
  ```

  This goes uncaught killing `libmultiprocess`'s accept loop (`mp::ListenConnections()`) in the process.

  ### Root cause

  After `accept()`, kj unconditionally calls `setsockopt(TCP_NODELAY)` on the connection socket. For Unix sockets, kj handles the usual "not supported" error codes, however, on macOS EINVAL is returned when the client has already disconnected and kj only tolerates that code when built for FreeBSD. The unexpected error then goes uncaught in the accept loop, causing the listener to stop accepting new connections.

  See https://github.com/bitcoin-core/libmultiprocess/issues/319 for more details and instructions on how to reproduce it in Bitcoin Core using socat.

  ### Fix

  The patch is based on the EINVAL handling from capnproto/capnproto@7df5bd078, which is only available on the not yet released v2 branch. It's applied to `capnp.mk` as a temporary workaround until capnproto/capnproto#2748 is available in a v1 release.

ACKs for top commit:
  hebasto:
    ACK e07224f2d5, I have reviewed the code and it looks OK.
  ryanofsky:
    Code review ACK e07224f2d5. Confirmed patch matches what was committed upstream (85d8e47fcb).

Tree-SHA512: 7d3b3dd6cabdc658971e0f20159ad36594759b3686d2e5dc74fb21900ccec0c637980e36fa71fbd808c642ce83f89c73f5bc788eb42644bceed67acb78e8eee5
2026-09-09 09:42:18 +01:00
Ava Chow
42d93d40de kernel: update chainTxData 2026-09-08 23:43:40 -07:00
Ava Chow
a25511dfbc kernel: update defaultAssumeValid and minimumChainWork 2026-09-08 23:43:40 -07:00