Periodic Chain Verification
NOOSChain nodes verify their own local chain state. A remote peer may expose blocks and heads, but it is never trusted to verify data on behalf of this node.
Modes
incremental verification resumes from the last stored checkpoint and verifies the next chunk of block heights. The checkpoint advances only when the verified range has no errors.
full verification checks from genesis to the current local head. If successful, it refreshes the checkpoint to the current head.
Both modes use the existing read-only verifyChainRange() verifier. They do not execute blocks, mutate domain state, update SMT state, or repair data.
Configuration
CHAIN_VERIFICATION_ENABLED=true
CHAIN_VERIFICATION_AUTO_START=true
CHAIN_VERIFICATION_MODE=incremental
CHAIN_VERIFICATION_INTERVAL_MS=60000
CHAIN_VERIFICATION_CHUNK_SIZE=100
CHAIN_VERIFICATION_FULL_INTERVAL_MS=3600000CHAIN_VERIFICATION_FULL_INTERVAL_MS=0 disables scheduled full sweeps.
Persistence
Verification progress is stored in:
chain_verification_state: the latest verified checkpoint and last status.chain_verification_runs: run history, checked range, result, and errors.
This is local node metadata. It is not consensus state and is not synchronized from peers.
APIs
Protected operator endpoints:
GET /chain/verification/statusPOST /chain/verification/runwith{ "mode": "incremental" }or{ "mode": "full" }
Failure Behavior
A failed verification run records the failure and does not advance the verified checkpoint. Operators should inspect the reported issues, run replay verification when needed, and treat unexpected mismatches as potential local corruption or a sync-boundary incident.