You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
D2 — snapshot fast-sync (Pattern C) now actually binds (was never wired):
- boundary snapshot is the canonical full_snap_ accounts-CF dump on every
node's apply path (was a broken in-memory bincode state_snap_ that restored
to garbage, so binding always failed and joiners fell to O(N) block replay)
- verifier binds restored state to the QC-certified macroblock state_root:
rebuild finalize_merkle from the restored accounts and compare to
mb.state_root, instead of the never-assigned consensus_data.snapshot_root
- fetch the macroblock prefix [latest+1..=mb_idx] so the binding macroblock
persists (N-2 anchor) and is QC-validated by the normal store path
D3 — NodeRegistration lands like NodeActivation:
- boot send + periodic rebroadcast fan out the binding TX to all genesis nodes
(was a single best-effort gossip with no fan-out)
- rebroadcast runs sync-independently; producer eligibility stays gated at
selection, not at TX broadcast
- on boot, re-send unless the registration is already on-chain (chain is the
source of truth, not the local activation code)
- mobile/server-side registration path gets the same genesis fan-out
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments