Skip to content

backport: update seeds, checkpoints, minimum chain work, assumevalid and tx stats for v24 (#7980) - #7982

Merged
PastaPastaPasta merged 1 commit into
dashpay:v24.0.xfrom
PastaPastaPasta:backport/v24.0.0-chainparams-seeds
Oct 30, 2026
Merged

PastaPastaPasta merged 1 commit into
dashpay:v24.0.xfrom
PastaPastaPasta:backport/v24.0.0-chainparams-seeds

Conversation

@PastaPastaPasta

@PastaPastaPasta PastaPastaPasta commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Issue being fixed or feature implemented

Backport of #7980 (develop) to v24.0.x, so v24.0.0-rc.5 ships with fresh seeds, checkpoints, nMinimumChainWork, defaultAssumeValid, chainTxData and assumed sizes. These are the per-release chain parameter updates from doc/release-process.md. The pattern matches #6920 for v23: develop first, then the release branch.

What was done?

Both #7980 commits were cherry-picked with -x onto the v24.0.x tip (47814b0). Two adaptations were needed:

Values, all read from fully synced v24.0.0-rc.4 nodes:

Mainnet Testnet
Block 2563000 1550000
Hash (new checkpoint, defaultAssumeValid) 000000000000000346a1804da4832b0b69dd9a7f96b14c7cb54585a9ac6ae98f 000000116cd3c11d44c88cbc0a26804bd277a5d790f684ec3a8aaa820690318c
nMinimumChainWork 0x…c15981a81af44a6abe1a 0x…03ed573a939487fc
chainTxData (getchaintxstats 17280 <hash>) 1793218693 / 71411418 / 0.1306891420721072 1788899589 / 8494561 / 0.0139463532250889
m_assumed_blockchain_size 57 → 62 (synced datadir 56G, plus 10%) 10 (unchanged; synced datadir 6.3G)

Seeds:

  • Mainnet: 239 IPv4 and 10 onion seeds from protx list valid true 2563000.
  • Testnet: 25 seeds from protx list valid true 1581000.
  • The 15 onion seeds that failed two Tor connection attempts were removed.

See #7980 for the full method.

How Has This Been Tested?

  • Re-checked just before this PR on the synced nodes, read-only:
    • getblockheader at 2563000 (612 confirmations) and at 1550000 returns exactly the hashes and chainwork above.
  • On chore: update seeds, checkpoints, minimum chain work, assumevalid and tx stats for v24 #7980 (develop), with the same values and seed data:
    • The unit tests that read chain parameters pass.
    • A node on empty mainnet and testnet datadirs with -dnsseed=0, bootstrapping only from the new fixed seeds, synced headers past both new checkpoints. Mainnet reached 2563592 from 239 seeds and testnet reached 1581891 from 25 seeds. There were no checkpoint or bad-fork errors.
  • On this branch: built dashd and test_dash at da6c192 (Linux x86_64, depends). The unit tests versionbits_tests, validation_tests, validation_chainstatemanager_tests, net_tests and checkqueue_tests pass with *** No errors detected.
  • Follow-up check, not run: release-process.md's -reindex-chainstate -assumevalid=0 pass over mainnet history.
  • Mainnet EHF state at the tip: from V20 activation to 2563584 there are no MNHF_SIGNAL transactions for bit 13 or 14, and no block in the last 4032 signals them.

Breaking Changes

None.

Checklist:

  • 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

🤖 Generated with Claude Code

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 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 ⚠️ Failed 2026-10-29T23:05:58.952705Z
We couldn’t complete this review. Comment @codex review to try again.
da6c192 PR opened
ℹ️ 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.

@thepastaclaw

thepastaclaw commented Oct 29, 2026 •

Copy link
Copy Markdown
Collaborator

🕓 Review not started yet because the new head is waiting for the 30-minute push debounce.

  • Request normal review — click when the PR is ready for review.
  • Request priority review — click to move this review to the front of the queue.

Commit 129a1fc. Normal review starts when eligible; priority review starts as soon as a slot is available.

@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

No actionable in-scope defects were identified. The chain-parameter updates and regenerated fixed-seed data are internally consistent and match the intended backport, with successful title validation, conflict prediction, and amd64 container builds; arm64 container builds were still in progress at the evidence timestamp.

Review provenance

Source: reviewer 1: muse-spark-1.3-contributor (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) — This is a contained release-parameter and seed-data update, but it changes chain validation assumptions and peer bootstrap data enough to warrant ordinary review without meeting the critical-surface threshold.
  • Phase 1 reviewers: muse-spark-1.3-contributor — general (completed, effort xhigh); agent phase1-reviewer
  • Phase 1 model: muse-spark-1.3-contributor — not quota-gated; passed over gemini-3.8-flash-high (antigravity quota lookup failed), glm-5.3-flash (not used above high effort; tier asks max)
  • 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 pastaclaw:approved thepastaclaw's latest review approved this PR and removed pastaclaw:approved thepastaclaw's latest review approved this PR labels Oct 29, 2026
…ork, assumevalid and tx stats for v24

bcf1202 chore: refresh onion seeds for v24 (pasta)
b34f8c7 chore: update minimum chain work, assumevalid, checkpoints and tx stats for v24 (pasta)
ffb3c16 chore: update seeds for v24 (pasta)

Pull request description:

  ## Issue being fixed or feature implemented

  Before every major release, `doc/release-process.md` asks for fresh seeds, checkpoints, `nMinimumChainWork`, `defaultAssumeValid`, `chainTxData` and assumed sizes for mainnet and testnet. The current values date from v23.x: mainnet block 2487500, testnet block 1400000. This PR updates them for v24.0.0. As with dashpay#6920 for v23, it goes to develop first, then to `v24.0.x` as a backport.

  ## What was done?

  **Seeds** (`contrib/seeds/*`, `src/chainparamsseeds.h`)

  - Mainnet: 239 IPv4 seeds and 10 onion seeds, generated from `protx list valid true 2563000` with `makeseeds.py -a asmap-filled.dat` (asmap from bitcoin.sipa.be, sha256 `eab9c6e00769b461bf5c0cd02c7b5e991739ebbbff3ce568846377031f4b5fcf`). makeseeds reported 2252 masternodes, 2207 with at least 10000 confirmations, and 1507 after deduplication. The per-ASN limit then reduced that to 239.
  - Testnet: 25 seeds from `protx list valid true 1581000`. As in dashpay#6920, operator deduplication was commented out and the IPv4 per-ASN limit raised to 10. These are local edits and are not committed.
  - `onion_seeds.txt`: removed the 15 onion addresses that failed two `nc -z` attempts through Tor. The remaining 10 all answered.
  - `contrib/seeds/README.md`: the example now uses `protx list valid true <height>`. v24 rejects `1` for `detailed` unless `-deprecatedrpc=permissive_bool` is set.

  **Chain parameters** (`src/kernel/chainparams.cpp`)

  | | Mainnet | Testnet |
  |---|---|---|
  | Block | 2563000 | 1550000 (about 32k blocks behind the tip, as release-process.md asks) |
  | Hash (new checkpoint, `defaultAssumeValid`) | `000000000000000346a1804da4832b0b69dd9a7f96b14c7cb54585a9ac6ae98f` | `000000116cd3c11d44c88cbc0a26804bd277a5d790f684ec3a8aaa820690318c` |
  | `nMinimumChainWork` | `0x…c15981a81af44a6abe1a` | `0x…03ed573a939487fc` |
  | `chainTxData` (`getchaintxstats 17280 <hash>`) | 1793218693 / 71411418 / 0.1306891420721072 | 1788899589 / 8494561 / 0.0139463532250889 |
  | `m_assumed_blockchain_size` | 57 → 62 | 10 (unchanged) |
  | `m_assumed_chain_state_size` | 1 (unchanged) | 1 (unchanged) |

  Sizes:
  - Mainnet: a synced v24.0.0-rc.4 datadir is 56G. With 10% headroom that gives 62. The chainstate is 258M, so the chain state size stays at 1.
  - Testnet: the synced datadir is 6.3G, below the current value of 10, so that value is kept. The chainstate is 111M.

  `m_assumeutxo_data` is still empty on mainnet and testnet. There is no published snapshot to commit to yet.

  Reviewers can reproduce every value with `getblockhash`, `getblockheader` and `getchaintxstats 17280 <hash>` at the heights above, and the seed lists with the README commands at the stated heights.

  ## How Has This Been Tested?

  - All values were read from fully synced v24.0.0-rc.4 mainnet and testnet nodes: block 2563000 had 586 confirmations, the mainnet tip was 2563584, and the testnet tip was 1581864.
  - Built this branch and ran the `versionbits_tests`, `validation_tests`, `validation_chainstatemanager_tests`, `net_tests` and `checkqueue_tests` unit tests: no errors.
  - Started this branch's `dashd` on empty mainnet and testnet datadirs with `-dnsseed=0`, so it could only bootstrap from the new fixed seeds.
    - Mainnet: logged "Added 239 fixed seeds", reached 10 peers, and synced headers to 2563592.
    - Testnet: logged "Added 25 fixed seeds", reached 10 peers, and synced headers to 1581891.
    - Both header syncs passed the new checkpoints with no checkpoint or bad-fork errors. The onion seeds were not used in this run because Tor was off.
  - Mainnet EHF check, done on a fully synced v24.0.0-rc.4 node at tip 2563584: a scan of every block from V20 activation (1987776) to the tip, 575810 blocks, found exactly three `MNHF_SIGNAL` transactions. They are bit 10 at 2119135 (MN_RR), bit 11 at 2192864 (WITHDRAWALS), and bit 12 at 2400222. The bit-12 signal is the one v23's numbering mined for V24, and is why V24 moved to bit 13. None is for bit 13 or 14, and no block in the last 4032 sets version bit 12, 13 or 14. v24 has no deployment on bit 12, so v24 nodes see that old signal as an unknown bit. The Nov 9 signal is therefore the first bit-13 signal for v23 and v24 nodes alike, with no duplicate or expired-signal mismatch. rc.4's `getdeploymentinfo` omits `NEVER_ACTIVE` deployments, so the chain was checked directly instead.

  ## Breaking Changes

  None.

  ## Checklist:
  - [x] I have performed a self-review of my own code
  - [x] I have made corresponding changes to the documentation
  - [ ] I have assigned this pull request to a milestone

  🤖 Generated with [Claude Code](https://claude.com/claude-code)

Top commit has no ACKs.

Tree-SHA512: 3e5c94e5decbd933a7510033b86d237bf3e88473e689504e841eb802f34848f9fa4540ce318877e9fbb29c6df7da6388fed7762a0bb8476a816683bf65e390c3
(cherry picked from commit 61d4333)
@PastaPastaPasta
PastaPastaPasta force-pushed the backport/v24.0.0-chainparams-seeds branch from 61d1417 to 129a1fc Compare October 30, 2026 01:50
@PastaPastaPasta
PastaPastaPasta merged commit 8163290 into dashpay:v24.0.x Oct 30, 2026
10 of 11 checks passed
@PastaPastaPasta PastaPastaPasta added this to the 24 milestone Oct 30, 2026
@PastaPastaPasta PastaPastaPasta mentioned this pull request Nov 4, 2026
3 of 5 tasks
PastaPastaPasta added a commit that referenced this pull request Nov 5, 2026
d6c066f chore: add v23.1.10 to the flatpak release history (pasta)
202632c chore: release v24.0.0 (pasta)

Pull request description:

  ## Issue being fixed or feature implemented

  `v24.0.x` is at `v24.0.0-rc.7` (`111a2c533e`) and still builds as a pre-release: `CLIENT_VERSION_IS_RELEASE` is `false`, so the binaries show the "This is a pre-release test build" warning. The final tag needs that flag set, and the v24.0.0 release notes don't yet list v23.1.10 (released Nov 2), which shipped after the notes were written.

  ## What was done?

  - `configure.ac`: set `_CLIENT_VERSION_IS_RELEASE` to `true`. The version is already 24.0.0.
  - `doc/release-notes/dash/release-notes-23.1.10.md`: archive the v23.1.10 notes, copied byte for byte from the `v23.1.10` tag.
  - `doc/release-notes.md`: add v23.1.10 to "Older releases" and start the "set of changes" link from `v23.1.10` instead of `v23.1.9`. v23.1.10 is the last release before v24.0.0 and is an ancestor of this branch.

  - `contrib/flatpak/org.dash.dash-core.metainfo.xml`: add the `23.1.10` entry, copied from the `v23.1.10` tag (`2026-10-30`, the date that tag recorded). The `24.0.0` entry dated `2026-11-05` was already there.

  Nothing else changes. Code, consensus and activation parameters, chainparams, seeds, translations and man pages are as they were at rc.7. Those were updated earlier in #7974, #7982 and #7989.

  ## How Has This Been Tested?

  - `git diff v24.0.0-rc.7` touches only the four files above. In `configure.ac` the only change is the `_CLIENT_VERSION_IS_RELEASE` line.
  - The archived notes match `git show v23.1.10:doc/release-notes.md` exactly (`cmp`).
  - CI runs on the PR head and is linked from this PR.
  - `xmllint --noout` passes on the metainfo file.
  - Local build of `202632c83c` on macOS with Homebrew Autoconf 2.73 (the later metainfo commit doesn't affect the build). This passed only with a local workaround, so it isn't a clean build pass:
    - `./autogen.sh && ./configure` succeeds, and the generated `src/config/bitcoin-config.h` has `#define CLIENT_VERSION_IS_RELEASE true`.
    - The first `make -C src dash-cli` failed with `bitcoin-cli.cpp:151:32: error: use of undeclared identifier 'PACKAGE_NAME'`. This Autoconf leaves all six `PACKAGE_*` macros as `#undef` in the generated header, although configure sets them in `confdefs.h`.
    - Apart from the release flag, the build inputs are the same as rc.7, so this is a local toolchain issue. Guix builds use their own autotools.
    - After copying the six `PACKAGE_*` defines from configure's `confdefs.h` into the generated, untracked header, `dash-cli` and `warnings.cpp` compiled. No tracked file was changed.
    - `dash-cli -version` prints `Dash Core RPC client version v24.0.0`. The compiled `warnings.o` no longer contains the "pre-release test build" string.

  ## Breaking Changes

  None.

  ## Checklist:
  - [x] 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/e2e tests
  - [x] I have made corresponding changes to the documentation
  - [x] I have assigned this pull request to a milestone

  🤖 Generated with [Claude Code](https://claude.com/claude-code)

Top commit has no ACKs.

Tree-SHA512: 5acc7c15a58cb6f49d14c2bf02e36e8af083416375a03f35e35341db3cafb1caf81319cff6f2b14d4e86539b8dd75dca4ecc926638e39093d69cc8e4d609701e
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.

2 participants