Commit Graph

45964 Commits

Author SHA1 Message Date
marcofleon
326f244724 refactor: Convert RPCs and merkleblock from uint256 to Txid 2025-08-11 15:53:34 +01:00
merge-script
41642d43b3 Merge bitcoin/bitcoin#33162: test: fix scripts in blockfilter_basic_test
ca64b71ed5 test: fix scripts in `blockfilter_basic_test` (UdjinM6)

Pull request description:

  `std::vector` fill ctor is like this:
  ```
  // Constructs a vector with `count` copies of elements with value `value`.
  explicit vector( size_type count, const T& value = T(), const Allocator& alloc = Allocator() ); // (until C++11)
  vector( size_type count, const T& value, const Allocator& alloc = Allocator() ); // (since C++11)(constexpr since C++20)
  ```
  https://en.cppreference.com/w/cpp/container/vector/vector.html

  i.e. `std::vector<unsigned char>(0, 65)` means a vector with `0` copies of `65` which feels wrong. I believe `count` and `value` were swapped in `blockfilter_basic_test` scripts.

ACKs for top commit:
  furszy:
    ACK ca64b71ed5
  pablomartin4btc:
    ACK ca64b71ed5
  janb84:
    ACK ca64b71ed5

Tree-SHA512: 2cfc7f09788b0a1afdffc9cd6663204c7f1775dabdbe1046cdcd42936c479658c348cb46e0d8835645e6c508e8b40a598cbe6534084b6780a6b60378bcbd0f96
2025-08-11 10:44:57 -04:00
Hennadii Stepanov
f83c01d882 ci: Update actions/checkout version 2025-08-11 14:54:40 +01:00
merge-script
a27430e259 Merge bitcoin/bitcoin#32473: Introduce per-txin sighash midstate cache for legacy/p2sh/segwitv0 scripts
83950275ed qa: unit test sighash caching (Antoine Poinsot)
b221aa80a0 qa: simple differential fuzzing for sighash with/without caching (Antoine Poinsot)
92af9f74d7 script: (optimization) introduce sighash midstate caching (Pieter Wuille)
8f3ddb0bcc script: (refactor) prepare for introducing sighash midstate cache (Pieter Wuille)
9014d4016a tests: add sighash caching tests to feature_taproot (Pieter Wuille)

