# Hard Reset Guide

A **hard reset** wipes all local node data and restores the most recent network snapshot.\
This is the fastest and most reliable way to recover a degraded, stuck, or outdated node.

After a hard reset:

1. A fresh snapshot is downloaded.
2. The TrieDB database is rebuilt (1–5 minutes on mainnet).
3. The node catches up using statesync and blocksync (2–5 minutes for a recent snapshot).

### 1. Prerequisites

Ensure `aria2` is installed:

```bash
apt install -y aria2
```

***

### 2. Stop Services & Reset Workspace

SSH into the server as **root** and run:

```bash
bash /opt/monad/scripts/reset-workspace.sh
```

This clears:

* Ledger data
* Forkpoint history
* Validator sets
* TrieDB state
* Runtime artifacts

***

### 3. Download & Import the Latest TrieDB Snapshot

Choose **one provider** (Monad Foundation or Category Labs).

#### **Monad Foundation snapshot:**

```bash
MF_BUCKET=https://bucket.monadinfra.com
curl -sSL $MF_BUCKET/scripts/mainnet/restore-from-snapshot.sh | bash
```

#### **Category Labs snapshot:**

```bash
CL_BUCKET=https://pub-b0d0d7272c994851b4c8af22a766f571.r2.dev
curl -sSL $CL_BUCKET/scripts/mainnet/restore_from_snapshot.sh | bash
```

***

### 4. Fetch Latest Forkpoint & Validators Files

*(Skip if your node already uses automatic remote config fetching via REMOTE\_VALIDATORS\_URL and REMOTE\_FORKPOINT\_URL.)*

#### Manual fetch:

```bash
MF_BUCKET=https://bucket.monadinfra.com
VALIDATORS_FILE=/home/monad/monad-bft/config/validators/validators.toml

curl -sSL $MF_BUCKET/scripts/mainnet/download-forkpoint.sh | bash
curl $MF_BUCKET/validators/mainnet/validators.toml -o $VALIDATORS_FILE
chown monad:monad $VALIDATORS_FILE
```

***

### 5. Start All Monad Services

```bash
systemctl start monad-bft monad-execution monad-rpc
```

Check logs to confirm syncing:

```bash
journalctl -u monad-bft -f
journalctl -u monad-execution -f
```

When statesync completes, the node will automatically switch to blocksync and reach chain tip.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://services.stakeangle.com/mainnets/monad/hard-reset-guide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
