Книга утверждает: каждое решение шлюза MITR записано в цепь квитанций, которую посторонний проверяет без доверия к владельцу сервера. Ниже — как это сделать на своей машине. Нужны только Python 3 и, для меток времени, клиент OpenTimestamps.
Шаг 1. Проверить целость цепи квитанций шлюза
curl -o verify_chain_standalone.py https://asi5.ru/console/verify/verify_chain_standalone.py.txt
curl -O https://asi5.ru/console/verify/gate_anchors-public.jsonl
python3 verify_chain_standalone.py gate_anchors-public.jsonl
Код возврата 0 — якоря сошлись; 1 — не сошлись, и названа эпоха; 2 — проверить не удалось. Проверщик написан только на стандартной библиотеке Python, ни строки кода MITR.
Шаг 2. Проверить время последней эпохи чужим клиентом
curl -O https://asi5.ru/console/verify/gate-anchor-epoch-23.json
curl -O https://asi5.ru/console/verify/gate-anchor-epoch-23.json.ots
ots verify gate-anchor-epoch-23.json.ots
Метка OpenTimestamps датирует файл якоря блоком сети Bitcoin. Номер последней эпохи растёт раз в сутки — актуальный указан на asi5.ru/console/verify/.
Шаг 3. Сверить голову цепи
На 16.10.2026 (проверено этим порядком): эпоха 23 от 15.10.2026 05:15 UTC, в цепи 4960 квитанций, хеш головы 084148b47388adae08df766f9b5bdf2699dcba8fbca065aece3e841f28398b47, признак целостности chain_ok: true. Последняя строка gate_anchors-public.jsonl должна совпасть с файлом gate-anchor-epoch-23.json.
Чего этими данными проверить нельзя
Якоря доказывают, что цепь не переписана задним числом. Правильность самих решений — допуск или отказ по правилу — так не проверить. Для этого аудитору передают цепь квитанций и тексты правил в стандарте SMT-LIB, и проверщик повторяет каждое решение любым решателем на его машине. 14.10.2026 повтор дал 4958 совпадений из 4958; выполнил его сам институт своим проверщиком, сторонний проверяющий повтор ещё не делал. Проверщик с повтором выходит в открытый набор вместе со статьёй.
Команды повтора из книги (приложение Б)
Их запускает аудитор, допущенный к узлу шлюза. Они печатают те же числа, что напечатаны в книге:
# живость служб шлюза
systemctl is-active v-bot v-mcp
# шесть базовых положений и строка по каждому арендатору — за сутки среза книги (без --date — последние сутки)
cd /opt/v && sudo -u v venv/bin/python scripts/gate_mode_report.py --six --date 2026-10-09
cd /opt/v && sudo -u v venv/bin/python scripts/gate_mode_report.py --tenants --date 2026-10-09
# цена решения (P4): вторая строка — замер 26.09.2026 (ADR-0282), последняя — свежий замер
sed -n 2p /opt/v/data/logs/smt_latency_paper.jsonl; tail -1 /opt/v/data/logs/smt_latency_paper.jsonl
# последний якорь цепи квитанций шлюза (P3)
tail -1 /opt/v/data/gate_anchors.jsonl
# повтор всех решений цепи проверщиком для постороннего (14.10.2026: 4958 из 4958)
cd /opt/v && sudo -u v venv/bin/python scripts/verify_chain_standalone.py data/logs/gate_actions.jsonl --anchors data/gate_anchors.jsonl --replay
# первое правило словаря, принятое самим MITR (С1): квитанция 305
grep -m1 'seq.: 305,' /opt/v/data/logs/gate_actions.jsonl