Files
consensus/engine
zeekayandHanzo Dev 134d1b3b46 chain: Nova ignites on a majority of stake, not a majority of heads
Nova is the local-execution gate and stays a bare majority, deliberately below
the Quasar two-thirds export floor. It is now read in stake — the unit the chain
already weighs votes in — with config.HalfStakeFloor as the one definition, the
same shape TwoThirdsStakeFloor gives Quasar one rung up.

For a set of equal weights the two readings pick the identical quorum at every
size, so a uniform fleet is unchanged. They differ when weights do, and a
head-count is wrong in both directions there: registration is open at
minValidatorStake, so an entry that never votes still raises floor(n/2)+1 — a
five-validator fleet plus a minimum-stake sixth needs four of the five and
tolerates one loss where five alone tolerate two — and that same minimum stake
can cast one of the four. A majority of stake is neither purchasable nor
inflatable.

NovaSignerFloor keeps the guard the stake predicate cannot give: a validator
holding a stake majority alone must never self-ignite, so a cert also needs
NovaQuorum(minBFTCommittee) distinct signers, capped by the majority of the live
set so a small chain stays satisfiable. Assembly asks only for that floor and
VerifyWeighted is the authority; the gossip pre-filter reads the same floor so a
legitimate cert is not dropped before the stake check runs.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-13 22:29:04 -07:00
..
2025-12-19 08:49:11 -08:00