#!/bin/bash # Script de synchronisation des UTXOs dépensés # À exécuter via cron pour maintenir la synchronisation # Vérifie que bitcoind est disponible avant d'exécuter la synchronisation SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" LOG_FILE="$SCRIPT_DIR/sync-utxos.log" BITCOIND_CONTAINER="bitcoin-signet-instance" log() { echo "$(date -Iseconds) $*" | tee -a "$LOG_FILE" } cd "$PROJECT_DIR" || exit 1 log "=== Synchronisation des UTXOs dépensés ===" # Vérifier que bitcoind est disponible avant de commencer if docker ps -q -f "name=^${BITCOIND_CONTAINER}$" 2>/dev/null | grep -q .; then log "Vérification de la disponibilité de bitcoind..." if docker exec "$BITCOIND_CONTAINER" bitcoin-cli -datadir=/root/.bitcoin getblockchaininfo &>/dev/null; then log " ✅ Bitcoind disponible, démarrage de la synchronisation..." else log " ❌ Bitcoind ne répond pas (RPC non disponible)" log " ⚠️ Arrêt de la synchronisation pour éviter de surcharger bitcoind" log " ℹ️ Le script sera réexécuté à la prochaine heure" exit 1 fi else log " ❌ Conteneur bitcoind non trouvé ou arrêté" log " ⚠️ Arrêt de la synchronisation" exit 1 fi # Exécuter le script de synchronisation log "Exécution du script de synchronisation..." node "$SCRIPT_DIR/sync-utxos-spent-status.mjs" >> "$LOG_FILE" 2>&1 EXIT_CODE=$? if [ $EXIT_CODE -eq 0 ]; then log "✅ Synchronisation terminée avec succès" else log "❌ Synchronisation échouée (code: $EXIT_CODE)" fi # Garder seulement les 100 dernières lignes du log tail -n 100 "$LOG_FILE" > "$LOG_FILE.tmp" && mv "$LOG_FILE.tmp" "$LOG_FILE" exit $EXIT_CODE