Independent verification protocol

Русская версия

The book Proven Action claims that every decision of the MITR gate is written to a chain of receipts that an outsider can verify without trusting the owner of the server. Below is how to do it on your own machine. All you need is Python 3 and, for the timestamps, the OpenTimestamps client.

Step 1. Check the integrity of the gate’s receipt chain

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

Exit code 0: the anchors agree; 1: they do not agree, and the epoch is named; 2: the check could not be made. The verifier is written with the Python standard library only, without a single line of MITR code. Its messages are in Russian.

Step 2. Check the time of an epoch with someone else’s client

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

The OpenTimestamps stamp dates the anchor file by a block of the Bitcoin network. A new epoch is added once a day; the current number is shown at asi5.ru/console/verify/. The stamp of the newest epoch waits a few hours for confirmation in Bitcoin, and until then ots verify reports that confirmation is pending: check the previous epoch, or repeat later.

Step 3. Compare the head of the chain

As of 16 October 2026 (checked in this order): epoch 23 of 15 October 2026, 05:15 UTC, 4,960 receipts in the chain, head hash 084148b47388adae08df766f9b5bdf2699dcba8fbca065aece3e841f28398b47, integrity flag chain_ok: true. The line of epoch 23 in gate_anchors-public.jsonl must match the file gate-anchor-epoch-23.json in every field except witnesses: the list of witnesses is added to the chain after the stamp is made. The next epoch, 24 of 16 October 2026, 05:16 UTC, holds 4,969 receipts.

What these data cannot verify

The anchors prove that the chain has not been rewritten after the fact. They do not prove that the decisions themselves, an admission or a refusal under a rule, were correct. For that, an auditor is given the chain of receipts and the texts of the rules in the SMT-LIB standard, and the verifier replays each decision with any solver on the auditor’s machine. On 14 October 2026 the replay gave 4,958 matches out of 4,958; it was done by the institute itself with its own verifier, and no outside verifier has replayed it yet. The verifier with replay will be added to the open kit together with the paper.

Replay commands from the book (appendix B)

They are run by an auditor admitted to the gate’s server. They print the same figures as printed in the book:

# liveness of the gate's services
systemctl is-active v-bot v-mcp
# six basic propositions and a line per tenant, for the day of the book's snapshot (without --date, the last day)
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
# price of a decision (P4): the second line is the measurement of 26.09.2026 (ADR-0282), the last one is the latest
sed -n 2p /opt/v/data/logs/smt_latency_paper.jsonl; tail -1 /opt/v/data/logs/smt_latency_paper.jsonl
# the last anchor of the gate's receipt chain (P3)
tail -1 /opt/v/data/gate_anchors.jsonl
# replay of all the chain's decisions with the verifier for an outsider (14.10.2026: 4958 of 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
# the first vocabulary rule adopted by MITR itself (C1): receipt 305
grep -m1 'seq.: 305,' /opt/v/data/logs/gate_actions.jsonl

Related pages