Story labs

Snapshot

powered by

STAKEME

Height:

EVM size

Cosmos size

Prunning

7602374

16.52GB

36.05GB

default

Indexer

db:

Date:

Update:

Estimated Time

null

goleveldb

Aug 09, 08:00:01

7 602 374

Aug 09, 11:00:01

# System Dependencies & Configuration
#-----------------------------------------
sudo apt update > /dev/null 2>&1
sudo apt install curl tmux jq lz4 unzip aria2 wget htop net-tools -y > /dev/null 2>&1
# Download Node Snapshots
#-----------------------------------------
cd $HOME
sudo systemctl stop story story-geth
aria2c -x 16 -s 16 -o story-pruned-snap.tar.lz4 https://st-snap-1.stakeme.pro/story/pruned/cosmos_data_story_20250809_080001.tar.lz4
aria2c -x 16 -s 16 -o geth-pruned-snap.tar.lz4 https://st-snap-1.stakeme.pro/story/pruned/evm_chaindata_story_20250809_080001.tar.lz4
# Restore Story Chain Data
#-----------------------------------------
cp $HOME/.story/story/data/priv_validator_state.json $HOME/.story/story/priv_validator_state.json.backup
rm -r $HOME/.story/story/data
tar -I lz4 -xvf ~/story-pruned-snap.tar.lz4 -C $HOME/.story/story
mv $HOME/.story/story/priv_validator_state.json.backup $HOME/.story/story/data/priv_validator_state.json
# Restore Geth Chain Data
#-----------------------------------------
rm -r $HOME/.story/geth/odyssey/geth/chaindata
tar -I lz4 -xvf ~/geth-pruned-snap.tar.lz4 -C $HOME/.story/geth/odyssey/geth
# Monitor, cleanup and restart services
#-----------------------------------------
sudo systemctl restart story story-geth
rm $HOME/story-pruned-snap.tar.lz4
rm $HOME/geth-pruned-snap.tar.lz4
sudo journalctl -u story-geth -u story -f

powered by

Mictonode

Indexer

Updated

null

every 12 hours

sudo systemctl stop story story-geth
mv $HOME/.story/story/data/priv_validator_state.json $HOME/.story/priv_validator_state.json.backup
rm -rf $HOME/.story/story/data
rm -rf $HOME/.story/geth/aeneid/geth/chaindata
mkdir -p $HOME/.story/geth/aeneid/geth
SNAPSHOT_URL="https://files.mictonode.com/story/snapshot/"
LATEST_COSMOS=$(curl -s $SNAPSHOT_URL | grep -oP 'story_d{8}-d{4}_d+_cosmos.tar.lz4' | sort | tail -n 1)
LATEST_GETH=$(curl -s $SNAPSHOT_URL | grep -oP 'story_d{8}-d{4}_d+_geth.tar.lz4' | sort | tail -n 1)
if [ -n "$LATEST_COSMOS" ] && [ -n "$LATEST_GETH" ]; then
COSMOS_URL="${SNAPSHOT_URL}${LATEST_COSMOS}"
GETH_URL="${SNAPSHOT_URL}${LATEST_GETH}"
if curl -s --head "$COSMOS_URL" | head -n 1 | grep "200" > /dev/null && curl -s --head "$GETH_URL" | head -n 1 | grep "200" > /dev/null; then
curl "$COSMOS_URL" | lz4 -dc - | tar -xf - -C $HOME/.story/story
curl "$GETH_URL" | lz4 -dc - | tar -xf - -C $HOME/.story/geth/aeneid/geth
mv $HOME/.story/priv_validator_state.json.backup $HOME/.story/story/data/priv_validator_state.json
sudo systemctl restart story-geth
sleep 5
sudo systemctl restart story
sudo journalctl -u story -u story-geth -f -o cat
else
echo "Snapshot URL is not accessible"
fi
else
echo "No snapshot found"
fi

powered by

icon

Coinspor

sudo apt update
sudo apt install -y aria2 zstd jq curl
echo "Coinsspor Snapshot Height: $(curl -s https://snaps.coinsspor.com/story/aeneid/coinsspor-height.txt)"
# Get detailed snapshot information
curl -s https://snaps.coinsspor.com/story/aeneid/coinsspor-info.json | jq '.'
#!/bin/bash
# Coinsspor Advanced Snapshot Download - Server Optimized
# Using aria2c + ZSTD for maximum performance
set -e
echo "🌟 Coinsspor Advanced Snapshot Download (Server Optimized)"
echo "========================================================="
# Configuration
COINSSPOR_BASE="https://snaps.coinsspor.com/story/aeneid"
STORY_DATA="$HOME/.story"
TEMP_DIR="/tmp/coinsspor_sync"
# Enhanced Story RPC port detection with connectivity test
detect_story_port() {
local config_file="$STORY_DATA/story/config/config.toml"
# Primary method: Test common Story ports with connectivity (fast & reliable)
for test_port in 16657 26657 27657; do
if timeout 2 curl -s "localhost:$test_port/status" >/dev/null 2>&1; then
echo "$test_port"
return
fi
done
# Backup method: Extract from config if available
if [[ -f "$config_file" ]]; then
local extracted_port=$(grep "laddr.*tcp" "$config_file" | grep -oE ":[0-9]+" | tr -d ':' | head -1)
if [[ -n "$extracted_port" ]] && [[ "$extracted_port" =~ ^[0-9]+$ ]]; then
if timeout 2 curl -s "localhost:$extracted_port/status" >/dev/null 2>&1; then
echo "$extracted_port"
return
fi
fi
fi
# Final fallback
echo "26657"
}
STORY_PORT=$(detect_story_port)
LOCAL_RPC="localhost:$STORY_PORT"
# Check dependencies
echo "📦 Checking dependencies..."
for cmd in aria2c zstd jq; do
if ! command -v $cmd &> /dev/null; then
echo "❌ Missing dependency: $cmd"
echo "💡 Install with: sudo apt install aria2 zstd jq"
exit 1
fi
done
echo "✅ All dependencies ready"
# Discover snapshots via JSON API
echo "🔍 Discovering latest snapshots..."
METADATA=$(curl -s "$COINSSPOR_BASE/coinsspor-info.json")
CONSENSUS_FILE=$(echo "$METADATA" | jq -r '.snapshots.consensus')
EXECUTION_FILE=$(echo "$METADATA" | jq -r '.snapshots.execution')
BLOCK_HEIGHT=$(echo "$METADATA" | jq -r '.block_height')
if [ "$CONSENSUS_FILE" = "null" ] || [ "$EXECUTION_FILE" = "null" ]; then
echo "❌ Could not discover snapshot files"
exit 1
fi
echo "📊 Snapshot Information:"
echo " Block Height: $BLOCK_HEIGHT"
echo " Consensus: $CONSENSUS_FILE"
echo " Execution: $EXECUTION_FILE"
echo " Detected RPC Port: $STORY_PORT"
# Confirmation
read -p "🚀 Continue with download? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Download cancelled"
exit 0
fi
# Prepare environment
mkdir -p "$TEMP_DIR"
echo "🛑 Stopping services..."
sudo systemctl stop story story-geth
echo "💾 Backing up validator state..."
if [[ -f "$STORY_DATA/story/data/priv_validator_state.json" ]]; then
cp "$STORY_DATA/story/data/priv_validator_state.json" "$TEMP_DIR/validator_backup.json"
echo "✅ Validator state backed up"
fi
echo "🧹 Cleaning target directories..."
rm -rf "$STORY_DATA/story/data"
rm -rf "$STORY_DATA/geth/aeneid/geth/chaindata"
mkdir -p "$STORY_DATA/geth/aeneid/geth"
echo ""
echo "📥 Downloading with optimized aria2c settings..."
# SERVER OPTIMIZED aria2c configuration - 3x Faster Version
ARIA2C_OPTIONS=(
--max-connection-per-server=12
--split=12
--min-split-size=15M
--max-concurrent-downloads=2
--disk-cache=64M
--file-allocation=falloc
--continue=true
--max-tries=5
--retry-wait=2
--timeout=90
--connect-timeout=20
--lowest-speed-limit=400K
--user-agent="Coinsspor-Client/3.0-Fast"
)
# Download consensus with server-optimized aria2c
echo "🔹 Downloading consensus snapshot..."
aria2c "${ARIA2C_OPTIONS[@]}" --dir="$TEMP_DIR" --out="$CONSENSUS_FILE" "$COINSSPOR_BASE/$CONSENSUS_FILE"
# Download execution with server-optimized aria2c
echo "🔸 Downloading execution snapshot..."
aria2c "${ARIA2C_OPTIONS[@]}" --dir="$TEMP_DIR" --out="$EXECUTION_FILE" "$COINSSPOR_BASE/$EXECUTION_FILE"
echo ""
echo "📂 Extracting with ZSTD compression..."
# Extract consensus
echo "🔹 Extracting consensus snapshot..."
if ! zstd -d --stdout "$TEMP_DIR/$CONSENSUS_FILE" | tar -xf - -C "$STORY_DATA/story"; then
echo "❌ Error extracting consensus snapshot"
exit 1
fi
# Extract execution
echo "🔸 Extracting execution snapshot..."
if ! zstd -d --stdout "$TEMP_DIR/$EXECUTION_FILE" | tar -xf - -C "$STORY_DATA/geth/aeneid/geth"; then
echo "❌ Error extracting execution snapshot"
exit 1
fi
echo "🔄 Restoring validator state..."
if [[ -f "$TEMP_DIR/validator_backup.json" ]]; then
cp "$TEMP_DIR/validator_backup.json" "$STORY_DATA/story/data/priv_validator_state.json"
echo "✅ Validator state restored"
fi
echo "🚀 Starting services..."
sudo systemctl start story-geth
sleep 10
sudo systemctl start story
echo "🧹 Cleaning up temporary files..."
rm -rf "$TEMP_DIR"
echo ""
echo "✅ Coinsspor snapshot download completed successfully!"
echo "📊 Monitor sync with: sudo journalctl -u story -u story-geth -f"
# Enhanced final status with reliable port detection
echo ""
echo "🎯 Final Status Check:"
sleep 5
# Verify RPC connectivity and get status
if timeout 5 curl -s "$LOCAL_RPC/status" >/dev/null 2>&1; then
LOCAL_HEIGHT=$(curl -s "$LOCAL_RPC/status" 2>/dev/null | jq -r '.result.sync_info.latest_block_height' 2>/dev/null || echo "Unknown")
CATCHING_UP=$(curl -s "$LOCAL_RPC/status" 2>/dev/null | jq -r '.result.sync_info.catching_up' 2>/dev/null || echo "unknown")
echo "📈 Node Status:"
echo " • RPC Port: $STORY_PORT ✅"
echo " • Current Height: $LOCAL_HEIGHT"
echo " • Target Height: $BLOCK_HEIGHT"
echo " • Catching Up: $CATCHING_UP"
if [[ "$LOCAL_HEIGHT" =~ ^[0-9]+$ ]] && [[ "$BLOCK_HEIGHT" =~ ^[0-9]+$ ]]; then
blocks_behind=$((BLOCK_HEIGHT - LOCAL_HEIGHT))
if [[ $blocks_behind -lt 100 ]]; then
echo " • Status: 🎉 Nearly synced! ($blocks_behind blocks behind)"
else
echo " • Status: 🔄 Syncing... ($blocks_behind blocks behind)"
fi
fi
else
echo "⚠️ Could not connect to RPC on port $STORY_PORT"
echo " Node may still be starting up. Check with:"
echo " sudo journalctl -u story -u story-geth -f"
fi
echo ""
echo "🌟 Snapshot installation completed! Happy validating! 🚀"