Repository navigation
backport: update seeds, checkpoints, minimum chain work, assumevalid and tx stats for v24 (#7980) - #7982
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
🕓 Review not started yet because the new head is waiting for the 30-minute push debounce.
Commit 129a1fc. Normal review starts when eligible; priority review starts as soon as a slot is available. |
thepastaclaw
left a comment
There was a problem hiding this comment.
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:
normalbygpt-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); agentphase1-reviewer - Phase 1 model:
muse-spark-1.3-contributor— not quota-gated; passed overgemini-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; agentsol-verifier - Phase 2 reviewers:
gpt-6.1-sol— general (completed, effort high); agentphase2-reviewer,gpt-6.1-sol— backport-reviewer (completed, effort high); agentphase2-reviewer,gpt-6.1-sol— dash-core-commit-history (completed, effort high); agentphase2-reviewer
…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)
61d1417 to
129a1fc
Compare
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
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,chainTxDataand assumed sizes. These are the per-release chain parameter updates fromdoc/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
-xonto thev24.0.xtip (47814b0). Two adaptations were needed:src/chainparams.cpp: develop moved this file tosrc/kernel/chainparams.cpp, so the same hunks were applied here. The changed lines are identical to chore: update seeds, checkpoints, minimum chain work, assumevalid and tx stats for v24 #7980's.contrib/seeds/README.md: this branch still has the pre-asmap README. Only theprotx list valid true 2563000fix is carried over. The seed lists andsrc/chainparamsseeds.hwere generated with develop's tooling (asmap-based ASN lookup) and are byte-identical to chore: update seeds, checkpoints, minimum chain work, assumevalid and tx stats for v24 #7980's. The input files on both branches were identical before the change.Values, all read from fully synced v24.0.0-rc.4 nodes:
defaultAssumeValid)000000000000000346a1804da4832b0b69dd9a7f96b14c7cb54585a9ac6ae98f000000116cd3c11d44c88cbc0a26804bd277a5d790f684ec3a8aaa820690318cnMinimumChainWork0x…c15981a81af44a6abe1a0x…03ed573a939487fcchainTxData(getchaintxstats 17280 <hash>)m_assumed_blockchain_sizeSeeds:
protx list valid true 2563000.protx list valid true 1581000.See #7980 for the full method.
How Has This Been Tested?
getblockheaderat 2563000 (612 confirmations) and at 1550000 returns exactly the hashes and chainwork above.-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.dashdandtest_dashat da6c192 (Linux x86_64, depends). The unit testsversionbits_tests,validation_tests,validation_chainstatemanager_tests,net_testsandcheckqueue_testspass with*** No errors detected.-reindex-chainstate -assumevalid=0pass over mainnet history.MNHF_SIGNALtransactions for bit 13 or 14, and no block in the last 4032 signals them.Breaking Changes
None.
Checklist:
🤖 Generated with Claude Code