eth_call, eth_getBalance, or eth_estimateGas for blocks
that were skipped.
Context
A node that has not locally executed blockforkpoint.root - delay will statesync on startup (see forkpoint startup sync). Also, nodes don’t serve blocksync requests more than statesync_threshold (600) blocks ago. Statesync is the only in-protocol way for that node to recover.
This document describes an alternate way to recover a node while backfilling historical state in the event that a node has been down for longer than the blocksync provision window (600 blocks).
Note that if statesync_threshold in node.toml is set to a value larger than that, blocksync will fail.
Procedure
- SSH into the faulty node as
monaduser. - Ensure
statesync_threshold = 600innode.toml
- Stop the monad services
-
Run this script to copy missing blocks, then run execution up to that point. You will need to run it several times since the tip of the chain will continue advancing while this script is executing.
- NOTE: You will need to manually interrupt the process (Ctrl - C) once output stops.
-
Copy this script and name it
manual-sync.sh -
Run the script
-
Once the first script completes in under 1 min, run this script:
- Copy this and name it
manual-sync-step-2.sh - Run the script
- Copy this and name it
Check
To check that statesync has been avoided, send aneth_getBlockByNumber RPC request
for blocks finalized while the node was down.

