Lumen
lumen
Endpoints & Sync
Lumen endpoints and rollback-safe synchronization procedures.
Configured RPC, API, gRPC
A catalogue entry does not prove current uptime. Open RPC / API Monitoring for a fresh chain-ID-verified check and scanner timestamp before production use.
A catalogue entry does not prove current uptime. Open RPC / API Monitoring for a fresh chain-ID-verified check and scanner timestamp before production use.
gRPC
lumen-mainnet-grpc.bonynode.online:443
State Sync
State Sync joins the network from a trusted recent block through the network-specific BonyNode RPC.
1
1. Stop the service and reset node data
(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"
set -euo pipefail
NODE_HOME="$HOME/.lumen"
SERVICE="lumend"
CHAIN_ID="lumen"
STATE_SYNC_RPC="https://lumen-mainnet-rpc.bonynode.online"
TRUST_OFFSET=1000
# Verify the BonyNode RPC before changing local data.
STATUS=$(curl -fsS --max-time 15 "$STATE_SYNC_RPC/status")
[ "$(jq -r '.result.node_info.network' <<<"$STATUS")" = "$CHAIN_ID" ]
LATEST_HEIGHT=$(jq -r '.result.sync_info.latest_block_height' <<<"$STATUS")
[[ "$LATEST_HEIGHT" =~ ^[0-9]+$ ]] && (( LATEST_HEIGHT > TRUST_OFFSET ))
TRUST_HEIGHT=$((LATEST_HEIGHT - TRUST_OFFSET))
TRUST_HASH=$(curl -fsS --max-time 15 "$STATE_SYNC_RPC/block?height=$TRUST_HEIGHT" | jq -r '.result.block_id.hash')
[[ "$TRUST_HASH" =~ ^[A-Fa-f0-9]{64}$ ]]
STAMP=$(date -u +%Y%m%dT%H%M%SZ)
DATA_BACKUP="$NODE_HOME/data.backup.$STAMP"
test -s "$NODE_HOME/data/priv_validator_state.json"
test ! -e "$DATA_BACKUP"
sudo systemctl stop "$SERVICE"
mv "$NODE_HOME/data" "$DATA_BACKUP"
mkdir -p "$NODE_HOME/data"
install -m 0600 "$DATA_BACKUP/priv_validator_state.json" "$NODE_HOME/data/priv_validator_state.json"
echo "Previous node data retained at: $DATA_BACKUP"
)2
2. Configure State Sync
(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"
set -euo pipefail
NODE_HOME="$HOME/.lumen"
CHAIN_ID="lumen"
STATE_SYNC_RPC="https://lumen-mainnet-rpc.bonynode.online"
TRUST_OFFSET=1000
CONFIG="$NODE_HOME/config/config.toml"
STATUS=$(curl -fsS --max-time 15 "$STATE_SYNC_RPC/status")
[ "$(jq -r '.result.node_info.network' <<<"$STATUS")" = "$CHAIN_ID" ]
LATEST_HEIGHT=$(jq -r '.result.sync_info.latest_block_height' <<<"$STATUS")
[[ "$LATEST_HEIGHT" =~ ^[0-9]+$ ]] && (( LATEST_HEIGHT > TRUST_OFFSET ))
SYNC_BLOCK_HEIGHT=$((LATEST_HEIGHT - TRUST_OFFSET))
SYNC_BLOCK_HASH=$(curl -fsS --max-time 15 \
"$STATE_SYNC_RPC/block?height=$SYNC_BLOCK_HEIGHT" | jq -r '.result.block_id.hash')
[[ "$SYNC_BLOCK_HASH" =~ ^[A-Fa-f0-9]{64}$ ]]
test -f "$CONFIG"
cp -p "$CONFIG" "$CONFIG.bonynode-backup"
sed -i -E \
-e '/^\[statesync\]/,/^\[/{s|^enable *=.*|enable = true|;}' \
-e "/^\[statesync\]/,/^\[/{s|^rpc_servers *=.*|rpc_servers = \"$STATE_SYNC_RPC,$STATE_SYNC_RPC\"|;}" \
-e "/^\[statesync\]/,/^\[/{s|^trust_height *=.*|trust_height = $SYNC_BLOCK_HEIGHT|;}" \
-e "/^\[statesync\]/,/^\[/{s|^trust_hash *=.*|trust_hash = \"$SYNC_BLOCK_HASH\"|;}" \
"$CONFIG"
sed -n '/^\[statesync\]/,/^\[/p' "$CONFIG" | \
grep -E '^(enable|rpc_servers|trust_height|trust_hash) *='
)3
3. Restart the service and check logs
(
export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin"
set -euo pipefail
SERVICE="lumend"
sudo systemctl restart "$SERVICE"
sudo journalctl -u "$SERVICE" -n 100 -f
)