Pull request description:

  This introduces a per-txin cache for sighash midstate computation to the script interpreter for legacy (bare), P2SH, P2WSH, and (as collateral effect, but not actually useful) P2WPKH. This reduces the impact of certain types of quadratic hashing attacks that use standard transactions. It is not known to improve the situation for attacks involving non-standard transaction attacks.

  The cache works by remembering for each of the 6 sighash modes a `(scriptCode, midstate)` tuple, which gives a midstate `CSHA256` object right before the appending of the sighash type itself (to permit all 256, rather than just the 6 ones that match the modes). The midstate is only reused if the `scriptCode` matches. This works because - within a single input - only the sighash type and the `scriptCode` affect the actual sighash used.

  The PR implements two different approaches:
  * The initial commits introduce the caching effect always, for both consensus and relay relation validation. Despite being primarily intended for improving the situation for standard transactions only, I chose this approach as the code paths are already largely common between the two, and this approach I believe involves fewer code changes than a more targetted approach, and furthermore, it should not hurt (it may even help common multisig cases slightly).
  * The final commit changes the behavior to only using the cache for non-consensus script validation. I'm open to feedback about whether adding this commit is worth it.

  Functional tests are included that construct contrived cases with many sighash types (standard and non-standard ones) and `OP_CODESEPARATOR`s in all script types (including P2TR, which isn't modified by this PR).

ACKs for top commit:
  achow101:
    ACK 83950275ed
  dergoegge:
    Code review ACK 83950275ed
  darosior:
    re-ACK 83950275ed

Tree-SHA512: 65ae8635429a4d563b19969bac8128038ac2cbe01d9c9946abd4cac3c0780974d1e8b9aae9bb83f414e5d247a59f4a18fef5b37d93ad59ed41b6f11c3fe05af4
2025-08-11 10:26:19 +01:00
merge-script
34b366fa2c Merge bitcoin/bitcoin#33155: contrib: drop bitcoin-util exception from FORTIFY check
4bff4ce561 contrib: drop bitcoin-util exception from FORTIFY check (fanquake)

Pull request description:

  It's got `memcpy_chk`.

  Guix Build (aarch64):
  ```bash
  955c15e4b40dae5f0a80185a5a759764eb650003b56a997f2f18b058f979e212  guix-build-4bff4ce561b0/output/aarch64-linux-gnu/SHA256SUMS.part
  4e57193921b5a96b1da82e964577e20fdc8f287de9f28dc15b818f94bdc12fd2  guix-build-4bff4ce561b0/output/aarch64-linux-gnu/bitcoin-4bff4ce561b0-aarch64-linux-gnu-debug.tar.gz
  fb9779bfe3412f80393b85c7c12763fe34909879a34edbfe08d00bbea222d357  guix-build-4bff4ce561b0/output/aarch64-linux-gnu/bitcoin-4bff4ce561b0-aarch64-linux-gnu.tar.gz
  42068fd17c33c7de75556b257de7e9ec7f94f9a0610c2a2be75050053cf18aff  guix-build-4bff4ce561b0/output/arm-linux-gnueabihf/SHA256SUMS.part
  a0297f846e03f79f99d812f879eb09587c90bd03b8573aeb98bf8e56ef81544c  guix-build-4bff4ce561b0/output/arm-linux-gnueabihf/bitcoin-4bff4ce561b0-arm-linux-gnueabihf-debug.tar.gz
  fb20033e5a9f61a2d5f932ddfb1f402226d33b776f3c6fb5df1de8cecde36eeb  guix-build-4bff4ce561b0/output/arm-linux-gnueabihf/bitcoin-4bff4ce561b0-arm-linux-gnueabihf.tar.gz
  b0298c7c5176f67039e32d7691f99e0e9cd53d50af1c4a3a745ff02810867aac  guix-build-4bff4ce561b0/output/arm64-apple-darwin/SHA256SUMS.part
  0c498c6721dfae596a15bd3b083a635951ff4441cf5545d63f00fd743c481527  guix-build-4bff4ce561b0/output/arm64-apple-darwin/bitcoin-4bff4ce561b0-arm64-apple-darwin-codesigning.tar.gz
  04f7ac0d9c6103c302c165db21428f39afbd2bb506def903d259feae740f758d  guix-build-4bff4ce561b0/output/arm64-apple-darwin/bitcoin-4bff4ce561b0-arm64-apple-darwin-unsigned.tar.gz
  899b2efa608200508153bbb4d745099d525c2196b0f00a8bb0e960070c3cd3c6  guix-build-4bff4ce561b0/output/arm64-apple-darwin/bitcoin-4bff4ce561b0-arm64-apple-darwin-unsigned.zip
  51aeb7a040a0910e7466c14ce554362b4924b821be093ba73dffdda07c73618b  guix-build-4bff4ce561b0/output/dist-archive/bitcoin-4bff4ce561b0.tar.gz
  3119f9da15028a5d84645360dad9eab2e85b8ef363af919ea3e60104211b7d62  guix-build-4bff4ce561b0/output/powerpc64-linux-gnu/SHA256SUMS.part
  6d4d7cd1d8e294b65340669c2979079ff5c73e09df1e9629b182af8414a45b66  guix-build-4bff4ce561b0/output/powerpc64-linux-gnu/bitcoin-4bff4ce561b0-powerpc64-linux-gnu-debug.tar.gz
  9c36b47c37b0f77c23ab9a5a0b080e6e82b17e8d1de352b3096f2b96994e1d49  guix-build-4bff4ce561b0/output/powerpc64-linux-gnu/bitcoin-4bff4ce561b0-powerpc64-linux-gnu.tar.gz
  ef8ebcb015e282a969f36564b4c430dd1e74237b2362256f0485a3fc20d86bcf  guix-build-4bff4ce561b0/output/riscv64-linux-gnu/SHA256SUMS.part
  ff6313218a98a73603f2efa9f66f14289eb84f2561715ff99833b55aabc694d5  guix-build-4bff4ce561b0/output/riscv64-linux-gnu/bitcoin-4bff4ce561b0-riscv64-linux-gnu-debug.tar.gz
  75047bd03387b45995186ba4fad0d403f15b0590f064ed9a7bac7a38b07ef227  guix-build-4bff4ce561b0/output/riscv64-linux-gnu/bitcoin-4bff4ce561b0-riscv64-linux-gnu.tar.gz
  f714833a5fa772f4617e268ba75aa83435e755c97e378903b80dbf0808a5d4f5  guix-build-4bff4ce561b0/output/x86_64-apple-darwin/SHA256SUMS.part
  567925e2e2438fac7e5928f63088ae32ff8b4a6feaceb94b404e087377bacf8b  guix-build-4bff4ce561b0/output/x86_64-apple-darwin/bitcoin-4bff4ce561b0-x86_64-apple-darwin-codesigning.tar.gz
  1b018bc5e57512de19ff671ec03bb0fc5ff4be2e03a49263b7baa9b3c9cccf23  guix-build-4bff4ce561b0/output/x86_64-apple-darwin/bitcoin-4bff4ce561b0-x86_64-apple-darwin-unsigned.tar.gz
  06f41fad17071ca96013cd645bdbef4b81d1ead2dd83e3b484241fb9c092c5ae  guix-build-4bff4ce561b0/output/x86_64-apple-darwin/bitcoin-4bff4ce561b0-x86_64-apple-darwin-unsigned.zip
  77003ff6a044d55d72a8e8bf7d66d65da07a7ce22c2d6bb6ff41d3cd2540c826  guix-build-4bff4ce561b0/output/x86_64-linux-gnu/SHA256SUMS.part
  3160e76ddc373c5c9b3f230a8d21ee0d9f46f19cf547f4799d6bd6f692369400  guix-build-4bff4ce561b0/output/x86_64-linux-gnu/bitcoin-4bff4ce561b0-x86_64-linux-gnu-debug.tar.gz
  ff4a05d53920efd903f7f3ea13a0a7738548f1eb92165d32bd707e09a687262a  guix-build-4bff4ce561b0/output/x86_64-linux-gnu/bitcoin-4bff4ce561b0-x86_64-linux-gnu.tar.gz
  150b79a688eb5b2718b6a12a32eaeaf296fe5b7e0c5090dfc30f3f749c88fc44  guix-build-4bff4ce561b0/output/x86_64-w64-mingw32/SHA256SUMS.part
  692612b7989c4a90cff9cd30821d8210e4a556003d77c48560c0038e7cd7bc89  guix-build-4bff4ce561b0/output/x86_64-w64-mingw32/bitcoin-4bff4ce561b0-win64-codesigning.tar.gz
  b480ec868f6d4e070707a8ff98ae53416de88c7cb1125e475de823e6046c2a52  guix-build-4bff4ce561b0/output/x86_64-w64-mingw32/bitcoin-4bff4ce561b0-win64-debug.zip
  ac2108d4c80a85aa9d72258e5d69f90b8fa8475ab91a0305717d5ce478f4951c  guix-build-4bff4ce561b0/output/x86_64-w64-mingw32/bitcoin-4bff4ce561b0-win64-setup-unsigned.exe
  daef011a4775354b715591ca3e629bcfd9a7b582875c16dae26dc1cb91bde829  guix-build-4bff4ce561b0/output/x86_64-w64-mingw32/bitcoin-4bff4ce561b0-win64-unsigned.zip
  ```

ACKs for top commit:
  hebasto:
    ACK 4bff4ce561.

Tree-SHA512: a5e373e5e7d2d3c626ac639816fadb6aed8acd63d1a7a54613b00c23c1361d5e6731bb3caa573d549135a7ccec0ff22133a301474780b386ad5b82792fe5f3b9
2025-08-11 10:12:46 +01:00
UdjinM6
ca64b71ed5 test: fix scripts in blockfilter_basic_test 2025-08-09 12:31:59 +03:00
Ava Chow
daca51bf80 Merge bitcoin/bitcoin#32750: refactor: CFeeRate encapsulates FeeFrac internally
d3b8a54a81 Refactor CFeeRate to use FeeFrac internally (Pol Espinasa)

Pull request description:

  The `FeeFrac` type represents a fraction, intended to be used for `sats/vbyte` or `sats/WU`. It was added to improve accuracy when evaluating fee rates in cluster mempool. [1]
  But it can also be used to fix the precision issues that the current `CFeeRate` class has now.

  At the moment, `CFeeRate` handles the fee rate as  satoshis per kilovirtualbyte: `CAmount / kvB` using an integer.
  This PR fix `CFeeRate` precision issues by encapsulating `FeeFrac` internally keeping backwards compatibility.

  This PR can also be used as a based to use multiple units on RPC calls as detailed in this issue [2].

  Some previous discussions:
  [1] https://github.com/bitcoin/bitcoin/pull/30535
  [2] https://github.com/bitcoin/bitcoin/issues/32093

ACKs for top commit:
  achow101:
    ACK d3b8a54a81
  murchandamus:
    code review, lightly tested ACK d3b8a54a81
  ismaelsadeeq:
    re-ACK d3b8a54a81 📦
  theStack:
    Code-review ACK d3b8a54a81

Tree-SHA512: 5a8149d81e82ad4e60a0e76ff6a82a5b1c4e212cf5156c1cdd16bf9acbb351e7be458eac3f0a2ae89107f331062b299c1d9ca649d3b820ad0b68e6d1a14292e5
2025-08-08 18:11:05 -07:00
Lőrinc
fab2980bdc assumevalid: log every script validation state change
The `-assumevalid` option skips script verification for a specified block and all its ancestors during Initial Block Download.
Many new users are surprised when this suddenly slows their node to a halt.
This commit adds a log message to clearly indicate when this optimization ends and full validation begins (and vice versa).

When using `-assumeutxo`, logging is suppressed for the active assumed-valid chainstate and for the background validation chainstate to avoid the confusing toggles.

-------

> cmake -B build && cmake --build build && mkdir -p demo && build/bin/bitcoind -datadir=demo -stopatheight=500 | grep 'signature validation'

```
2025-08-08T20:59:21Z Disabling signature validations at block #1 (00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048).
2025-08-08T20:59:21Z Enabling signature validations at block #100 (000000007bc154e0fa7ea32218a72fe2c1bb9f86cf8c9ebf9a715ed27fdb229a).
2025-08-08T20:59:21Z Disabling signature validations at block #200 (000000008f1a7008320c16b8402b7f11e82951f44ca2663caf6860ab2eeef320).
2025-08-08T20:59:21Z Enabling signature validations at block #300 (0000000062b69e4a2c3312a5782d7798b0711e9ebac065cd5d19f946439f8609).
```
2025-08-08 16:47:34 -07:00
Eugene Siegel
e8f9c37a3b log: clean up LogPrintStr_ and Reset, prefix all logs with "[*]" when there are suppressions
In LogPrintStr_:
- remove an unnecessary BCLog since we are in the BCLog namespace.
- remove an unnecessary \n when rate limiting is triggered since
  FormatLogStrInPlace will add it.
- move the ratelimit bool into an else if block.
- prefix all log lines with [*] when suppressions exist. Previously this
  was only done if should_ratelimit was true.

In Reset:
- remove an unnecessary \n since FormatLogStrInPlace will add it.
- Change Level::Info to Level::Warning.
2025-08-08 16:45:01 -04:00
Eugene Siegel
3c7cae49b6 log: change LogLimitStats to struct LogRateLimiter::Stats
Clean up the noisy LogLimitStats and remove references to the time
window.

Co-Authored-By: stickies-v <stickies-v@protonmail.com>
2025-08-08 16:45:01 -04:00
Anthony Towns
876dbdfb47 tests: drop expect_disconnect behaviour for tx relay 2025-08-09 05:10:27 +10:00
Anthony Towns
b29ae9efdf validation: only check input scripts once
Previously, we would check failing input scripts twice when considering
a transaction for the mempool, in order to distinguish policy failures
from consensus failures. This allowed us both to provide a different
error message and to discourage peers for consensus failures. Because we
are no longer discouraging peers for consensus failures during tx relay,
and because checking a script can be expensive, only do this once.

Also renames non-mandatory-script-verify-flag error to
mempool-script-verify-flag-failed.
2025-08-09 05:06:01 +10:00
Anthony Towns
266dd0e10d net_processing: drop MaybePunishNodeForTx
Do not discourage nodes even when they send us consensus invalid
transactions.

Because we do not discourage nodes for transactions we consider
non-standard, we don't get any DoS protection from this check in
adversarial scenarios, so remove the check entirely both to simplify the
code and reduce the risk of splitting the network due to changes in tx
relay policy.
2025-08-09 04:45:51 +10:00
willcl-ark
db3228042b util: detect and warn when using exFAT on macOS
exFAT is known to cause corruption on macOS. See #28552.

Therefore we should warn when using this fs format for either the blocks
or data directories on macOS.

Co-authored-by: l0rinc <pap.lorinc@gmail.com>
2025-08-08 19:21:06 +01:00
merge-script
f679bad605 Merge bitcoin/bitcoin#33105: validation: detect witness stripping without re-running Script checks
27aefac425 validation: detect witness stripping without re-running Script checks (Antoine Poinsot)
2907b58834 policy: introduce a helper to detect whether a transaction spends Segwit outputs (Antoine Poinsot)
eb073209db qa: test witness stripping in p2p_segwit (Antoine Poinsot)

Pull request description:

  Since it was introduced in 4eb515574e (#18044), the detection of a stripped witness relies on running the Script checks 3 times. In the worst case, this consists in running Script validation for every single input 3 times.

  Detection of a stripped witness is necessary because in this case wtxid==txid, and the transaction's wtxid must not be added to the reject filter or it could allow a malicious peer to interfere with txid-based orphan resolution as used in 1p1c package relay.

  However it is not necessary to run Script validation to detect a stripped witness (much less so doing it 3 times in a row). There are 3 types of witness program: defined program types (Taproot, P2WPKH and P2WSH), undefined types, and the Pay-to-anchor carve-out.

  For defined program types, Script validation with an empty witness will always fail (by consensus). For undefined program types, Script validation is always going to fail regardless of the witness (by standardness). For P2A, an empty witness is never going to lead to a failure.

  Therefore it holds that we can always detect a stripped witness without re-running Script validation. However this might lead to more "false positives" (cases where we return witness stripping for an otherwise invalid transaction) than the existing implementation. For instance a transaction with one P2PKH input with an invalid signature and one P2WPKH input with its witness stripped. The existing implementation would treat it as consensus invalid while the implementation in this PR would always consider it witness stripped.

  h/t AJ: this essentially implements a variant of https://github.com/bitcoin/bitcoin/pull/33066#issuecomment-3135258539.

ACKs for top commit:
  sipa:
    re-ACK 27aefac425
  Crypt-iQ:
    re-ACK 27aefac425
  glozow:
    reACK 27aefac425

Tree-SHA512: 70cf76b655b52bc8fa2759133315a3f11140844b6b80d9de3c95f592050978cc01a87bd2446e3a9c25cc872efea7659d6da3337b1a709511771fece206e9f149
2025-08-08 14:18:04 -04:00
Hennadii Stepanov
63d604af05 Merge bitcoin/bitcoin#33152: Release: Prepare "Open Transifex translations for v30.0" step
656e16aa5e qt: Update the `src/qt/locale/bitcoin_en.xlf` translation source file (Hennadii Stepanov)
a0eaa44925 Fix typos (Hennadii Stepanov)
8d4aaaec49 Update Transifex slug for 30.x (Hennadii Stepanov)

Pull request description:

  This PR follows our [Release Process](53a996f122/doc/release-process.md).

  It is required to open Transifex translations for v30.0, as scheduled in https://github.com/bitcoin/bitcoin/issues/32275.

  For reference, see the previous similar PR: https://github.com/bitcoin/bitcoin/pull/31809.

  **Note for reviewers:**

  To reproduce the diff in the last commit, run:
  ```
  cmake --preset dev-mode
  cmake --build build_dev_mode --target translate
  ```

ACKs for top commit:
  laanwj:
    Code review ACK 656e16aa5e
  stickies-v:
    ACK 656e16aa5e , was able to reproduce

Tree-SHA512: 403b534329755079584fcdf98b696e3e75952dfc8d069f305843dbfa85de95f6816ee1d5dfc9b553c7c7f52cc296cb8d3cb03207051d26e0e76ff30d377f49e4
2025-08-08 16:40:22 +01:00
Antoine Poinsot
27aefac425 validation: detect witness stripping without re-running Script checks
Since it was introduced in 4eb515574e (#18044), the detection of a
stripped witness relies on running the Script checks 3 times. In the worst case, this consists in
running Script validation 3 times for every single input.

Detection of a stripped witness is necessary because in this case wtxid==txid, and the transaction's
wtxid must not be added to the reject filter or it could allow a malicious peer to interfere with
txid-based orphan resolution as used in 1p1c package relay.

However it is not necessary to run Script validation to detect a stripped witness (much less so
doing it 3 times in a row). There are 3 types of witness program: defined program types (Taproot,
P2WPKH, P2WSH), undefined types, and the Pay-to-anchor carve-out.

For defined program types, Script validation with an empty witness will always fail (by consensus).
For undefined program types, Script validation is always going to fail regardless of the witness (by
standardness). For P2A, an empty witness is never going to lead to a failure.

Therefore it holds that we can always detect a stripped witness without re-running Script validation.
However this might lead to more "false positives" (cases where we return witness stripping for an
otherwise invalid transaction) than the existing implementation. For instance a transaction with one
P2PKH input with an invalid signature and one P2WPKH input with its witness stripped. The existing
implementation would treat it as consensus invalid while the implementation in this commit would
always consider it witness stripped.
2025-08-08 11:07:47 -04:00
Antoine Poinsot
2907b58834 policy: introduce a helper to detect whether a transaction spends Segwit outputs
We will use this helper in later commits to detect witness stripping without having
to execute every input Script three times in a row.
2025-08-08 11:07:47 -04:00
fanquake
4bff4ce561 contrib: drop bitcoin-util exception from FORTIFY check
It's got memcpy_chk.
2025-08-08 08:47:44 +01:00
Ryan Ofsky
26e9db2df0 Merge bitcoin/bitcoin#31886: cli: return local services in -netinfo
721a051320 test: add coverage for -netinfo header and local services (l0rinc)
f7d2db28e9 netinfo: return shortened services, if peers list requested (Jon Atack)
4489ab526a netinfo: return local services in the default report (Jon Atack)

Pull request description:

  Add local services info to -netinfo dashboard that already provides this info for each of the peer connections.

  - `bitcoin-cli -netinfo` with no args passed provides a nice easy-to-understand services list:

  ```
  Bitcoin Core client v28.99.0 - server 70016/Satoshi:28.99.0/

           ipv4    ipv6   onion     i2p   cjdns   total   block  manual
  in          0       0      12       8       0      20
  out         6       0       4       3       2      15       3       4
  total       6       0      16      11       2      35

  Local services: network, bloom, witness, compact filters, network limited, p2p v2

  Local addresses
  ```

  - With a details level passed, e.g. `-netinfo 3`, print the services in the versions header instead (to avoid adding a line for more static information), in the same format as the peers list (see `-netinfo help` for info on the output of the `serv` column):

  ```
  Bitcoin Core client v28.99.0 - server 70016/Satoshi:28.99.0/ - services nbwcl2

  <->   type   net   serv  v  mping   ping send recv  txn  blk  hb addrp addrl  age  asmap  id version
   in        onion         1    283    498   48   48    *              .         77        388 70016
   in        onion   nwl2  2    318    485    5  111                             79        372 70016/Satoshi:28.0.0/
   in        onion    nwl  1    342    344    4    1   53             96         84        344 70016/Satoshi:26.0.0/
   in        onion    nwl  1    411    601    4    1   35            124         85        339 70016/Satoshi:26.0.0/
   in        onion  nwcl2  2    436   4330    2    2    2             31         13        623 70016/Satoshi:28.0.0/
   in        onion    wl2  2    445    503    4    4    6            138         81        363 70016/Satoshi:28.0.0/
   in        onion    nwl  1    462    726    4    1   56             92         81        365 70016/Satoshi:23.0.0/
   in        onion    nwl  1    500    765    4    1   34             94         83        351 70016/Satoshi:25.0.0/
   in        onion   nwl2  2    578    684    4    0    1            134         87        327 70016/Satoshi:28.0.0/
   in          i2p   nwl2  2    712   1322    4    2   35            204     1   93        308 70016/Satoshi:27.2.0/
   in        onion   nwl2  2    727    873    5    5   56            162         85        342 70016/Satoshi:27.1.0/
   in          i2p   nwl2  2    749    976    4    2   25            120         72        408 70016/Satoshi:27.1.0/
   in          i2p   nwl2  2    776    954    4    1    0             72         68        426 70016/Satoshi:28.0.0/
   in          i2p   nbwl  1    883   1735    4    4                  53         34        551 70016/Satoshi:26.0.0/
   in          i2p  nwcl2  2    920   1044    2    0    0            131         83        350 70016/Satoshi:28.0.0/
   in        onion     wl  1   1021  20832   29   67                   3         49        501 70016/Satoshi:23.0.0/
   in          i2p  nwcl2  2   1830   1830    5    0                   3          3        668 70016/Satoshi:27.1.0/
   in        onion    nwl  1  41155  41155   87  204                              4        658 70016/Satoshi:25.0.0/
  out   full  ipv4   nwl2  2     74     93    0    0    0           1028         85   1221 338 70016/Satoshi:27.1.0/
  out   full  ipv4    nwl  1     82    104    0    2    0    5  .   1076         95  13536 301 70016/Satoshi:26.0.0/
  out   full  ipv4    nwl  1    147    178    2    2    0   28  .   1104         95 395570 300 70016/Satoshi:25.0.0/
  out  block  ipv4   nwl2  2    166    513    2    2    *              .         88  38001 324 70016/Satoshi:27.2.0/
  out   full  ipv4     wl  1    193    201    0    4    0           1035         94  31376 307 70016/Satoshi:25.99.0/
  out   full  ipv4   nwl2  2    199    796    1    1    0           1027         94   9723 304 70016/Satoshi:27.2.0/
  out manual cjdns   nwl2  2    213    235    1    9    0           1109         83        353 70016/Satoshi:28.99.0/
  out   full onion   nbwl  1    282    457    3    3    1           1130         73        404 70016/Satoshi:25.0.0/
  out  block onion   nbwl  1    324    353   23   23    *              .         85        341 70016/Satoshi:26.0.0/
  out manual cjdns   nwl2  2    340    445    1    1    7           1059         82        361 70016/Satoshi:27.0.0/
  out manual onion    wl2  2    386    386    1    1    1           1048         84        345 70016/Satoshi:28.99.0/
  out manual   i2p  nwcl2  2    697   1084    1    1    8           1113     3   93        310 70016/Satoshi:27.0.0/
  out   full   i2p  nwcl2  2    730   1254    1    9    0           1128         89        318 70016/Satoshi:28.0.0/
  out   full   i2p  nwcl2  2    765   1804    1    1    1           1132         72        409 70016/Satoshi:28.0.0/
                                 ms     ms  sec  sec  min  min                  min

           ipv4    ipv6   onion     i2p   cjdns   total   block  manual
  in          0       0      12       6       0      18
  out         6       0       3       3       2      14       2       4
  total       6       0      15       9       2      32

  Local addresses
  ```

ACKs for top commit:
  l0rinc:
    Redid the rebase, reran the test, reACK 721a051320
  0xB10C:
    ACK 721a051320
  danielabrozzoni:
    reACK 721a051320

Tree-SHA512: 7206b0eadfe6bafea2a483eb898e7e5b104aca9c117d3bf68cd4c01bfa1108f179ff8a1061d97cdfc57f71ff5351774c83824b035892f7f382fdeaf10d3df359
2025-08-07 22:43:55 -04:00
merge-script
2bb06bcaf2 Merge bitcoin/bitcoin#31679: cmake: Install internal binaries to <prefix>/libexec/
f49840dd90 doc: Fix typo in files.md (Ryan Ofsky)
f5cf0b1ccc bitcoin wrapper: improve help output (Ryan Ofsky)
c810b168b8 doc: Add description of installed files to files.md (Ryan Ofsky)
94ffd01a02 doc: Add release notes describing libexec/ binaries (Ryan Ofsky)
cd97905ebc cmake: Move internal binaries from bin/ to libexec/ (Ryan Ofsky)

Pull request description:

  This change moves binaries that are not typically invoked directly by users from the `bin/` directory to the `libexec/` directory in CMake installs and binary releases. The goal of the PR is to introduce a distinction between internal and external binaries so starting with #31802, we can use IPC to implement features in new binaries without adding those binaries to the CLI. The change also helps reduce clutter in `bin/`, making it easier for users to identify useful tools to run. Summary of changes:

  - For **source builds** (i.e. developer builds) — There are no changes.
  - For **source installs** (i.e. `cmake --install` result) — `test_bitcoin`, `test_bitcoin-qt`, and `bench_bitcoin` are installed in `${CMAKE_PREFIX_PATH}/libexec` instead of `${CMAKE_PREFIX_PATH}/bin`, so they are no longer on the system `PATH`. However, they can still be invoked from the `libexec/` directory, or from the CLI as `bitcoin test`, `bitcoin test-gui`, and `bitcoin bench`, respectively.
  - For **binary releases** — Since `test_bitcoin` is the only test binary enabled in releases, the only change is moving `test_bitcoin` from `bin/` to `libexec/`.

  <details><summary>Details</summary>
  <p>

   The table below shows the install location of each binary after this change, and the availability of each binary.

  | Binary               | Location     | Availability         | Change                        |
  |----------------------|--------------|----------------------|-------------------------------|
  | `bitcoin`            | `bin/`       | 📦 Binary release (since #31375) | Unchanged                     |
  | `bitcoin-cli`        | `bin/`       | 📦 Binary release     | Unchanged                     |
  | `bitcoind`           | `bin/`       | 📦 Binary release     | Unchanged                     |
  | `bitcoin-qt`         | `bin/`       | 📦 Binary release     | Unchanged                     |
  | `bitcoin-tx`         | `bin/`       | 📦 Binary release     | Unchanged                     |
  | `bitcoin-util`       | `bin/`       | 📦 Binary release     | Unchanged                     |
  | `bitcoin-wallet`     | `bin/`       | 📦 Binary release     | Unchanged                     |
  | `bench_bitcoin`      | `libexec/`   | 🛠 Source build only  | Moved from `bin/`             |
  | `bitcoin-chainstate` | `libexec/`   | 🛠 Source build only  | Newly installed (was built)   |
  | `bitcoin-gui`        | `libexec/`   | 🛠 Source build only (until #31802) | Moved from `bin/`             |
  | `bitcoin-node`       | `libexec/`   | 🛠 Source build only (until #31802) | Moved from `bin/`             |
  | `test_bitcoin`       | `libexec/`    | 📦 Binary release     | Moved from `bin/`             |
  | `test_bitcoin-qt`    | `libexec/`   | 🛠 Source build only  | Moved from `bin/`             |

  </p>
  </details>

  ---

  This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/issues/28722).

ACKs for top commit:
  l0rinc:
    re-ACK f49840dd90
  Sjors:
    re-ACK f49840dd90
  achow101:
    ACK f49840dd90
  janb84:
    re ACK f49840dd90
  BrandonOdiwuor:
    Tested ACK f49840dd90
  hodlinator:
    re-ACK f49840dd90
  willcl-ark:
    utACK f49840dd90

Tree-SHA512: 858a2e1a53db11ee3c5c759bfdeea566f242b9ce5e8a898fa435222e41662b8184577c0dc2c4c058294b4de41d8cb3ba3e5d24c748c280efa4a3f84e3ec4344d
2025-08-07 14:53:26 +01:00
merge-script
6a2bb0fd83 Merge bitcoin/bitcoin#33151: subtree: update crc32c subtree
9a5d29711a Squashed 'src/crc32c/' changes from b60d2b7334..efb8ea04e4 (fanquake)

Pull request description:

  Sync the subtree with latest upstream. The changes here are a no-op, but pull them to fix the drive-by-typo-fixing: #33057.

  Includes https://github.com/bitcoin-core/crc32c-subtree/pull/8.

ACKs for top commit:
  maflcko:
    lgtm ACK 8ef8dd6871
  janb84:
    ACK 8ef8dd6871

Tree-SHA512: b20a47514218206b934c4aa27ec667fb9b3ec7f7388a78725c52fc6e916358d2b9a2075a37808dbc2430b4c7816511ecf20e36bfe2fbd2d8a26bc8882a46d5e7
2025-08-07 12:59:44 +01:00
Hennadii Stepanov
656e16aa5e qt: Update the src/qt/locale/bitcoin_en.xlf translation source file
Steps to reproduce the diff on Ubuntu 25.04:
```
cmake --preset dev-mode
cmake --build build_dev_mode --target translate
```
2025-08-07 12:55:54 +01:00
Hennadii Stepanov
a0eaa44925 Fix typos 2025-08-07 12:55:18 +01:00
merge-script
b43b8be782 Merge bitcoin/bitcoin#33125: ci: Use mlc v1 and fix typos
f28a94b40e ci: update shellcheck to v0.11.0 (fanquake)
e46af30441 ci: update mlc to v1 (fanquake)
7d60c0eb69 fix typo (hoffman)
49f2f3c89f doc: fix typos (fanquake)
d818340e7e test: Rename shuffled_indeces to shuffled_indices (fuder.eth)
96f8673b87 doc: fix typos (kilavvy)

Pull request description:

  Update mcl to `v1` & shellcheck to `0.11.0`.
  Includes other cherry-picked lint-related changes.

ACKs for top commit:
  maflcko:
    lgtm ACK f28a94b40e

Tree-SHA512: 5a84d1bf862a38918237d37de7713338388c3c8d66228b05d19aaf651835d955037c79dc8825ea8f8693a5a9ece64d245e2a747d2c25b9c6cb44a3b28f056fb8
2025-08-07 11:57:39 +01:00
Hennadii Stepanov
8d4aaaec49 Update Transifex slug for 30.x
Update the Transifex slug to match the new resource created for the
upcoming 30.x branch.
2025-08-07 11:48:29 +01:00
fanquake
8ef8dd6871 Update crc32c subtree to latest upstream master 2025-08-07 09:27:25 +01:00
fanquake
9a5d29711a Squashed 'src/crc32c/' changes from b60d2b7334..efb8ea04e4
efb8ea04e4 Merge bitcoin-core/crc32c-subtree#8: Sync to upstream
4a7a05c48d Merge remote-tracking branch 'google/main' into bitcoin-fork
21fc8ef304 Fix typo (#59)
89f69843a1 Fix misspelled "Proccess" in comment
02e65f4fd3 Bump deps (#56)
b9d6e825a1 Fix Windows CI build. (#54)
bbbb93ab5d Switch CI to GitHub Actions (#55)
d46cd17d70 Add clangd cache directory to .gitignore.

git-subtree-dir: src/crc32c
git-subtree-split: efb8ea04e4a5b6a18dc4bc1908fd1cb2dcefb585
2025-08-07 09:27:25 +01:00
fanquake
f28a94b40e ci: update shellcheck to v0.11.0 2025-08-07 09:03:15 +01:00
fanquake
e46af30441 ci: update mlc to v1 2025-08-07 09:03:15 +01:00
hoffman
7d60c0eb69 fix typo 2025-08-07 09:03:15 +01:00
fanquake
49f2f3c89f doc: fix typos 2025-08-07 09:01:56 +01:00
fuder.eth
d818340e7e test: Rename shuffled_indeces to shuffled_indices 2025-08-07 09:01:56 +01:00
kilavvy
96f8673b87 doc: fix typos 2025-08-07 09:01:55 +01:00
Ava Chow
d767503b6a Merge bitcoin/bitcoin#33039: refactor,test: follow-ups to multi-byte block obfuscation
86e3a0a8cb refactor: standardize obfuscation memory alignment (Lőrinc)
13f00345c0 refactor: write `Obfuscation` object when new key is generated in dbwrapper (Lőrinc)
e5b1b7c557 refactor: rename `OBFUSCATION_KEY_KEY` (Lőrinc)
298bf95105 refactor: simplify `Obfuscation::HexKey` (Lőrinc)
2dea045425 test: make `obfuscation_serialize` more thorough (Lőrinc)
a17d8202c3 test: merge xor_roundtrip_random_chunks and xor_bytes_reference (Lőrinc)

Pull request description:

  Follow up for https://github.com/bitcoin/bitcoin/pull/31144
  Applied the remaining comments in separate commits - except for the last one where I could group them.
  Please see the commit messages for more context.

ACKs for top commit:
  achow101:
    ACK 86e3a0a8cb
  ryanofsky:
    Code review ACK 86e3a0a8cb, just tweaking key write assert as suggested
  hodlinator:
    ACK 86e3a0a8cb

Tree-SHA512: 967510a141fbb57bf9d088d92b554cf2fffc2f6aa0eab756cbae3230f53e9b04ceebcc6fea5f3383c01ad41985ecde5b5686c64a771ca9deae3497b9b88c1c8b
2025-08-06 15:46:18 -07:00
merge-script
cf15d45192 Merge bitcoin/bitcoin#33044: contrib: drop use of PermissionsStartOnly & Group=
18d1071dd1 init: replace deprecated PermissionsStartOnly systemd directive (Florian Schmaus)
1caaf65043 init: remove Group= as it will default to the user's default group (Florian Schmaus)

Pull request description:

  > This removes the redundant 'Group=' directive and replaces the deprecated 'PermissionsStartOnly' directive.

  Picks up #16994 / #19513. The concern in both of these PRs was changing this too early, while systemd v240 was still prelevant on supported systems. That was ~5 years ago, and from what I can see, no modern/supported OS is still using an older systemd.

  Separately , I am wondering if we should move these files out to https://github.com/bitcoin-core/packaging/.

ACKs for top commit:
  willcl-ark:
    reACK 18d1071dd1

Tree-SHA512: a994e38099e68e8377ac820d3cd2047cbfca065ba617eff0d621e3c3b99b05bbd2329631aa8c885a83cf5d0066d97ff5be75bf5834e9f759d8f0d2c6c9b64851
2025-08-06 14:50:47 +01:00
Antoine Poinsot
83950275ed qa: unit test sighash caching 2025-08-06 09:40:17 -04:00
Antoine Poinsot
b221aa80a0 qa: simple differential fuzzing for sighash with/without caching 2025-08-06 09:33:30 -04:00
Pieter Wuille
92af9f74d7 script: (optimization) introduce sighash midstate caching 2025-08-06 09:33:17 -04:00
Pieter Wuille
8f3ddb0bcc script: (refactor) prepare for introducing sighash midstate cache 2025-08-06 09:33:17 -04:00
Pieter Wuille
9014d4016a tests: add sighash caching tests to feature_taproot 2025-08-06 09:33:14 -04:00
merge-script
d7ed47fb80 Merge bitcoin/bitcoin#33077: kernel: create monolithic kernel static library
fdbade6f8d kernel: create monolithic kernel static library (Cory Fields)

Pull request description:

  Currently, consuming `libbitcoinkernel.a` requires all its dependency static libraries to be available. A switch to a monolithic variant, which contains object files from its dependencies, was discussed in the Kernel WG. The necessary preparations in the libsecp256k1 build scripts were completed in https://github.com/bitcoin-core/secp256k1/pull/1678, which are now available in this repository since https://github.com/bitcoin/bitcoin/pull/33036.

  The changes in this PR were picked from https://github.com/theuni/bitcoin/commits/static_kernel/, with an additional adjustment in `libbitcoinkernel.pc.in`.

  This PR can be tested as described in https://github.com/bitcoin/bitcoin/pull/30814#issue-2505698234.

ACKs for top commit:
  TheCharlatan:
    ACK fdbade6f8d
  stickies-v:
    tACK fdbade6f8d

Tree-SHA512: bd9e9dbb0b765bdcb162fb3f4ad3c4e01fe5fa0b7061f97d0bad64442b21db036cbe0e4341fd45d43a8862df76d62c9532ca8945f76423aca753c6b528f70873
2025-08-06 13:08:58 +01:00
merge-script
38e6ea9f3a Merge bitcoin/bitcoin#33101: cmake: Proactively avoid use of SECP256K1_DISABLE_SHARED
b093a19ae2 cmake: Proactively avoid use of `SECP256K1_DISABLE_SHARED` (Hennadii Stepanov)
eb59a192d9 cmake, refactor: Encapsulate adding secp256k1 subtree in function (Hennadii Stepanov)

Pull request description:

  The `SECP256K1_DISABLE_SHARED` CMake variable has been [removed](https://github.com/bitcoin-core/secp256k1/pull/1688) upstream.

  This PR removes its usage ahead of the next `secp256k1` subtree update to prevent breakage and simplify integration.

ACKs for top commit:
  fanquake:
    ACK b093a19ae2

Tree-SHA512: a87cee71cf356f458f68d3163253ca5c4f86e56d268006b6b8e1d4b2c009ba436148a07a6b67b89ddbb2d0e3c1113ab4b4906c5fc5624cb3082b20e916e0e82b
2025-08-06 11:31:17 +01:00
merge-script
c92115dcb2 Merge bitcoin/bitcoin#33119: rpc: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify fix
3543bfdfec test: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify 'spend_vin' is the correct field (Chris Stewart)

Pull request description:

  Fixes bug in `getdescriptoractivity` RPC help manual.

  Here is the line that pushes `spend_vin` field, there is no `spend_vout` json field.

  https://github.com/bitcoin/bitcoin/blob/master/src/rpc/blockchain.cpp#L2757

ACKs for top commit:
  nervana21:
    tACK 3543bfd
  luke-jr:
    utACK 3543bfdfec
  jonatack:
    ACK 3543bfdfec

Tree-SHA512: 2cd543569a87261d8d804d9afe36f8e8ead55839c01da9c4831aea3ced7d1251e6885621e628898105700aae4d76cbb8a682f518f33c1c52163e66f75ec87a61
2025-08-06 11:16:32 +01:00
merge-script
1dab8d0635 Merge bitcoin/bitcoin#33113: refactor: Use immediate lambda to work around GCC bug 117966
c7a24c3052 ci: Re-enable DEBUG=1 in centos task (MarcoFalke)
a7bafb3e05 refactor: Use immediate lambda to work around GCC bug 117966 (Hennadii Stepanov)

Pull request description:

  This PR is a follow-up to the recently merged [#31244](https://github.com/bitcoin/bitcoin/pull/31244), and provides a workaround for affected GCC compilers, similar to https://github.com/bitcoin/bitcoin/pull/31493.

  Without this workaround, building the master branch using GCC 13 or 14 with the `-D_GLIBCXX_DEBUG` flag fails with the following error:
  ```
  $ cmake -B build -DAPPEND_CPPFLAGS="-D_GLIBCXX_DEBUG"
  -- The CXX compiler identification is GNU 13.3.0
  <snip>
  $ cmake --build build
  [2/10] Building CXX object src/CMakeFiles/bitcoin_common.dir/musig.cpp.o
  FAILED: src/CMakeFiles/bitcoin_common.dir/musig.cpp.o
  /usr/bin/ccache /usr/bin/c++ -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DBOOST_NO_CXX98_FUNCTION_BASE -I/home/hebasto/dev/bitcoin/build/src -I/home/hebasto/dev/bitcoin/src -I/home/hebasto/dev/bitcoin/src/univalue/include -I/home/hebasto/dev/bitcoin/src/secp256k1/include -O2 -g -std=c++20 -fPIC -fno-extended-identifiers -fdebug-prefix-map=/home/hebasto/dev/bitcoin/src=. -fmacro-prefix-map=/home/hebasto/dev/bitcoin/src=. -fstack-reuse=none -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough -Wunreachable-code -Wbidi-chars=any -Wundef -Wno-unused-parameter -MD -MT src/CMakeFiles/bitcoin_common.dir/musig.cpp.o -MF src/CMakeFiles/bitcoin_common.dir/musig.cpp.o.d -o src/CMakeFiles/bitcoin_common.dir/musig.cpp.o -c /home/hebasto/dev/bitcoin/src/musig.cpp -D_GLIBCXX_DEBUG
  In file included from /usr/include/c++/13/debug/stl_iterator.h:32,
                   from /usr/include/c++/13/bits/stl_iterator.h:3003,
                   from /usr/include/c++/13/string:48,
                   from ../src/crypto/sha256.h:10,
                   from ../src/hash.h:12,
                   from ../src/pubkey.h:10,
                   from ../src/musig.h:8,
                   from ../src/musig.cpp:5:
  ../src/musig.h:17:108:   in ‘constexpr’ expansion of ‘std::span<const unsigned char>(util::hex_literals::operator""_hex_u8<util::detail::Hex<65>{std::array<std::byte, 32>{std::__array_traits<std::byte, 32>::_Type{(std::byte)134, (std::byte)128, (std::byte)135, (std::byte)202, (std::byte)2, (std::byte)166, (std::byte)249, (std::byte)116, (std::byte)196, (std::byte)89, (std::byte)137, (std::byte)36, (std::byte)195, (std::byte)107, (std::byte)87, (std::byte)118, (std::byte)45, (std::byte)50, (std::byte)203, (std::byte)69, (std::byte)113, (std::byte)113, (std::byte)103, (std::byte)227, (std::byte)0, (std::byte)98, (std::byte)44, (std::byte)113, (std::byte)103, (std::byte)227, (std::byte)137, (std::byte)101}}}>())’
  /usr/include/c++/13/span:204:57:   in ‘constexpr’ expansion of ‘((std::span<const unsigned char>*)this)->std::span<const unsigned char>::span<const unsigned char*>((& __arr)->std::array<unsigned char, 32>::data(), 32)’
  /usr/include/c++/13/span:167:4:   in ‘constexpr’ expansion of ‘__gnu_debug::__valid_range<const unsigned char*>(__first, (__first + ((sizetype)__count)))’
  /usr/include/c++/13/debug/helper_functions.h:267:44:   in ‘constexpr’ expansion of ‘__gnu_debug::__valid_range_aux<const unsigned char*>(__first, __last, (_Integral(), _Integral()))’
  /usr/include/c++/13/debug/helper_functions.h:197:44:   in ‘constexpr’ expansion of ‘__gnu_debug::__valid_range_aux<const unsigned char*>(__first, __last, (std::__iterator_category<const unsigned char*>(__first), std::iterator_traits<const unsigned char*>::iterator_category()))’
  /usr/include/c++/13/debug/helper_functions.h:183:44:   in ‘constexpr’ expansion of ‘__gnu_debug::__valid_range_aux<const unsigned char*>(__first, __last, (std::input_iterator_tag(), std::input_iterator_tag()))’
  /usr/include/c++/13/debug/helper_functions.h:143:20: error: ‘(((const unsigned char*)(&<anonymous>.std::array<unsigned char, 32>::_M_elems)) == 0)’ is not a constant expression
    143 |     { return __ptr == 0; }
        |              ~~~~~~^~~~
  [3/10] Building CXX object src/CMakeFiles/bitcoin_common.dir/script/descriptor.cpp.o
  FAILED: src/CMakeFiles/bitcoin_common.dir/script/descriptor.cpp.o
  /usr/bin/ccache /usr/bin/c++ -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION -DBOOST_NO_CXX98_FUNCTION_BASE -I/home/hebasto/dev/bitcoin/build/src -I/home/hebasto/dev/bitcoin/src -I/home/hebasto/dev/bitcoin/src/univalue/include -I/home/hebasto/dev/bitcoin/src/secp256k1/include -O2 -g -std=c++20 -fPIC -fno-extended-identifiers -fdebug-prefix-map=/home/hebasto/dev/bitcoin/src=. -fmacro-prefix-map=/home/hebasto/dev/bitcoin/src=. -fstack-reuse=none -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough -Wunreachable-code -Wbidi-chars=any -Wundef -Wno-unused-parameter -MD -MT src/CMakeFiles/bitcoin_common.dir/script/descriptor.cpp.o -MF src/CMakeFiles/bitcoin_common.dir/script/descriptor.cpp.o.d -o src/CMakeFiles/bitcoin_common.dir/script/descriptor.cpp.o -c /home/hebasto/dev/bitcoin/src/script/descriptor.cpp -D_GLIBCXX_DEBUG
  In file included from /usr/include/c++/13/debug/stl_iterator.h:32,
                   from /usr/include/c++/13/bits/stl_iterator.h:3003,
                   from /usr/include/c++/13/string:48,
                   from ../src/crypto/sha256.h:10,
                   from ../src/hash.h:12,
                   from ../src/pubkey.h:10,
                   from ../src/addresstype.h:9,
                   from ../src/outputtype.h:9,
                   from ../src/script/descriptor.h:8,
                   from ../src/script/descriptor.cpp:5:
  ../src/musig.h:17:108:   in ‘constexpr’ expansion of ‘std::span<const unsigned char>(util::hex_literals::operator""_hex_u8<util::detail::Hex<65>{std::array<std::byte, 32>{std::__array_traits<std::byte, 32>::_Type{(std::byte)134, (std::byte)128, (std::byte)135, (std::byte)202, (std::byte)2, (std::byte)166, (std::byte)249, (std::byte)116, (std::byte)196, (std::byte)89, (std::byte)137, (std::byte)36, (std::byte)195, (std::byte)107, (std::byte)87, (std::byte)118, (std::byte)45, (std::byte)50, (std::byte)203, (std::byte)69, (std::byte)113, (std::byte)113, (std::byte)103, (std::byte)227, (std::byte)0, (std::byte)98, (std::byte)44, (std::byte)113, (std::byte)103, (std::byte)227, (std::byte)137, (std::byte)101}}}>())’
  /usr/include/c++/13/span:204:57:   in ‘constexpr’ expansion of ‘((std::span<const unsigned char>*)this)->std::span<const unsigned char>::span<const unsigned char*>((& __arr)->std::array<unsigned char, 32>::data(), 32)’
  /usr/include/c++/13/span:167:4:   in ‘constexpr’ expansion of ‘__gnu_debug::__valid_range<const unsigned char*>(__first, (__first + ((sizetype)__count)))’
  /usr/include/c++/13/debug/helper_functions.h:267:44:   in ‘constexpr’ expansion of ‘__gnu_debug::__valid_range_aux<const unsigned char*>(__first, __last, (_Integral(), _Integral()))’
  /usr/include/c++/13/debug/helper_functions.h:197:44:   in ‘constexpr’ expansion of ‘__gnu_debug::__valid_range_aux<const unsigned char*>(__first, __last, (std::__iterator_category<const unsigned char*>(__first), std::iterator_traits<const unsigned char*>::iterator_category()))’
  /usr/include/c++/13/debug/helper_functions.h:183:44:   in ‘constexpr’ expansion of ‘__gnu_debug::__valid_range_aux<const unsigned char*>(__first, __last, (std::input_iterator_tag(), std::input_iterator_tag()))’
  /usr/include/c++/13/debug/helper_functions.h:143:20: error: ‘(((const unsigned char*)(&<anonymous>.std::array<unsigned char, 32>::_M_elems)) == 0)’ is not a constant expression
    143 |     { return __ptr == 0; }
        |              ~~~~~~^~~~
  ninja: build stopped: subcommand failed.
  ```

ACKs for top commit:
  achow101:
    ACK c7a24c3052

Tree-SHA512: bce0b98e89b763a2cd38976131f4e1b24071829ae19a46aa313f0983766c54c9494b5af72ce3f2bf0feee2e958c6ab9d90f814fd9b7bfb633caac3749363b279
2025-08-06 11:12:20 +01:00
merge-script
45bdbb1317 Merge bitcoin/bitcoin#33122: test: remove duplicated code in test/functional/wallet_migration.py
6a7c0d3f87 test: refactor to remove duplicated test code (kevkevinpal)

Pull request description:

  This is a followup to https://github.com/bitcoin/bitcoin/pull/32273

  This removes duplicated code in `test/functional/wallet_migration.py`
  [6a7c0d3](6a7c0d3f87) addresses https://github.com/bitcoin/bitcoin/pull/32273/files#r2237317368

ACKs for top commit:
  l0rinc:
    code review ACK 6a7c0d3f87
  ryanofsky:
    Code review ACK 6a7c0d3f87. Nice test deduplication, thanks for following on this!
  jonatack:
    ACK 6a7c0d3f87

Tree-SHA512: 7c1a00106be93304b30f1296d8db0082e99135e2b4574aa4efbefba9b0f0aebe602a0bfabdd9fc188185b0045842c6e8fd031f9bd4d12fe35d3feb6ff5a95e5d
2025-08-06 11:08:28 +01:00
merge-script
a45cc17d34 Merge bitcoin/bitcoin#33115: cmake: Switch to generated ts_files.cmake file
a26fbee38f qt: Translations update (Hennadii Stepanov)
ca04eebd72 cmake: Switch to generated `ts_files.cmake` file (Hennadii Stepanov)
95341de6ca cmake, refactor: Move handling of Qt TS files into `locale` directory (Hennadii Stepanov)

Pull request description:

  This PR:
  1. Moves handling of Qt TS files into the `locale` directory.
  2. Switches from inferior globbing to the explicit file list generated by the [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) script.

  Closes #32653.

ACKs for top commit:
  fanquake:
    ACK a26fbee38f

Tree-SHA512: 10596768c120d9da21a2340b693c5f39e9e1e02976805e14284cf9785780756f953d73d3d2b4a7246ada37acafe3e5d0e8927a8f51bf9fce3bc93a3544231489
2025-08-06 10:47:06 +01:00
merge-script
b90da9c2e9 Merge bitcoin/bitcoin#33138: ci: Pass CI_FAILFAST_TEST_LEAVE_DANGLING into container
fa1d2f6380 ci: Pass CI_FAILFAST_TEST_LEAVE_DANGLING into container (MarcoFalke)

Pull request description:

  After commit fd813bf863, the env var `CI_FAILFAST_TEST_LEAVE_DANGLING` is no longer passed into the container.

  This is harmless, because it isn't needed for the Linux containers and macos doesn't use containers at all.

  However, it would be nice to document it as an allowed setting and consistently pass it on, when set. So do that here.

ACKs for top commit:
  fanquake:
    ACK fa1d2f6380

Tree-SHA512: b61780a27f4c2e11359827b1360a34a132e15bff94f358cbf4d453805afcafb873e2c395908b17610fae026ead93226c19a8f6be40fbb87b623ee992f3e2b43e
2025-08-06 10:30:47 +01:00
MarcoFalke
fa1d2f6380 ci: Pass CI_FAILFAST_TEST_LEAVE_DANGLING into container 2025-08-05 18:59:43 +02:00
merge-script
fd813bf863 Merge bitcoin/bitcoin#33002: ci: Only pass documented env vars
3333d3f75f ci: Only pass documented env vars (MarcoFalke)

Pull request description:

  The CI currently inherits almost all env vars from the host. This was problematic in the past and causing non-determinism, e.g. the fix in commit fa12558d21. It is still problematic today, see e.g. https://github.com/bitcoin/bitcoin/pull/31349#issuecomment-2586828644, or https://github.com/bitcoin/bitcoin/issues/32935

  This fixes https://github.com/bitcoin/bitcoin/issues/32935 by only passing env vars documented in `./ci/test/00_setup_env.sh`.

  Implementation-wise, instead of cramming the python code into the `python -c ""` statement, just start a fresh py file, which is easier to handle.

ACKs for top commit:
  willcl-ark:
    ACK 3333d3f75f

Tree-SHA512: f922e481a844128d7fbf773563278a3992c178ead60a3050eceb9ded2aad979afc815a5cbdb9f68494493c5d8d942cdd1111c21e32a5746d19505b87745cb84a
2025-08-05 14:19:11 +01:00