XRPL EVM Testnet — State Sync
Sync your XRPL EVM node instantly from Cumulo’s public state-sync providers
RPC Servers
Primary RPC (HTTPS)
https://rpc.testnet.xrpl.cumulo.me:443
Secondary RPC
http://148.72.141.64:26617
Quick Setup
# Reset (keeps addrbook)
exrpd comet unsafe-reset-all --home ~/.exrpd --keep-addr-book
rm -rf ~/.exrpd/data/light 2>/dev/null || true
# Pick two RPCs (comma-separated, no spaces)
SNAP_RPC_1="https://rpc.testnet.xrpl.cumulo.me:443"
SNAP_RPC_2="http://148.72.132.8:26657"
SNAP_RPC="$SNAP_RPC_1,$SNAP_RPC_2"
# Work out trust height/hash (fallback to RPC_2 if RPC_1 fails)
LATEST_HEIGHT=$(curl -s $SNAP_RPC_1/block | jq -r .result.block.header.height)
[ -z "$LATEST_HEIGHT" -o "$LATEST_HEIGHT" = "null" ] && LATEST_HEIGHT=$(curl -s $SNAP_RPC_2/block | jq -r .result.block.header.height)
TRUST_HEIGHT=$((LATEST_HEIGHT - 2000))
TRUST_HASH=$(curl -s "$SNAP_RPC_1/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)
[ -z "$TRUST_HASH" -o "$TRUST_HASH" = "null" ] && TRUST_HASH=$(curl -s "$SNAP_RPC_2/block?height=$TRUST_HEIGHT" | jq -r .result.block_id.hash)
echo "TrustHeight=$TRUST_HEIGHT Hash=$TRUST_HASH"
CFG="$HOME/.exrpd/config/config.toml"
# Enable State Sync (keys live under the [statesync] section)
sed -i.bak -E \
-e 's|^(enable[[:space:]]*=).*|\1 true|' \
-e "s|^(rpc_servers[[:space:]]*=).*|\1 \"$SNAP_RPC\"|" \
-e "s|^(trust_height[[:space:]]*=).*|\1 $TRUST_HEIGHT|" \
-e "s|^(trust_hash[[:space:]]*=).*|\1 \"$TRUST_HASH\"|" \
-e 's|^(trust_period[[:space:]]*=).*|\1 "168h0m0s"|' \
"$CFG"
# P2P: clear seeds and set your persistent peer
sed -i -E \
-e 's|^seeds *=.*|seeds = ""|' \
-e 's|^persistent_peers *=.*|persistent_peers = "cfda29999670da51663449d0ba39247dd1e03efe@148.72.132.8:26656"|' \
"$CFG"
sudo systemctl restart exrpd
sudo journalctl -fu exrpd -o cat | grep -E "Discovered new snapshot|Fetching snapshot|Applied snapshot|finalized block"