Skip to main content

Hard Reset Instructions

This is the most invasive flavor of reset / restart and typically reserved for when the node tip is sufficiently far from the network tip that it won't be able to recover via statesync or blocksync. If there is an error in the triedb or if node data needs to be reset (wipe state), the basic workflow is to:

  1. Download a recent snapshot of the network state (dependent on bandwidth and snapshot size)
  2. Initialize the DB from the snapshot (this can 20 minutes on testnet)
  3. Catch up to the tip of the chain via statesync / blocksync (typically 2-5 minutes assuming snapshot is a few hours old)
Snapshot Restore

Category Labs is one snapshot provider. If there is an issue, please refer to Discord validator channels for other snapshot providers.

Prerequisite

  • aria2 must be installed on your node

Instructions

  1. SSH into the node as monad user.
  2. Run reset-workspace.sh to ensure data is deleted.
    bash /opt/monad/scripts/reset-workspace.sh
  3. Download restore_from_snapshot.sh from the CL_BUCKET and execute it.
    CL_BUCKET=https://pub-b0d0d7272c994851b4c8af22a766f571.r2.dev
    curl -sSL $CL_BUCKET/scripts/testnet/restore_from_snapshot_systemd.sh | bash
    info

    Alternatively, you can use the MF snapshot if you are facing issues with the CL snapshot:

    MF_BUCKET=https://bucket.monadinfra.com
    curl -sSL $MF_BUCKET/scripts/testnet/restore-from-snapshot.sh | bash
  4. Fetch new forkpoint.toml and validators.toml.
    MF_BUCKET=https://bucket.monadinfra.com
    curl -sSL $MF_BUCKET/scripts/testnet/download-forkpoint.sh | bash
    curl -o ~/monad-bft/config/validators/validators.toml $MF_BUCKET/validators/testnet/validators.toml
  5. Start all services
    systemctl start monad-bft monad-execution monad-rpc
  6. Verify the systemd services are running:
    systemctl list-units --type=service monad-bft.service monad-execution.service monad-rpc.service
    UNIT LOAD ACTIVE SUB DESCRIPTION
    monad-bft.service loaded active running "Service file for Monad BFT"
    monad-execution.service loaded active running "Service file for Monad Execution"
    monad-rpc.service loaded active running "Service file for Monad RPC"
    # Check logs for a specific process, e.g. bft
    journalctl -u monad-bft