Skip to content

params%feat!: add the ipv4_optional deployment per dashpay/dash#8018 - #125

Merged
kwvg merged 2 commits into
developfrom
pasta/params-v24.0.0
Nov 6, 2026
Merged

kwvg merged 2 commits into
developfrom
pasta/params-v24.0.0

Conversation

@PastaPastaPasta

Copy link
Copy Markdown
Member

Motivation

The reference implementation v24.0.0 adds a buried deployment, ipv4_optional (dashpay/dash#8018). From its height, masternode primary addresses need not be IPv4. Testnet has it from genesis, and mainnet and regtest have no height scheduled. This pull request adds the deployment and its height to dash-params. v24.0.0 changes no other chain parameter since v24.0.0-rc.5, which the params were synced to: no chain work, assumed-valid block, checkpoint, transaction statistics, size or seed moved.

Additional Information

Description Notes Reference implementation Corpus
Add BuriedDeployment::Ipv4Optional and ConsensusParams::ipv4_optional_height The new variant comes after Withdrawals, in the reference's order, and deployment_height returns the new field for it. ConsensusParams::NOT_SCHEDULED (the largest i32) is the height of a buried deployment with no activation scheduled. The height is 0 on testnet and NOT_SCHEDULED on mainnet and regtest. Develop's tables take no -testactivationheight overrides, so regtest's new override name is not added here. getdeploymentinfo does not report the deployment, so a test checks its height on mainnet, testnet and regtest directly. deployment, height, name, mainnet, testnet, regtest chainparams.json5
Update the changelog "Added". none none

chainparams.json5 was recaptured with the commands in its header, from nodes built from the v24.0.0 tag (938fba5028, wallet disabled). No v24.0.0 release binaries are published yet. Each node had an empty data directory and no connections. Only the header line naming the version changed: getdeploymentinfo does not report the new deployment, and no value it reports moved.

Breaking Changes

BuriedDeployment gains the variant Ipv4Optional, and ConsensusParams gains the field ipv4_optional_height. Exhaustive matches on BuriedDeployment and ConsensusParams struct literals must add them.

How Has This Been Tested?

  • ipv4_optional_heights checks the height on mainnet, testnet and regtest, through the field and through deployment_height. It fails with testnet's height set to not scheduled, and with deployment_height returning the withdrawals height.
  • just comb (just test lint fuzz::test, CodeQL included) passes on each commit except the C CodeQL query, which reports contrib/probes/hello.c:59, a file this pull request does not touch. Develop (7a5ddc7) reports the same finding.
  • Merged onto the current develop, cargo clippy -p dash-params --all-targets --all-features -- -D warnings and cargo nextest run -p dash-params pass.
  • Only Linux x86_64 was run.

Checklist

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional tests
  • I have made corresponding changes to the documentation
  • I did not use agentic assistance (i.e. LLMs, AI) except as disclosed and can answer questions,
    comments and concerns without said assistance. I assume authorship of the code submitted.
  • I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

Agent disclosure

Code, commit messages and this description were generated with Claude Code using Claude Opus 5.5, running autonomously as an agent on behalf of the author. The agent also built the reference implementation and ran the nodes that wrote chainparams.json5.

🤖 Generated with Claude Code

Masternode primary addresses need not be IPv4 from its height. The
height is 0 on testnet and not scheduled on mainnet and regtest. The
RPC corpus is recaptured at v24.0.0.
@PastaPastaPasta PastaPastaPasta added this to the 0.3 milestone Nov 6, 2026
@PastaPastaPasta
PastaPastaPasta requested a review from kwvg November 6, 2026 02:27
@github-actions

github-actions Bot commented Nov 6, 2026

Copy link
Copy Markdown

Note

This pull request has no conflicts! 🎊 🎉 🎊

@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Explain Change →

No actionable comments were generated in the recent review.

Summary

Summary by CodeRabbit

  • New Features
    • Masternode primary addresses can use non-IPv4 formats on testnet starting at block 0. This change is not scheduled for mainnet or regtest.
  • Documentation
    • Clarified that getdeploymentinfo does not report this activation.

The consensus parameters now include BuriedDeployment::Ipv4Optional and ipv4_optional_height. deployment_height returns the new field for this deployment. Testnet sets the height to 0; mainnet and regtest set it to ConsensusParams::NOT_SCHEDULED, defined as 2,147,483,647. The corpus test checks that the field and deployment lookup agree across these networks.

Merge Risk: Minimal · up to 0fe72

The deployment parameters are consistent with the stated network settings. No merge-blocking risk is identified.

Pre-merge checks: Passed 4

Check name Status Explanation
Title check Passed The title identifies the new ipv4_optional deployment, which is the main change.
Description check Passed The description explains the new deployment, network heights, tests, and breaking changes.
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.
  • 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

Recent review info

Run configuration

Commits

Reviewing files that changed from the base of the PR and between a20120b and 0fe7280.

Files ignored due to path filters: 1

  • pkgs/params/corpus/chainparams.json5 is excluded by !**/*.json5
Files selected for processing: 6

  • pkgs/params/CHANGELOG.md
  • pkgs/params/src/consensus.rs
  • pkgs/params/src/params/mainnet.rs
  • pkgs/params/src/params/regtest.rs
  • pkgs/params/src/params/test3.rs
  • pkgs/params/tests/corpus.rs

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

@github-actions github-actions Bot added the status:behind This pull request can be rebased on the base branch. label Nov 6, 2026
@codecov

codecov Bot commented Nov 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@thepastaclaw

thepastaclaw commented Nov 6, 2026 •

Copy link
Copy Markdown

✅ Final review complete — no blockers (commit 0fe7280) · triage: low

@thepastaclaw thepastaclaw 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.

Final validation — Phase 1 + Phase 2

Verified the complete diff at 0fe7280 against Dash Core 938fba502824b9d850b7c710601456dc3d71603e; the deployment, lookup mapping, sentinel, and network heights match, with direct tests covering its intentional omission from getdeploymentinfo. No in-scope defects were found, and the public API break is disclosed. Validation was static only; the supplied CI snapshot and current PR checks show successful applicable build, test, lint, and cross-platform jobs, with no failures or pending checks.

Review provenance

Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: glm-5.3-flash (agent: phase1-reviewer, role: rust-quality); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 4: gpt-6.1-sol (agent: phase2-reviewer, role: rust-quality); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)

  • Triage: low by gpt-6.1-sol (effort low) — The diff is a small, contained addition of a deployment variant, activation-height field, network constants and direct tests, with no intricate consensus implementation changes.
  • Phase 1 reviewers: glm-5.3-flash — general (completed, effort high); agent phase1-reviewer, glm-5.3-flash — rust-quality (completed, effort high); agent phase1-reviewer
  • Phase 1 model: glm-5.3-flash — zai quota: 5h 100% left, weekly 44% left; passed over gemini-3.8-flash-high (antigravity quota lookup failed)
  • Fresh verifier: gpt-6.1-sol — final-verifier; agent sol-verifier
  • Phase 2 reviewers: gpt-6.1-sol — general (completed, effort medium); agent phase2-reviewer, gpt-6.1-sol — rust-quality (completed, effort medium); agent phase2-reviewer
Out-of-scope follow-up suggestions (1)

These are valid observations, but they are outside this PR's scope and should be handled in separate issues or author/maintainer-requested PRs rather than blocking this review.

  • Track context-aware provider-network validation parity — The existing structural checks in pkgs/primitives/src/sptx.rs::check_sptx_netinfo and NetInfoV2::check do not enforce Core's pre-activation IPv4-primary/same-address requirements or its activation-independent mainnet primary-port pins. These rules are confirmed in Dash Core 938fba5028, src/evo/providertx.cpp:233–275 and src/evo/netinfo.cpp:82–86,648–652. This is a separate validation capability gap, not a defect introduced by this parameter-only PR; the context-free structural checks should not be treated as complete consensus validation.
    • Follow-up: Track a follow-up PR for explicitly context-aware provider-network validation using the deployment height and network-specific port rules, with Core-derived acceptance/rejection vectors. Preserve the context-free structural checks and the existing crate dependency direction.

@kwvg kwvg 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 0fe7280

@kwvg
kwvg merged commit 76832fa into develop Nov 6, 2026
55 checks passed
PastaPastaPasta added a commit to PastaPastaPasta/base-sdk that referenced this pull request Nov 6, 2026
Takes dashpay#118 dashpay#116 dashpay#117 dashpay#120 dashpay#124 dashpay#125. The fork keeps its V2 split, its
basic-keyed IES calls beside the new `_as` forms, S5's V23_1 params and
FU-1's governance signature bound.
@kwvg
kwvg deleted the pasta/params-v24.0.0 branch November 6, 2026 23:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:behind This pull request can be rebased on the base branch.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants