Crescent Node State-Sync

Chain ID: crescent-1 | Current Node Version: 2.1.0

Our State-Sync Server Setup

Our app.toml settings related to state-sync is as follows. This is for you information only. You do not need to follow the same setup on your node.

# Prune Type
pruning = "custom"

# Prune Strategy
pruning-keep-every = 2000

# State-Sync Snapshot Strategy
snapshot-interval = 2000
snapshot-keep-recent = 5

Our state-sync RPC server for Crescent is:

https://crescent-rpc.polkachu.com:443

Instruction

We assume that you use Cosmovisor to manage your node. If you do not use Cosmovisor, you will need to customize the following instruction slightly.

Create a reusable shell script such as state_sync.sh with the following code. The code will fetch important state-sync information (such as block height and trust hash) from our server and update your config.toml file accordingly.

#!/bin/bash

SNAP_RPC="https://crescent-rpc.polkachu.com:443"

LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.crescent/config/config.toml

Grant user the privilege to execute script and then run the script:

chmod 700 state_sync.sh
./state_sync.sh

Stop the node:

sudo service cosmovisor stop

Reset the node:

# On some tendermint chains
crescentd unsafe-reset-all

# On other tendermint chains
crescentd tendermint unsafe-reset-all --home $HOME/.crescent

Restart the node:

sudo service cosmovisor start

If everything goes well, your node should start syncing within 10 minutes.

ALTERNATIVE ROUTE: We also have Crescent Snapshot Service to help you bootstrap a node.

Trouble-Shooting

I am not able to connect with the state-sync server

First, visit our state-sync server landing page to ensure it is not down.

Second, add Polkachu's state-sync server as your peer. You can find Polkachu's peer info here.

It is also possible that our state-sync server has maxed our peer connections so it refuses to connect with your node. If you suspect this is the case, you can join our Discord Server and ask us on the #state_sync channel to add your node id to our unconditional_peer_ids. This way, your node is guaranteed to connect with our server. You can get you node id with the following command:

crescentd tendermint show-node-id

I am able to connect, but immediately get AppHash errors

Make sure that you use the latest version of the chain node when you state-sync.

Other questions?

State-sync can be flaky at times. Join our Discord Server if you have any issues. Happy Syncing!