4NK_env/scripts/lecoffre_node/optimize-relay-startup.sh
LeCoffre Deployment 43a05a2742 clean
2025-09-25 12:19:35 +00:00

66 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# Script d'optimisation du démarrage du relais
# Évite les scans bloquants en ajustant last_scan si nécessaire
set -e
echo "🔧 Optimisation du démarrage du relais..."
# Vérifier si le conteneur sdk_relay existe
if ! docker ps -a --format "table {{.Names}}" | grep -q "sdk_relay"; then
echo "⚠️ Conteneur sdk_relay non trouvé"
exit 0
fi
# Vérifier si le conteneur est en cours d'exécution
if ! docker ps --format "table {{.Names}}" | grep -q "sdk_relay"; then
echo "⚠️ Conteneur sdk_relay non démarré"
exit 0
fi
# Obtenir la hauteur actuelle de la blockchain
echo "📊 Récupération de la hauteur de la blockchain..."
CURRENT_HEIGHT=$(docker exec sdk_relay curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"1.0","id":"test","method":"getblockcount","params":[]}' http://bitcoin:38332/ | jq -r '.result' 2>/dev/null || echo "0")
if [ "$CURRENT_HEIGHT" = "0" ] || [ "$CURRENT_HEIGHT" = "null" ]; then
echo "⚠️ Impossible de récupérer la hauteur de la blockchain"
exit 0
fi
echo "📊 Hauteur actuelle: $CURRENT_HEIGHT"
# Vérifier le last_scan actuel
LAST_SCAN=$(docker exec sdk_relay cat /home/bitcoin/.4nk/default 2>/dev/null | jq -r '.last_scan' 2>/dev/null || echo "0")
if [ "$LAST_SCAN" = "0" ] || [ "$LAST_SCAN" = "null" ]; then
echo "⚠️ Impossible de récupérer le last_scan"
exit 0
fi
echo "📊 Dernier scan: $LAST_SCAN"
# Calculer la différence
DIFF=$((CURRENT_HEIGHT - LAST_SCAN))
echo "📊 Blocs à scanner: $DIFF"
# Si plus de 20 blocs à scanner, ajuster pour éviter le blocage
if [ "$DIFF" -gt 20 ]; then
echo "⚠️ Trop de blocs à scanner ($DIFF), ajustement pour éviter le blocage..."
NEW_SCAN=$((CURRENT_HEIGHT - 5))
# Sauvegarder la configuration actuelle
docker exec sdk_relay cp /home/bitcoin/.4nk/default /home/bitcoin/.4nk/default.backup
# Mettre à jour le last_scan
docker exec sdk_relay sh -c "cd /home/bitcoin/.4nk && sed 's/\"last_scan\":$LAST_SCAN/\"last_scan\":$NEW_SCAN/' default > default.new && mv default.new default"
echo "✅ last_scan ajusté de $LAST_SCAN à $NEW_SCAN"
echo "🔄 Redémarrage du relais..."
docker compose restart sdk_relay
else
echo "✅ Nombre de blocs à scanner acceptable ($DIFF)"
fi
echo "✅ Optimisation terminée"