#!/usr/bin/env bash # Аудитор: скачивает events.jsonl, replay → state, сверяет с публичным state.json. # Если совпадает — данные не подделаны. Если нет — мы врём. set -u TMP=$(mktemp -d); trap 'rm -rf "$TMP"' EXIT GREEN='\033[0;32m'; RED='\033[0;31m'; NC='\033[0m' EXPECTED_PUBKEY="d9a8bf07871d35c8e85f7de4a9b62896c330ba0987732468515c7bda8bb4adde" echo "=== Montana — single-source-of-truth verification ===" echo echo "[1] Скачиваем events.jsonl..." curl -sS --max-time 30 https://montana.quest/vpn/events.jsonl > "$TMP/events.jsonl" N=$(wc -l < "$TMP/events.jsonl") echo " $N events" echo "[2] Скачиваем заявленный state.json..." curl -sS --max-time 10 https://montana.quest/vpn/state.json > "$TMP/state-claimed.json" HEAD=$(python3 -c "import json;print(json.load(open('$TMP/state-claimed.json'))['head_seq'])") echo " head_seq=$HEAD" echo "[3] Проверяем каждое event подписано $EXPECTED_PUBKEY..." python3 - <