> For the complete documentation index, see [llms.txt](https://service.block-pro.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://service.block-pro.net/testnet/dora/snapshots.md).

# Snapshots

Restore Dora Testnet data while preserving your validator identity.

**Testnet · `vota-testnet` · v1.0.0**

Restore recent chain data while keeping your own node configuration and validator identity. First install the binary and create the service using [Installation](/testnet/dora/installation.md).

## Availability

[ITRocket Testnet snapshots](https://itrocket.space/services/testnet/dora/#snapshots) publishes a pruned snapshot. Its published interval is four hours. Read the current metadata for the archive height, size and block time before downloading.

BlockPro Testnet snapshots have not been listed.

Choose a snapshot for **vota-testnet**, taken after this network's **v1.0.0 migration**, with a database backend compatible with your node. Do not use the old 0.4.x examples in historical tutorials.

The metadata below identifies ITRocket's current archive; use the matching filename on its service page.

```bash
curl -fsS https://server-2.itrocket.net/testnet/dora/.current_state.json | jq '{file: .snapshot_name, height: .snapshot_height, size: .snapshot_size, block_time: .snapshot_block_time, database: .db_backend}'
```

## Download and inspect

Use the same account and home directory as the node service. Ensure you have room for the compressed archive, extracted data and a copy of your current database. These steps expect a **tar.lz4 archive containing a top-level data directory**. If the provider uses another layout or compression format, adapt to its documented layout before continuing.

Do not restore a snapshot while another node is signing with the same validator key. Keep your latest local signing state; never use a provider's signing state in its place.

### Set the archive URL

Copy the actual current download URL from the selected provider.

```bash
read -rp "Current Dora Testnet .tar.lz4 URL: " SNAPSHOT_URL
```

### Download the archive

Stop on download errors and do not continue with a partial file.

```bash
curl -fL --retry 3 "$SNAPSHOT_URL" -o "$HOME/dora-snapshot.tar.lz4"
```

### Test compression

Check the LZ4 stream before extraction. If the provider publishes a checksum, compare that too; this test alone does not authenticate a provider.

```bash
lz4 -t "$HOME/dora-snapshot.tar.lz4"
```

### Inspect archive paths

Confirm relative paths under data/. Reject absolute paths, parent-directory traversal and unexpected links. The procedure imports only data, not another operator's config or keys.

```bash
tar -I lz4 -tf "$HOME/dora-snapshot.tar.lz4" | less
```

### Create a staging directory

Extract outside the active node home.

```bash
DORA_RESTORE=$(mktemp -d "$HOME/dora-restore.XXXXXX")
```

### Extract the archive

Run as the node user, without sudo. Do not extract directly over the live home.

```bash
tar -I lz4 -xf "$HOME/dora-snapshot.tar.lz4" -C "$DORA_RESTORE" --no-same-owner --no-same-permissions
```

### Confirm the expected layout

Continue only if data/ exists at the staging root. If it does not, stop and follow the provider's documented archive layout.

```bash
test -d "$DORA_RESTORE/data"
```

## Preserve local identity and state

### Stop the service

Wait until the node has stopped before taking the final signing-state backup.

```bash
sudo systemctl stop dorad
```

### Check that the service is stopped

Expect inactive. Also stop any separate supervisor or manual process using this home.

```bash
sudo systemctl is-active dorad
```

### Create a private backup directory

Keep this shell open so the backup variable remains available.

```bash
DORA_BACKUP="$HOME/dora-backup-$(date +%Y%m%d-%H%M%S)"
```

### Restrict backup access

Create the directory with permissions limited to your user.

```bash
install -d -m 0700 "$DORA_BACKUP"
```

### Back up configuration

Preserve your own genesis, node key and validator key.

```bash
cp -a "$HOME/.dora/config" "$DORA_BACKUP/config"
```

### Back up the latest signing state

This must succeed. If the file is missing on a previously active validator, stop and recover its latest state before proceeding.

```bash
cp -a "$HOME/.dora/data/priv_validator_state.json" "$DORA_BACKUP/priv_validator_state.json"
```

### Preserve the current database

Move rather than delete the old data directory. The service must stay stopped.

```bash
mv "$HOME/.dora/data" "$DORA_BACKUP/data"
```

## Restore and verify

### Install the restored data

Move only the inspected data directory into the node home.

```bash
mv "$DORA_RESTORE/data" "$HOME/.dora/data"
```

### Restore your signing state

Overwrite the snapshot's signing state with your own latest local state before starting.

```bash
cp -a "$DORA_BACKUP/priv_validator_state.json" "$HOME/.dora/data/priv_validator_state.json"
```

Your config directory stays in place. Preserve any existing external `wasm/` bytecode for historical research; v1.0.0 no longer runs the Wasm runtime, so this guide does not replace that directory from a provider archive.

### Check snapshot settings

Keep statesync enable=false in config.toml when restoring an archive, and confirm the database backend matches the provider metadata. Do not change unrelated enable fields.

```bash
nano "$HOME/.dora/config/config.toml" "$HOME/.dora/config/app.toml"
```

### Start the service

Start only after successful restoration and ownership checks. The files should belong to the service account.

```bash
sudo systemctl start dorad
```

### Read startup logs

Check for database, version or network errors.

```bash
sudo journalctl -u dorad -n 100 --no-pager -o cat
```

### Check synchronization

Confirm chain vota-testnet, a current block time and catching\_up=false after catch-up.

```bash
curl -fsS http://127.0.0.1:26657/status | jq '.result | {chain: .node_info.network, height: .sync_info.latest_block_height, time: .sync_info.latest_block_time, catching_up: .sync_info.catching_up}'
```

Compare the height and block hash at the same height with an independent [public RPC](/testnet/dora/services.md). Keep backups until recovery is verified. Do not restore an older signing-state file after this node has signed new blocks.

[Official v1.0.0 state-preservation notes](https://github.com/DoraFactory/doravota/blob/v1.0.0/docs/VALIDATOR-1.0.0.md)
