💡State Sync

State Sync allows to sync a new node by fetching a snapshot of the network state at a recent height, instead of fetching and replaying all historical blocks.

Some networks which use wasm may not yet support wasm folder transfers with State Sync. In this case you may need to download wasm folder separately.

Depending on network, State Sync may need different amount of RAM to successfully fish sync process. It is recommended to have at least 8GB RAM.

  1. Stop existing service and reset database.

sudo systemctl stop firmachaind
firmachaind tendermint unsafe-reset-all --home $HOME/.firmachin --keep-addr-book
  1. Add peers.

PEER="58b61cf27dfdeaa7f1abf6e4df5746323e9dd8b1@213.133.111.125:26656"
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEER\"/" $HOME/.firmachain/config/config.toml
  1. Fill variables with data for State Sync.

RPC="https://firmachain-rpc.stakeangle.com:443"
RECENT_HEIGHT=$(curl -s $RPC/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((RECENT_HEIGHT - 500))
TRUST_HASH=$(curl -s "$RPC/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)

echo $RECENT_HEIGHT $TRUST_HEIGHT $TRUST_HASH
  1. Add variable values to config.toml.

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$RPC,$RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$TRUST_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.firmachain/config/config.toml
  1. Start service and check journal.

sudo systemctl restart firmachaind
sudo journalctl -u firmachaind -f -o cat

State Sync typically takes up to 10 minutes.

Last updated