Skip to content

backport: v0.26 bitcoin#28071, bitcoin#27838, bitcoin#27171, bitcoin#28558 - #110

Open
DCG-Claude wants to merge 4 commits into
developfrom
backport-0.26-b192-other
Open

DCG-Claude wants to merge 4 commits into
developfrom
backport-0.26-b192-other

Conversation

@DCG-Claude

@DCG-Claude DCG-Claude commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

Automated Bitcoin Core v0.26 backports, batch backport-0.26-b192-other.

upstream commit gates notes
bitcoin#28071 8853c351cf pick:pass build:pass tests:warn mech:warn tree:pass verify:pass Backports bitcoin#28071: the valgrind and fuzz-with-valgrind CI configs now put -gdwarf-4 in CC/CXX instead of overridin
bitcoin#27838 282325c946 pick:pass build:pass tests:warn mech:warn tree:pass verify:pass ci_fork:pass This backports bitcoin#27838's copyright-year bump to ci/test/00_setup_env_native_tsan.sh exactly as upstream wrote it.
bitcoin#27171 2ee276f9c0 build:pass tests:pass mech:warn tree:pass verify:pass Backports the new sigop-limit policy test (-bytespersigop), switching from P2WSH to P2SH because Dash has no segwit, r
bitcoin#28558 a2551046d5 pick:pass build:pass tests:pass mech:warn tree:pass verify:pass This backports bitcoin#28558 so PeerManagerImpl owns a FastRandomContext (m_rng, deterministic in tests). PushAddress an

Skipped in this batch:

Provenance

Each commit passed: cherry-pick (adapted by an Opus lane only where conflicts existed), build, touched tests, a mechanical diff-of-diffs check (every upstream hunk landed; no added line without an upstream counterpart), and an independent Opus verification lane where anything was adapted. Gate rows and lane artifacts are in the backportsys DB.

fa4ccf1 ci: Add missing -O2 to valgrind tasks (MarcoFalke)

Pull request description:

  Currently the tasks have nothing (`-O0`) set, which makes them slow.

  Fix this by falling back to the default (`-O2`).

ACKs for top commit:
  recursive-rat4:
    utACK fa4ccf1
  dergoegge:
    utACK fa4ccf1

Tree-SHA512: 44d803000d883cfa534f2c76d793d7d7f840e114fc377d20fc36d008b471d69ec9f0170358ed1f3567d49e3ff63682244062c954cd0b963df31ca39c08d2d5b9

Dash adaptations:
- ci/test/00_setup_env_native_fuzz_with_valgrind.sh: puts -gdwarf-4 into CC/CXX on Dash's clang-19/clang++-19, keeping Dash's dwarf comment and CCACHE_MAXSIZE
- ci/test/00_setup_env_native_valgrind.sh: puts -gdwarf-4 into CC/CXX on Dash's clang-19/clang++-19, keeping Dash's dwarf comment, PACKAGES and --timeout-factor=4
fac7f4a ci: Invalidate Cirrus CI docker cache (MarcoFalke)

Pull request description:

  Currently the Cirrus CI seems to fail for some reason. No idea why, but maybe invalidating the Docker image cache fixes it?

  The failure is:

  ```
      Failed to start an instance! Failed to pull null image! Repository does not exist or may require authentication.
      Container errored with 'ImagePullBackOff: Back-off pulling image "gcr.io/cirrus-ci-community/bitcoin/bitcoin/ci/test_imagefile:b3e086572130d8954f84bb90778d02e2cfbb6dc624c01e2f74ee17335a9c453e"'
  ```

  https://cirrus-ci.com/task/5983593860694016

ACKs for top commit:
  achow101:
    ACK fac7f4a

Tree-SHA512: 3e8ed4f51ba29109e508f269b4281c81dfa844dc0dd5658a83388da586fc4234ae5c076c174122834114fb7c9e0026c042ea38deac53e7d796cc59526fbb7c46

Dash adaptations:
- ci/test/00_setup_env_native_tsan.sh: copyright year bump taken as upstream (applied cleanly)
- ci/test/00_setup_env_native_msan.sh: kept Dash's '2020-present' header; a later upstream change already replaced the year range upstream bumps here

Not applicable to Dash (intentionally omitted):
- ci/test/00_setup_env_native_msan.sh: Header already reads '2020-present'; bumping to '2020-2023' would undo a newer change, and Dash has no Cirrus docker cache to invalidate
- ci/test/00_setup_env_native_tidy.sh: Dash has no native_tidy env script (tidy runs via ci/dash/lint-tidy.sh); the hunk only invalidates a Cirrus cache, which Dash lacks
…espersigop` setting)

89cd20c test: add coverage for sigop limit policy (`-bytespersigop` setting) (Sebastian Falbesoner)

Pull request description:

  This PR adds missing test coverage for the `-bytespersigop` option, which determines how pre-taproot signature operations (OP_CHECKSIG{VERIFY}, OP_CHECKMULTIGSIG{VERIFY}) affect fee handling calculations. The setting was introduced in PR dashpay#7081 for mitigating the [sigop spam attack](https://bitcointalk.org/index.php?topic=1166928.0); the initial implementation rejected txs exceeding the limit, but was changed in bitcoin#8365 later to account for higher sizes in the mempool (i.e. exceeding the sigop limit is possible, but has to be compensated by higher fees).

  For each combination of `-bytespersigop` setting and sigops count, the test first creates a P2WSH spending transaction with a witness script that puts sigops in a non-executing branch (OP_FALSE OP_IF OP_CHECKMULTISIG ... OP_CHECKSIG ... OP_ENDIF). This tx is then bumped up to reach exactly the _sig-op limit equivalent vsize_ by padding its datacarrier output. Based on that, increasing the tx's vsize should still reflect a vsize increase in the mempool, while a decrease of the tx's vsize should lead to the mempool treating the tx's vsize to be the _sig-op limit equivalent vsize_, since the limit was exceeded.

  I assume that this parameter is almost never set explicitly by users (also it is not relevant for taproot spends), but it doesn't hurt to have a test for it. See also https://bitcoin.stackexchange.com/a/87958 for another explanation.

ACKs for top commit:
  glozow:
    light review ACK 89cd20c
  MarcoFalke:
    nice ACK 89cd20c  📁

Tree-SHA512: 06998ce93bf9d5ce6143db2996a43f13990c415f97afe684227ad469349e73952bf4f6c871c1e6349e07606f4d45db64408848873a86a89481cdca5a134e5e60
4cafe9f [test] Make PeerManager's rng deterministic in tests (dergoegge)
fecec3e [net processing] FeeFilterRounder doesn't own a FastRandomContext (dergoegge)
47520ed [net processing] Make fee filter rounder non-global (dergoegge)
77506f4 [net processing] Addr shuffle uses PeerManager's rng (dergoegge)
a648dd7 [net processing] PushAddress uses PeerManager's rng (dergoegge)
87c7067 [net processing] PeerManager holds a FastRandomContext (dergoegge)

Pull request description:

  This lets us avoid some non-determinism in tests (also see bitcoin#28537).

ACKs for top commit:
  MarcoFalke:
    re-ACK 4cafe9f  🕗
  glozow:
    concept && light code review ACK 4cafe9f

Tree-SHA512: 3c18700773d0bc547ccb6442c41567e6f26b0b50fab5b79620da417ec91b9c0ae1395d15258da3aa4a91447b8ce560145dd135e39fbbd0610749e528e665b111

Dash adaptations:
- src/net_processing.cpp: adds only m_rng to PeerManagerImpl, with no m_fee_filter_rounder member, because Dash removed feefilter (FeeFilterRounder/MaybeSendFeefilter do not exist)
- src/net_processing.cpp: m_rng{opts.deterministic_rng} is initialised in Dash's extended PeerManagerImpl constructor (dstxman, mn_metaman, llmq_ctx, ...), which keeps all its Dash parameters
- src/test/util/setup_common.cpp: sets peerman_opts.deterministic_rng = true before Dash's MakePeerManager(...) helper instead of upstream's PeerManager::make(...) call

Not applicable to Dash (intentionally omitted):
- src/policy/fees.cpp: Dash has no FeeFilterRounder (feefilter was reverted in Dash, see 8b4c419), so there is no constructor to give an rng parameter
- src/policy/fees.h: FeeFilterRounder class does not exist in Dash; feefilter P2P message is not implemented
- src/test/fuzz/fees.cpp: Dash's fees fuzz target has no FeeFilterRounder section to update, since Dash has no feefilter
- src/test/policy_fee_tests.cpp: This file only tests FeeFilterRounder, which Dash lacks; it is absent in Dash and stays deleted
- src/net_processing.cpp: MaybeSendFeefilter hunks (g_filter_rounder to m_fee_filter_rounder) dropped; Dash has no MaybeSendFeefilter or feefilter relay
@DCG-Claude DCG-Claude changed the title backport: v0.26 bitcoin#28071, bitcoin#27838 backport: v0.26 bitcoin#28071, bitcoin#27838, bitcoin#27171, bitcoin#28558 Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant