The Protocol on a T-Shirt
Everything the pool coin checks, in as few lines as will carry it. Each line is something the code does today and Bitcoin enforces. The rest of these docs is commentary.
C H E S H I R E private Bitcoin, enforced by Bitcoin
STATE one coin, the pool, worth V sat, whose script commits to roots = H(notes_root, nullifier_root, next_note, next_nullifier)
NOTE C = H(amount, K), K = H(pk, rho, r), pk = H(sk) a leaf of the notes tree; whoever knows sk and (amount, rho, r) owns it
NULLIFIER nf = H(sk, rho, position) published once, when the note is spent; the nullifier tree keeps them sorted, so a second spend of the same note is refused
RECORD 92 bytes per contribution: 2 commitments, 2 nullifier keys, 1 word (a deposit amount, or an encrypted memo), published in the settlement; from the records anyone rebuilds both trees, and from the records plus a seed the owner rebuilds a wallet
SETTLEMENT one transaction: pool in, pool out. The pool's script checks 1. a STARK proof that applying the records, in order, to roots gives roots', with every spent note in the tree under a recent root, every nullifier new, every contribution's value conserved and in range, and totals deposits, payouts, fees 2. the records it publishes are the proof's (fingerprint r, v) 3. V' = V + deposits − payouts − fees; payouts leave as one output 4. the new coin carries roots', epoch + 1, and the same script
BITCOIN no coin pays out more than it holds; the pool coin can only beENFORCES spent by a settlement that passes 1–4; one chain of pool coins from genesis. Who proves, who batches and when is not consensus: anyone may settle, and a settlement no one makes hurts no one.
needs GSR (BIP-440 + BIP-441), tapleaf 0xc2In English
Section titled “In English”Your coins are notes: secret IOUs whose hashes sit in a tree inside one Bitcoin coin. To pay, you prove, without showing which note, that a note in the tree is yours, that you have not spent it before, and that the new notes you create add up to it. Your proof and the hashes it adds to the tree are published in a Bitcoin transaction that spends the pool coin, and the pool coin’s own script re-checks the proof. Bitcoin’s miners run that script, so a settlement that cheats does not confirm. Anyone can gather proofs into a settlement. Nobody has to be trusted to.
What is not on the shirt
Section titled “What is not on the shirt”No settler, no sequencer, no federation, no token, no challenge period, no bridge, and no second chain that holds value.
Some things are not on the shirt because they are layers. A layer changes who does the work, or how money gets in and out. If it were removed, a valid settlement would still be valid.
| layer | what it adds | page |
|---|---|---|
| deposit inbox | deposits with no custodian on the way in | deposits |
| vault fan-out | many withdrawals paid from one output | withdrawals |
| exit inbox | a withdrawal no one can censor | exits |
| solo exit | leaving with one note and no one else | exits |
| share chain | who proves what, and when, with no settler | share chain |
| payroll | provers paid in notes by the proof | paying the provers |
| payment codes | received notes recoverable from the seed | payment codes |
| migrations | an opt-in move to a successor pool | upgrades |
Where the code is not yet the shirt
Section titled “Where the code is not yet the shirt”The shirt describes what the pool checks. The code carries a little more than the shirt needs, because layers grew into it:
- the proof’s public statement has fields for payroll, migrations and the exit inbox (156 values where the shirt needs about 90);
- the state hash folds in the anchor window and the payroll queue, three hashes deep;
- one record word has six meanings, told apart by bit patterns;
- the pool has one script leaf per transaction shape and record count, about 21,000 of them at the default bound of 1,750 records.
None of this changes what is checked. A cleaner “core v2” is sketched in the repository’s
docs/tshirt.md. It would be a new pool with a new address, so it waits for a re-pin that
is due anyway.