This guide assumes you've completed the Setting Up Your Node step.
Option 1: Snapshot method
Downloads the data directory backed up from an existing node.
Choose the network and snapshot type, download the snapshot and extract the snapshot
inside ~/.zetacored
directory.
Note: Our nodes database backend is pebbledb
. Ensure that your node is configured to
use the same backend to utilize our snapshots.
Alternative snapshots
Mainnet:
- https://polkachu.com/tendermint_snapshots/zetachain (opens in a new tab)
- https://app.nodejumper.io/zetachain/sync (opens in a new tab)
- https://itrocket.net/services/mainnet/zetachain/#snap (opens in a new tab) Testnet:
- https://app.nodejumper.io/zetachain-testnet/sync (opens in a new tab)
- https://itrocket.net/services/testnet/zetachain/#snap (opens in a new tab)
Option 2: KYVE's KSYNC method
The following doc covers a step by step guide on how to sync a ZetaChain Mainnet node with KSYNC.
KSYNC is a tool capable of syncing blocks and state-sync snapshots from the decentralized KYVE data lake directly into Cosmos blockchain nodes. With KSYNC Cosmos validators don't need to wait for peers in order to block-sync and they don't need to search for trusted app hashes if they want to state-sync. Furthermore, state-syncing to historical heights up to genesis are possible.
More information about KSYNC can be found here: https://docs.kyve.network/ksync (opens in a new tab)
Install KSYNC
Install the latest KSYNC:
go install github.com/KYVENetwork/ksync/cmd/ksync@latest
Verify the installation:
ksync version
Configure the Node
And change the following config in the config.toml
file:
db_backend = "goleveldb"
Changing the db_backend to the default goleveldb is required for now, since KSYNC does not yet support the pebbledb from ZetaChain’s dependency https://github.com/BlockPILabs/cosmos-db (opens in a new tab).
Sync the Node
ksync state-sync --binary="/path/to/zetacored" --chain-id=zetachain_7000-1 --snapshot-pool-id=11
Checking Node Health
Check Logs
To confirm that the node is working, you can watch the logs. The node should be
printing INF
logs like these:
4:10AM INF executed block height=3468229 module=state num_invalid_txs=1 num_valid_txs=24 server=node
4:10AM INF commit synced commit=436F6D6D697449447B5B3139332032323120323438203430203230
4:10AM INF committed state app_hash=C1DDF828CB4126E8239D92FB57006D978664911BF75FDB2606804083C4F65354 height=3468229
4:10AM INF indexed block exents height=3468229 module=txindex server=node
4:11AM INF Timed out dur=4468.382473 height=3468230 module=consensus round=0 server=node step=1
Query Node Status
You can confirm that the node is synced by querying the node status endpoint:
curl localhost:26657/status
Make sure that catching_up
is false. Also, check latest_block_height
and
latest_block_time
.