Docs + lecture: the cockpit renders the Bayer-Groth tree live

README cockpit section now lists the deep layers it instruments, named after the
Swiss Post crypto-primitives classes (CommitmentService, the five *ArgumentService
classes, DecryptionProofService).

crypto.html: on the slide that teaches the Bayer-Groth sub-argument tree, add a
callout that `evote cockpit` renders exactly that tree as live typeset math in
construction order — "the tree is not a diagram of the code; it is the code
narrating itself." Root standalone copy synced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
saymrwulf 2026-07-07 16:33:07 +02:00
parent 31e9a25bb8
commit e8b4247089
3 changed files with 15 additions and 5 deletions

View file

@ -80,11 +80,19 @@ make test # runs cargo test + go test ./...
```
The `cockpit` command is a teaching instrument: it runs the full multi-party
ceremony and streams **every cryptographic operation** — sampling, ElGamal
encryption, Fiat-Shamir challenges, the Bayer-Groth shuffle, Ed25519 signatures,
X25519 key agreement — as **the mathematics that is executing, with the real
runtime values**, the instant it runs. One `pkg/trace` event stream feeds two
surfaces:
ceremony and streams **every cryptographic operation** as **the mathematics that
is executing, with the real runtime values**, the instant it runs. It goes down
to the level of the Swiss Post `crypto-primitives` class structure — you can watch
the Bayer-Groth shuffle proof being *constructed*, not just referenced:
- ElGamal encryption, Fiat-Shamir challenges, Ed25519 signatures, X25519 key agreement
- **Pedersen matrix commitments** (`CommitmentService`)
- **all five Bayer-Groth sub-arguments** (`ShuffleArgument`, `ProductArgument`,
`HadamardArgument`, `ZeroArgument`, `SingleValueProductArgument`,
`MultiExponentiationArgument`)
- **partial decryption + decryption proofs** (`DecryptionProofService`)
One `pkg/trace` event stream feeds two surfaces:
- **Browser** (default): a self-contained page renders each operation as typeset
MathML (no libraries, offline). A stakeholder sidebar highlights the acting

View file

@ -1016,6 +1016,7 @@ r = <span class="red">833704513946265251405968611993787771762...</span>
<span class="cmt">"The output ciphertexts are the correct multi-exponentiations</span>
<span class="cmt"> of the inputs with the permutation matrix as exponents."</span></div>
<div class="analogy-box"><strong>Simplified intuition:</strong> Imagine you have 6 sealed boxes numbered 1-6. You rearrange them and put them in new boxes. The ProductArgument proves "I used each number exactly once" (it's a valid permutation). The MultiExponentiationArgument proves "the new boxes contain the same items as the old boxes" (the ciphertexts were correctly re-encrypted, not swapped for fakes).</div>
<div class="insight-box"><strong>Watch it happen.</strong> Run <code>evote cockpit</code> (browser) or <code>evote cockpit --tmux</code> (terminal): as the mix-net executes, each of these sub-arguments is rendered as live typeset mathematics with the real runtime values, in the order it is constructed &mdash; the Pedersen commitment to the permutation matrix, then the Product / Hadamard / Zero / SingleValueProduct / MultiExponentiation arguments, then the partial decryptions. The tree above is not a diagram of the code; it <em>is</em> the code, narrating itself.</div>
`
},

View file

@ -1016,6 +1016,7 @@ r = <span class="red">833704513946265251405968611993787771762...</span>
<span class="cmt">"The output ciphertexts are the correct multi-exponentiations</span>
<span class="cmt"> of the inputs with the permutation matrix as exponents."</span></div>
<div class="analogy-box"><strong>Simplified intuition:</strong> Imagine you have 6 sealed boxes numbered 1-6. You rearrange them and put them in new boxes. The ProductArgument proves "I used each number exactly once" (it's a valid permutation). The MultiExponentiationArgument proves "the new boxes contain the same items as the old boxes" (the ciphertexts were correctly re-encrypted, not swapped for fakes).</div>
<div class="insight-box"><strong>Watch it happen.</strong> Run <code>evote cockpit</code> (browser) or <code>evote cockpit --tmux</code> (terminal): as the mix-net executes, each of these sub-arguments is rendered as live typeset mathematics with the real runtime values, in the order it is constructed &mdash; the Pedersen commitment to the permutation matrix, then the Product / Hadamard / Zero / SingleValueProduct / MultiExponentiation arguments, then the partial decryptions. The tree above is not a diagram of the code; it <em>is</em> the code, narrating itself.</div>
`
},