Skip to content

fix(dashmate): refresh quorum-server seeds and complete node identities - #4539

Open
PastaPastaPasta wants to merge 11 commits into
dashpay:v4.3-devfrom
PastaPastaPasta:fix/dashmate-mainnet-fullnode
Open

PastaPastaPasta wants to merge 11 commits into
dashpay:v4.3-devfrom
PastaPastaPasta:fix/dashmate-mainnet-fullnode

Conversation

@PastaPastaPasta

@PastaPastaPasta PastaPastaPasta commented Aug 30, 2026

Copy link
Copy Markdown
Member

Issue being fixed or feature implemented

Dashmate's fixed Tenderdash peers can become obsolete as evonodes rotate. Fullnodes configured outside the setup wizard can also reach Tenderdash with a null node key.

Release prerequisite: deploy quorum-list-server#14 to both public servers and regenerate the committed snapshots. Both live endpoints still lack its bootstrap metadata; the historical Core-derived snapshots are intentionally rejected by the new release check.

What was done?

  • Generate mainnet and testnet seeds exclusively from the public quorum list servers.
  • Sample eligible identities with fresh cryptographic randomness, then sort the selected peers. Duplicate entries and additional endpoints do not increase an identity's sampling weight; hosts remain unique. This addresses the outstanding peer-selection review finding.
  • Keep bounded HTTP requests, registry freshness checks, atomic two-network generation, and offline NPM release validation.
  • Refresh complete historical stock seed sets through one repository path while preserving custom lists and render-failure retries.
  • Complete missing fullnode identities with one direct helper before saving/rendering; preserve existing keys and require operators to supply registered masternode identities.

How Has This Been Tested?

Validation under Node 20.20.2:

  • Full Dashmate unit suite: 845 passing. Coverage includes QLS metadata/filtering/sampling, alternate endpoints, atomic generation, offline release checks, stock-list matching, identity persistence, and migration retry.
  • Full Dashmate ESLint passes; package pack/build passes and contains the identity helper, loader, and snapshot.
  • All eight configurations pass the real Envoy validator. Release shell syntax passes; ShellCheck has no new diagnostics.
  • Live generation fails clearly on missing QLS metadata without changing either snapshot. Offline --check rejects the existing Core-derived snapshots, as intended until regeneration.
  • Independent code review completed; forced-reset validation bypass remains supported.

Breaking Changes

No operator-facing configuration changes. Release preparation requires the public QLS bootstrap metadata API; it cannot use a local Core RPC override.

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/e2e tests
  • I have added "!" to the title and described breaking changes in the corresponding section if my code contains any
  • I have made corresponding changes to the documentation if needed

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

Summary by CodeRabbit

  • New Features
    • Added automatically maintained Tenderdash bootstrap seed lists for mainnet and testnet.
    • Existing configurations can refresh outdated default seed sets during migration or save.
    • Missing Tenderdash node identities are completed automatically when applicable.
  • Bug Fixes
    • Prevented generated node-key files from containing the literal value "null".
  • Documentation
    • Added guidance on seed snapshot generation, validation, freshness, and upgrade behavior.
  • Chores
    • Release preparation now validates and refreshes Tenderdash seed data.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-bots Waiting for the review bots to report on this head

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants