ltl-accumulator-verified/docs/optimistic-accountability.md
mrwulf 1ae8263404 docs: estate-wide consistency pass (workflow audit, 36 findings, all verified before fixing)
Nine parallel readers audited every doc against measured ground truth; every
finding was re-verified against the file before any edit, and the sweep fixed
by PROPERTY, not by flag — wording the readers caught in one repo was hunted
in all siblings (the two-button README sentence existed in all four forks,
not the three flagged; likewise the cone-overclaim in TRUSTED-BASE item 1).

This repo: see the diff. Records were not rewritten; clarifications are
dated. Doc-only except where noted in the estate summary; every gated doc
change was followed by a green button run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-07 16:00:54 +02:00

157 lines
9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Optimistic by construction: what the LTL holds, and what it shares with rollups
Status: long-form source. Entry 13 (leaf index 12, hash `8cb258d6…`,
subject `ltl-accumulator-verified@172a1d0`) is live under head
`tree size 13, root 3488a2d0…`, verifiable at ltl.zkdefi.org/v1/sth.
Framing note (2026-07-19): Part II was revised to match the precise
treatment used in the paper. The rollup resemblance is a **bounded
analogy**, not a strict claim: the collision extractors are *reduction
witnesses* against SHA-256's collision resistance, not on-protocol
fraud proofs that convict the operator; a fabricated leaf is caught
only by *off-protocol* independent replay. Earlier drafts overstated
this ("fraud proof in the strict sense", "cannot fail to convict"); the
overstatement is corrected here and the paper omits the analogy from
its body entirely.
---
## Part I — What is actually inside the Merkle tree
A persistent misreading of transparency logs is that they "contain the
proofs." The LTL's tree contains none of the Lean mathematics. Each
leaf is (the 32-byte hash of) a **verification-event record**: a
signed attestation stating that the provider, at a given time, ran the
proof checks on a named subject repository at an exact commit, with an
exact toolchain, and observed a specific result — every certificate
verified, each with an exactly-listed axiom cone. The records are
published beside the tree (`entries/`); the proofs themselves live one
hop further away, in the subject git repositories the records pin.
So a leaf is a statement *about the operator's action* — "I verified
X" — and on its face that sounds like "trust me." The design's whole
point is the refinement that removes the trust: **the claim names its
own evidence.** Because the leaf pins commit hash and toolchain,
anyone can replay the verification and check the operator's statement.
The log converts
> "I guarantee I verified the proofs (which live elsewhere)"
into
> "I claim this, permanently and publicly, with enough detail that
> anyone can catch me lying — and I can never unsay it, edit it, or
> show a different history to someone else."
Three layers, three distinct guarantees, and most confusion comes from
expecting one layer to do another's job:
| layer | guarantees | does NOT guarantee |
|---|---|---|
| Lean kernel (inside the subject repos) | the mathematics of the attested proofs is true, given the declared axioms | anything about what the operator later claims |
| replay pin (leaf content) | the operator's claim is CHECKABLE — re-run the pinned commit and compare | that anyone has actually re-run it |
| Merkle accumulator + signed heads | inclusion (Thms 12), append-only history (Thm 3), equivocation evidence (Prop 1): claims cannot be altered, hidden, or forked without producing cryptographic evidence | that any claim is TRUE — the ledger notarizes, it does not referee |
The notary metaphor is exact: a notary does not check that your
contract is wise; the notary makes it impossible to later dispute
*what was stamped and when*, and the bound ledger makes tampering
evident. The LTL is a notary whose every stamped page happens to carry
instructions for independently re-checking the page's claim.
## Part II — The optimistic-rollup resemblance (a bounded analogy)
Optimistic rollups rest on one bet: *claims are cheap to make and
expensive to get away with*. A sequencer posts state roots without
proof; safety comes from anyone's ability to produce compact,
transferable evidence of a specific fault from public data, and from
punishment when they do. The LTL — like its direct ancestor,
Certificate Transparency (RFC 9162) — sits at the same design *point*:
record everything append-only, and make misbehavior produce publicly
verifiable evidence. The correspondence is a genuine and useful
analogy, and — this is the part worth getting right — it is an analogy
with three honest disanalogies, not an equivalence. The precise
version is what makes it interesting.
There are two very different "faults" a reader tends to conflate, and
the LTL treats them differently.
**Fault 1 — the operator rewrites or forks the log's own history.**
This is the layer this corpus mechanized, and it is where the
resemblance is strongest — but the mechanized result is a *reduction*,
not a courtroom verdict. Theorem 3 (`extractCons_correct` /
`acceptCons_sound`) states: if the verifier accepts a consistency proof
between a pinned head and a rewritten history, the named extractor
**outputs a SHA-256 collision as two concrete byte strings**. Read that
statement exactly. It does not say "the operator is guilty"; it says
"accepting this would break SHA-256." The extractor is a reduction
witness: it converts a successful attack on the log's structure into a
concrete refutation of the hash function's collision resistance. Under
the standing assumption that no such collision is feasible, the attack
therefore cannot succeed in the first place — which is a *stronger and
cleaner* guarantee than a fraud proof that convicts after the fact.
Equivocation is the one place the operator is directly on the hook:
two conflicting signed heads at the same size, in one log context, are
transferable evidence attributable to the key holder (this reduces to signature
unforgeability, not to collision resistance) — the closest analogue to
a rollup fraud proof against the sequencer, and the consumer's
pin-store is the watchtower that collects it. The liveness assumption
transfers cleanly: someone must actually watch (a pinned consumer, a
mirror, a `witness-audit` run). An unwatched log, like an unwatched
rollup, is safe only on paper.
**Fault 2 — a leaf's content is simply false** (the operator lies about
a Lean result it never actually observed). This is the optimistic part,
and it is the honest limit of the whole design: the cryptography does
**not** catch it. The Merkle machinery faithfully commits and orders a
false statement exactly as it would a true one — it notarizes, it does
not referee. What catches a false leaf is **independent replay**: the
leaf pins the commit and toolchain, so anyone can re-run the check, and
a failed replay is the demonstration. But replay is *off-protocol*
it is not a challenge transaction the log adjudicates; it is work a
third party does with a theorem prover, and the log's only contribution
is to make the claim precise enough to be replayable and impossible to
later unsay. Two properties do compare favorably: the challenge window
is effectively infinite (append-only preserves the record forever — a
false leaf cannot be reverted, only exposed), and no privileged
adjudicator exists — every reader replays independently.
**The three disanalogies, stated plainly.** (1) The consistency and
inclusion extractors are reduction witnesses against a cryptographic
assumption, not on-protocol fraud proofs against the operator — a false
opening refutes SHA-256, it does not by itself prove misconduct. (2)
Detecting a fabricated *leaf* requires off-protocol independent replay;
the log defines no challenge transaction, adjudicator, or compact proof
that a replay observation was fabricated. (3) There is no bond, no
slashing, no revert: consequences are reputational and out-of-band —
consumers stop trusting and the evidence is publicized — exactly as in
CT, where the "slash" is a browser distrusting a CA. Bolting on
economic slashing would require an on-chain adjudicator able to run a
proof checker inside a fault-proof VM; theoretically the same
construction rollups use, practically a research program. The dual this
estate actually implements is consumer-side defense: warden's quorum of
independently attested verifiers, instead of prover-side bonding.
**What entry 13 does close.** Set the analogy aside and state the plain
fact: the log now carries, as one of its own leaves, a kernel-checked
mechanization of the very soundness arguments its accumulator relies
on — the extractors, the consistency binding, the per-step pin safety
— scoped honestly to the recursive model (not the deployed verifier;
see `KNOWN-GAPS.md`). Whatever one calls that machinery, its proofs are
now inside the ledger it protects, verifiable end to end by anyone with
a stock toolchain. That is the loop worth savoring, and it needs no
rollup metaphor to be remarkable.
## Pointers (for the eventual blog rendering)
- Mechanized statements: `STATEMENT-MAP.md` (this repo); the fraud-
proof-generator reading of Theorem 3 is `extractCons_correct` +
`acceptCons_sound`; scope boundaries in `KNOWN-GAPS.md` (esp. gap 15:
the deployment refinement invariant — gap 14, the historical deployed-verifier
divergence, closed 2026-07-23; gap 4: the signature layer,
where equivocation-evidence transferability lives).
- Deployed anatomy: leaf → `entries/NNNNNN.json`; head →
`latest-sth.json` (+ `sth-history.jsonl`); the head is signed by the
dogfooded verified-dalek backend (`self_inclusion: verified`).
- Lineage: RFC 9162 / Certificate Transparency — the original
accountability-over-validity system; the LTL is CT's discipline
applied to formal-verification claims.