Production-shape ZK rollup. State is a depth-3 Poseidon Merkle root over 8 account leaves. Each batch is a transfer (senderIdx → receiverIdx, amount); the L1 verifier checks a Groth16 proof of the full state transition: sender Merkle inclusion, sender deduction yields intermediate root, receiver Merkle inclusion against intermediate, receiver addition yields newRoot, plus solvency. No fraud window. Same pattern scales straightforwardly to depth-N.
Genesis: account 0 = 1000, all others 0. Update if you've replayed batches locally.