#!/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"