Mars Protocol Node State-Sync

Chain ID: mars-1 | Current Node Version: v1.0.1

State-sync does not take care of the wasm folder on Mars Protocol, so you need to preserve your own current wasm folder, or follow the instruction to download our wasm folder. It is best to just use our Mars Protocol snapshot service since it is more reliable. However, read on if you insist on using state-sync.

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 Mars Protocol is:


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 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.



LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
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/.mars/config/config.toml

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

chmod 700

Stop the node:

sudo service mars stop

Reset the node:

# On some tendermint chains
marsd unsafe-reset-all

# On other tendermint chains
marsd tendermint unsafe-reset-all --home $HOME/.mars --keep-addr-book
The above unsafe-reset-all command reset your wasm folder inside the data folder. You can download our wasm folder to fix it. Notice that we have taken out the cache sub-folder to ensure the wasm folder is compatible for all CPUs.
# Remove the empty wasm folder if you have an empty one, just in case
rm -r ~/.mars/data/wasm

# Get our wasm folder
wget -O wasmonly.tar.lz4 --inet4-only

# Extract the wasm folder into the right place
lz4 -c -d wasmonly.tar.lz4  | tar -x -C $HOME/.mars/data

# Clean up
rm wasmonly.tar.lz4

Restart the node:

sudo service mars start

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

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


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.

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 State-Syncing!