Skip to content

backport: bitcoin#26140, bitcoin#27482 - #7923

Merged
knst merged 2 commits into
dashpay:developfrom
thepastaclaw:backport-0.26-b188-misc
Oct 18, 2026
Merged

knst merged 2 commits into
dashpay:developfrom
thepastaclaw:backport-0.26-b188-misc

Conversation

@DCG-Claude

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

Copy link
Copy Markdown
Collaborator

🔎 Needs a careful look. Commits are ordered by how much they were adapted: 🔴 heavy first, then 🟡 light (at most two invented lines, or up to six lines counting edits of upstream functional-test or doc lines), then 🟢 faithful (identical to upstream apart from context).

Issue being fixed or feature implemented

Backports 2 Bitcoin Core v0.26 pull request(s) that the Dash queue selected, including any discovered prerequisites: bitcoin#26140, bitcoin#27482.

What was done?

upstream commit review gates notes
bitcoin#26140 bf546a200b 🔴 heavy build:pass mech:warn pick:pass tests:pass tree:pass verify:pass Backports bitcoin#26140 in full: it moves the unconnecting-headers counter, headers sync timeout, prefers-head
bitcoin#27482 290ab768cb 🔴 heavy build:pass ci_fork:pass ci_upstream:warn mech:warn pick:pass tests:pass tree:pass verify:pass Backports the doc/comment path updates from src/chainparams.cpp to src/kernel/chainparams.cpp, including both

Each commit keeps the upstream subject (partial Merge … only where a hunk is deferred to a prerequisite still to be backported, named in the commit body; a hunk Dash intentionally never wants is recorded in the commit body or the reviewer's note above and does not make the backport partial). Conflicts were resolved commit by commit; commits that needed no resolution were cherry-picked unchanged.

How Has This Been Tested?

Recorded per commit, at that commit's own sha, not once for the branch:

  • built at each commit, reusing the worktree build cache
  • the test suites touched by each diff run at that commit, where the diff selected one
  • a mechanical diff-of-diffs against the upstream patch (every upstream hunk present, no added line without an upstream counterpart, no Dash-specific line dropped)
  • an independent verification pass on 2 commit(s) that needed adaptation
  • CI green on the fork gate PR backport: v0.26 bitcoin#26140, bitcoin#27482 thepastaclaw/dash#101 at 290ab768cb, which is this branch's head

Gates that did not come back clean — please weigh these:

Breaking Changes

None beyond the upstream changes themselves.

Checklist:

Left for the reviewer; backportsys does not tick boxes on its own behalf.

  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

Maintainer controls

Tick a box and backportsys acts on it within a few minutes, then clears the box. For anything else — a hunk to drop, a resolution to redo, a question — just leave a review comment; nothing here needs a box.

  • 🔒 Hands off — stop every automated update to this branch
  • 🔄 Rebase onto current develop
  • ❌ Close — abandon this batch and release its items

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-18T06:19:03.589647Z 290ab76 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 44693032-4343-48fe-ab8b-611d11d0a0f3
📥 Commits

Reviewing files that changed from the base of the PR and between 63b98da and 290ab76.

📒 Files selected for processing: 4
  • src/net_processing.cpp
  • src/validation.h
  • test/functional/p2p_sendheaders.py
  • test/functional/p2p_sendheaders_compressed.py
🚧 Files skipped from review as they are similar to previous changes: 1
  • test/functional/p2p_sendheaders.py

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 1 remain after this review.

Walkthrough

Per-peer header state and transaction-announcement tracking move from CNodeState to Peer. GETDATA lookup and header processing use the relocated state, with updated lock requirements. The unconnecting-header threshold and functional test variable names are updated. Source-path references now point to kernel/chainparams.cpp, and m_best_header gains a cs_main guard annotation.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to 290ab

The state moves preserve synchronization and lifetime, test thresholds are unchanged, and updated source references resolve correctly. No material behavior regression is established.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 30.77% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 13 functions across 6 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly identifies the pull request as a backport of Bitcoin Core changes 26140 and 27482.
Description check Passed The description directly explains the two backported changes, testing performed, verification results, and known caveats.
  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@thepastaclaw

thepastaclaw commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Final review complete — no blockers (commit 290ab76) · triage: normal

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Final validation — Phase 1 + Phase 2

Static verification of fad547f..478fd11 against the supplied reviews, upstream patches, and Dash-specific callers found no actionable issues. The networking state migration preserves compressed headers, DSTX handling, and asset-unlock retrieval; documentation adaptations and intentional upstream omissions are supported by source and commit history, and the overlapping base changes do not supersede this work. No builds or tests were run locally; diff whitespace validation passed, current CI lint and ClangFormat checks passed, and source-build checks remain pending with no failed checks reported.

Review provenance

Source: reviewer 1: gemini-3.8-flash-high (agent: phase1-reviewer, role: general); reviewer 2: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: backport-reviewer); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: dash-core-commit-history); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)

  • Triage: normal by gpt-6.1-sol (effort low) — The changes refactor peer-state ownership and locking in src/net_processing.cpp alongside test and documentation updates, requiring substantive review but not directly changing consensus, funds handling, cryptography, network deserialization, or storage migrations.
  • Phase 1 reviewers: gemini-3.8-flash-high — general (completed, effort high); agent phase1-reviewer
  • Phase 1 model: gemini-3.8-flash-high — antigravity quota: weekly 71% left, 5h 100% left
  • Fresh verifier: gpt-6.1-sol — final-verifier; agent sol-verifier
  • Phase 2 reviewers: gpt-6.1-sol — general (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — backport-reviewer (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — dash-core-commit-history (completed, effort high); agent phase2-reviewer

@thepastaclaw thepastaclaw added the pastaclaw:approved thepastaclaw's latest review approved this PR label Oct 18, 2026
Comment thread src/net_processing.cpp
std::chrono::microseconds m_headers_sync_timeout GUARDED_BY(NetEventsInterface::g_msgproc_mutex){0us};

/** Whether this peer wants invs or headers (when possible) for block announcements */
bool m_prefers_headers GUARDED_BY(NetEventsInterface::g_msgproc_mutex){false};

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

m_prefers_headers is backported, but state.fPreferHeadersCompressed is still here.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried a fix but it failed local gates in bitcoin#27379 (verify: Removal of the const TxRelay* GetTxRelay() const overload from struct Peer; Dash keeps it because its own IsInvInFilter(const Peer&, ...) still calls peer.GetTxRelay() on a const Peer; Upstream bitcoin#27379 only passes TxRelay to FindTxForGetData, drops the cs_main lock there, and puts mapRelay/g_relay_expiration under g_msgproc_mutex. It never touches header-announcement preferences. This move). bitcoin#27379 has had its repair lane and is being dropped from this branch.


🤖 backportsys, on behalf of the Dash backport pipeline.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you try to fix fPreferHeadersCompressed and 27379 at once?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved the Dash-only CNodeState::fPreferHeadersCompressed into Peer as m_prefers_headers_compressed (GUARDED_BY g_msgproc_mutex), next to m_prefers_headers, to match bitcoin#26140's fPreferHeaders move. The SENDHEADERS2 handler no longer takes cs_main, and SendMessages reads the Peer field. bitcoin#27379 (bitcoin#26140 follow-ups: FindTxForGetData/mapRelay locking) is a separate upstream PR, so it should come in as its own backport commit instead of being folded into the bitcoin#26140 commit; nothing on this branch blocks it. (folded into the bitcoin#26140 commit)


🤖 backportsys, on behalf of the Dash backport pipeline.

Comment thread src/net_processing.cpp Outdated
/** Determine whether or not a peer can request a transaction, and return it (or nullptr if not found or not allowed). */
CTransactionRef FindTxForGetData(const Peer& peer, const uint256& txid, const std::chrono::seconds mempool_req, const std::chrono::seconds now)
LOCKS_EXCLUDED(cs_main) EXCLUSIVE_LOCKS_REQUIRED(NetEventsInterface::g_msgproc_mutex);
CTransactionRef FindTxForGetData(const Peer::TxRelay& tx_relay, const uint256& txid, const std::chrono::seconds mempool_req, const std::chrono::seconds now)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

27379:

Removal of const Peer::GetTxRelay() overload not taken: Dash-only IsInvInFilter(const Peer&) still uses it, so it is not dead code in Dash

At least mark backport as partial, but better refactor IsInvInFilter and its usages to complete backport

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This branch does not backport bitcoin#27379; it only contains bitcoin#26140, bitcoin#27482 and bitcoin#15765. bitcoin#26140 upstream adds a const GetTxRelay() overload, which Dash already had, so the backport keeps it and removes nothing. Removing the overload and refactoring IsInvInFilter belongs in the bitcoin#27379 backport, and that is where it should be marked partial.


🤖 backportsys, on behalf of the Dash backport pipeline.

Comment thread doc/shared-libraries.md Outdated
#### Version

`dashconsensus_version` returns an `unsigned int` with the API version *(currently at an experimental `0`)*.
`dashconsensus_version` returns an `unsigned int` with the API version *(currently `0`)*.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15765: marked as DNM, see https://github.com/dashpay/dash//pull/4555#discussion_r751159861 for reference.
Any reason why it is backported again?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed: bitcoin#15765 was marked DNM in #4555 (we still use API version 0), and this version only changes a double space and the word 'experimental'. Dropping it from this branch. Dropping bitcoin#15765 from this branch; it is being rewritten without it.


🤖 backportsys, on behalf of the Dash backport pipeline.

@DCG-Claude
DCG-Claude force-pushed the backport-0.26-b188-misc branch from 478fd11 to 155d55b Compare October 18, 2026 05:37
@thepastaclaw thepastaclaw removed the pastaclaw:approved thepastaclaw's latest review approved this PR label Oct 18, 2026
@DCG-Claude DCG-Claude changed the title backport: bitcoin#26140, bitcoin#27379, bitcoin#27482, bitcoin#15765 backport: bitcoin#26140, bitcoin#27482, bitcoin#15765 Oct 18, 2026
@DCG-Claude

Copy link
Copy Markdown
Collaborator Author

Branch rewritten at 155d55b5cc (3 backport(s)).


🤖 backportsys, on behalf of the Dash backport pipeline.

@DCG-Claude
DCG-Claude force-pushed the backport-0.26-b188-misc branch from 155d55b to 63b98da Compare October 18, 2026 05:46
@DCG-Claude DCG-Claude changed the title backport: bitcoin#26140, bitcoin#27482, bitcoin#15765 backport: bitcoin#26140, bitcoin#27482 Oct 18, 2026
@DCG-Claude

Copy link
Copy Markdown
Collaborator Author

Branch rewritten at 63b98da2d5 (2 backport(s)).


🤖 backportsys, on behalf of the Dash backport pipeline.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 63b98da2d5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread doc/release-process.md
* [ ] Write release notes (see below). To clear the release notes: `cp doc/release-notes-empty-template.md doc/release-notes.md`
* [ ] Update flatpak [metainfo file](contrib/flatpak/org.dash.dash-core.metainfo.xml) with latest release tag and estimated release date
* [ ] Update the following variables in [`src/chainparams.cpp`](/src/chainparams.cpp) for mainnet and testnet:
* [ ] Update the following variables in [`src/kernel/chainparams.cpp`](/src/kernel/chainparams.cpp) for mainnet and testnet:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include the advertised bitcoin#15765 hunk

The complete parent-to-commit diff contains no doc/shared-libraries.md hunk even though this backport's metadata says bitcoin#15765's fix to that file landed. A repo-wide check still finds the old located in ... and currently at an experimental ... text, so recording this merge would make the backport queue and review history treat bitcoin#15765 as complete while its advertised change is absent; include the generated 155d55b5cc change in the final tree, or remove bitcoin#15765 from the subject/table so it can be queued separately.

AGENTS.md reference: AGENTS.md:L197-L198

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This branch only carries bitcoin#26140 and bitcoin#27482. Neither commit message mentions bitcoin#15765, and the branch never touches doc/shared-libraries.md, so it doesn't claim bitcoin#15765 is done and nothing is missing here. The finding looks like it belongs to a different backport.


🤖 backportsys, on behalf of the Dash backport pipeline.

…sgproc_mutex to Peer

3a060ae scripted-diff: Rename nUnconnectingHeaders and fPreferHeaders (dergoegge)
279c53d [net processing] Move m_recently_announced_invs from CNodeState to Peer (dergoegge)
938a8e2 [net processing] Annotate m_recently_announced_invs as guarded by g_msgproc_mutex (dergoegge)
8a2cb1f [net processing] Move fPreferHeaders from CNodeState to Peer (dergoegge)
3605011 [net processing] Annotate fPreferHeaders as guarded by g_msgproc_mutex (dergoegge)
4b84e50 [net processing] Move m_headers_sync_timeout from CNodeState to Peer (dergoegge)
689b747 [net processing] Annotate m_headers_sync_timeout as guarded by g_msgproc_mutex (dergoegge)
d8c0d1c [net processing] Move nUnconnectingHeaders from CNodeState to Peer (dergoegge)
5f80d8d [net processing] Annotate nUnconnectingHeaders as guarded by g_msgproc_mutex (dergoegge)
1d87137 [validation] Annotate ChainstateManager::m_best_header as guarded by cs_main (dergoegge)

Pull request description:

  `nUnconnectingHeaders`, `m_headers_sync_timeout`, `fPreferHeaders` and  `m_recently_announced_headers` are currently all `CNodeState` members even though they are only ever accessed from the message processing thread (therefore sufficiently guarded exclusively by `g_msgproc_mutex`). `CNodeState` exists purely to hold validation-specific state guarded by `cs_main` that is accessed by multiple threads.

  This PR adds thread-safety annotations for the above mentioned `CNodeState` members and moves them to `Peer`.

ACKs for top commit:
  glozow:
    code review ACK 3a060ae, as in I am convinced these members shouldn't be guarded by cs_main and belong in Peer/TxRelay. clang checked the annotations for me.
  hebasto:
    ACK 3a060ae

Tree-SHA512: 2db27c03f2c6ed36ad7dfbb4f862eeed3c3e57f845cf8abb9e7cada36f976257311892020bbcff513fbe662a881c93270e3a126946ceb0c3f94213b546bcaa81

Dash adaptations:
- src/net_processing.cpp: FindTxForGetData takes (const Peer&, const uint256& txid) not GenTxid; Dash has no wtxid relay and keeps its asset-unlock instance-hash lookup
- src/net_processing.cpp: upstream's new `const TxRelay* GetTxRelay() const` is dropped; Dash already has one (respecting m_can_tx_relay) and m_tx_relay_mutex is already mutable
- src/net_processing.cpp: HandleFewUnconnectingHeaders keeps Dash's GETHEADERS/GETHEADERS2 choice and the msg_type in its log line, now using the cs_main-snapshotted best_header
- src/net_processing.cpp: UpdatePeerStateForReceivedHeaders call keeps Dash's GetHeadersLimit(pfrom, uses_compressed) in place of MAX_HEADERS_RESULTS
- src/net_processing.cpp: Dash's DSTX-aware tx announcement loop inserts announce_hash into tx_relay->m_recently_announced_invs, not the CNodeState copy
- src/net_processing.cpp: Dash-only fPreferHeadersCompressed (SENDHEADERS2) and m_recent_object_requests stay in CNodeState; upstream only moves fPreferHeaders
- src/net_processing.cpp: the headers-sync timeout check keeps Dash's max_tip_age condition; only state.m_headers_sync_timeout becomes peer->m_headers_sync_timeout
- test/functional/p2p_sendheaders_compressed.py: same MAX_UNCONNECTING_HEADERS -> MAX_NUM_UNCONNECTING_HEADERS_MSGS rename as in Dash's fork of p2p_sendheaders.py
a2bef80 kernel: update m_assumed_* chain params for 25.x (fanquake)
4128e01 kernel: update chainTxData for 25.x (fanquake)
00b2b11 kernel: update nMinimumChainWork & defaultAssumeValid for 25.x (fanquake)
07fcc0a doc: update references to kernel/chainparams.cpp (fanquake)

Pull request description:

  Update chainparams pre `25.x` branch off.
  Co-Author in the commits as a PR (bitcoin#27223) had previously been opened too-early to do the same.

  Note: Remember that some variance is expected in the `m_assumed_*` sizes.

ACKs for top commit:
  achow101:
    ACK a2bef80
  josibake:
    ACK bitcoin@a2bef80
  gruve-p:
    ACK bitcoin@a2bef80
  dergoegge:
    ACK a2bef80 on the new mainnet params

Tree-SHA512: 0b19c2ef15c6b15863d6a560a1053ee223057c7bfb617ffd3400b1734cee8f75bc6fd7f04d8f8e3f5af6220659a1987951a1b36945d6fe17d06972004fd62610

Dash adaptations:
- doc/release-process.md: fixes the chainparams.cpp path in both of Dash's checklist items, since Dash splits upstream's single item into minor/major-release steps
- src/kernel/chainparams.cpp: keeps Dash's own nMinimumChainWork, defaultAssumeValid, m_assumed_* and chainTxData values instead of upstream's Bitcoin 25.x values

Not applicable to Dash (intentionally omitted):
- src/kernel/chainparams.cpp: Bitcoin 25.x chain data (main/test/signet chainwork, assumevalid, sizes, txstats); Dash has its own chain, values and release-time updates, and no signet
@DCG-Claude
DCG-Claude force-pushed the backport-0.26-b188-misc branch from 63b98da to 290ab76 Compare October 18, 2026 06:14

@knst knst left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK 290ab76

@thepastaclaw thepastaclaw left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-review — Final validation — Phase 1 + Phase 2

Verified the complete diff at 290ab76 against both upstream backports; no blocking correctness, Dash-integration, or backport-completeness defects were confirmed. One non-blocking commit-message correction remains. This was a static review: CI lint, multiple platform builds, and nowallet tests pass; ASan and multiprocess builds plus Linux, SQLite, and TSan tests remain pending, while the advisory predict_conflicts entry is cancelled rather than a code-check failure.

🟡 1 suggestion(s)

1 finding(s) not shown inline (the lines are not part of this PR's diff)

🟡 Suggestion: Correct the stale compressed-header adaptation note
<commit:bf546a200bb>:1

The Dash adaptations section of bf546a2 says that fPreferHeadersCompressed and m_recent_object_requests stay in CNodeState. The commit instead removes fPreferHeadersCompressed, introduces Peer::m_prefers_headers_compressed guarded by g_msgproc_mutex, and updates the SENDHEADERS2 handler and announcement-selection reads. Only m_recent_object_requests remains in CNodeState. Amend this adaptation bullet to describe the compressed-header preference move so the permanent backport record agrees with the implementation.

source: gpt-6.1-sol (phase2-reviewer: general, backport-reviewer, dash-core-commit-history)

Review provenance

Source: reviewer 1: gemini-3.8-flash-high (agent: phase1-reviewer, role: general); reviewer 2: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: backport-reviewer); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: dash-core-commit-history); reviewer 5: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 6: gpt-6.1-sol (agent: phase2-reviewer, role: backport-reviewer); reviewer 7: gpt-6.1-sol (agent: phase2-reviewer, role: dash-core-commit-history); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)

  • Triage: normal by gpt-6.1-sol (effort low) — The diff primarily relocates peer state and adjusts locking and callers in src/net_processing.cpp, including Dash compressed-header handling, without changing consensus, network deserialization, or another qualifying critical surface.
  • Phase 1 reviewers: gemini-3.8-flash-high — general (completed, effort high); agent phase1-reviewer
  • Phase 1 model: gemini-3.8-flash-high — antigravity quota: weekly 71% left, 5h 100% left
  • Fresh final gate: an independent Phase-2 review ran after iterative findings were reconciled
  • Fresh verifier: gpt-6.1-sol — final-verifier; agent sol-verifier
  • Phase 2 reviewers: gpt-6.1-sol — general (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — backport-reviewer (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — dash-core-commit-history (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — general (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — backport-reviewer (completed, effort high); agent phase2-reviewer, gpt-6.1-sol — dash-core-commit-history (completed, effort high); agent phase2-reviewer
🤖 Prompt for all review comments with AI agents
These findings are from an automated code review. Verify each finding against the current code and only fix it if needed.

In `<commit:bf546a200bb>`:
- [SUGGESTION] <commit:bf546a200bb>:1: Correct the stale compressed-header adaptation note
  The Dash adaptations section of bf546a200bba2879d0c65531e0f9b1dcef49a6ec says that `fPreferHeadersCompressed` and `m_recent_object_requests` stay in `CNodeState`. The commit instead removes `fPreferHeadersCompressed`, introduces `Peer::m_prefers_headers_compressed` guarded by `g_msgproc_mutex`, and updates the SENDHEADERS2 handler and announcement-selection reads. Only `m_recent_object_requests` remains in `CNodeState`. Amend this adaptation bullet to describe the compressed-header preference move so the permanent backport record agrees with the implementation.

@thepastaclaw thepastaclaw added the pastaclaw:commented thepastaclaw's latest review was comment-only label Oct 18, 2026
@knst
knst merged commit ab1b710 into dashpay:develop Oct 18, 2026
57 of 58 checks passed
@thepastaclaw thepastaclaw removed the pastaclaw:commented thepastaclaw's latest review was comment-only label Oct 18, 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.

3 participants