Repository navigation
params%feat!: add the ipv4_optional deployment per dashpay/dash#8018 - #125
Conversation
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.
|
Note This pull request has no conflicts! 🎊 🎉 🎊 |
|
No actionable comments were generated in the recent review. Summary
Merge Risk:
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! 🚀 New features to boost your workflow:
|
|
✅ Final review complete — no blockers (commit 0fe7280) · triage: low |
thepastaclaw
left a comment
There was a problem hiding this comment.
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:
lowbygpt-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); agentphase1-reviewer,glm-5.3-flash— rust-quality (completed, effort high); agentphase1-reviewer - Phase 1 model:
glm-5.3-flash— zai quota: 5h 100% left, weekly 44% left; passed overgemini-3.8-flash-high(antigravity quota lookup failed) - Fresh verifier:
gpt-6.1-sol— final-verifier; agentsol-verifier - Phase 2 reviewers:
gpt-6.1-sol— general (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— rust-quality (completed, effort medium); agentphase2-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.
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.
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 todash-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
BuriedDeployment::Ipv4OptionalandConsensusParams::ipv4_optional_heightWithdrawals, in the reference's order, anddeployment_heightreturns the new field for it.ConsensusParams::NOT_SCHEDULED(the largesti32) is the height of a buried deployment with no activation scheduled. The height is 0 on testnet andNOT_SCHEDULEDon mainnet and regtest. Develop's tables take no-testactivationheightoverrides, so regtest's new override name is not added here.getdeploymentinfodoes not report the deployment, so a test checks its height on mainnet, testnet and regtest directly.chainparams.json5chainparams.json5was 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:getdeploymentinfodoes not report the new deployment, and no value it reports moved.Breaking Changes
BuriedDeploymentgains the variantIpv4Optional, andConsensusParamsgains the fieldipv4_optional_height. Exhaustive matches onBuriedDeploymentandConsensusParamsstruct literals must add them.How Has This Been Tested?
ipv4_optional_heightschecks the height on mainnet, testnet and regtest, through the field and throughdeployment_height. It fails with testnet's height set to not scheduled, and withdeployment_heightreturning the withdrawals height.just comb(just test lint fuzz::test, CodeQL included) passes on each commit except the C CodeQL query, which reportscontrib/probes/hello.c:59, a file this pull request does not touch. Develop (7a5ddc7) reports the same finding.cargo clippy -p dash-params --all-targets --all-features -- -D warningsandcargo nextest run -p dash-paramspass.Checklist
comments and concerns without said assistance. I assume authorship of the code submitted.
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