A real ZK rollup running on AERE Network. State is a Poseidon commitment of two account balances; each batch is a transfer accompanied by a Groth16 proof that the transfer was applied correctly. The L1 verifier checks the proof, there is no fraud window, finality is instant. This is the validity-proof model used by zkSync Era and Polygon zkEVM, here in 2-account form to demonstrate the cryptographic core. The same pattern extends to N accounts via a Merkle-tree state.
The chain only stores a Poseidon commitment of the two balances. To advance the rollup, you must know the pre-image. Anyone can post a batch as long as they know the current balances. The genesis is account 0 = 1000, account 1 = 0.
The verifier will reject any proof that doesn't match the current on-chain state root or violates the transfer rules. Submitting advances the rollup; the verifier costs no fees on AERE.
Off-chain (browser) On-chain (AERE L1)
───────────────── ──────────────────
1. Read on-chain stateRoot ┐
2. Know (bal0, bal1) such that │
Poseidon(bal0,bal1) == stateRoot │
3. Pick (direction, amount) ├── Verifier (Groth16) checks:
4. Compute newBal0, newBal1 │ • prover knew pre-image of stateRoot
5. Compute newState = Poseidon(...) │ • amount ≤ sender balance
6. Run circom witness + Groth16 prove │ • newState matches Poseidon of new balances
7. Submit (newState, dir, amount, proof)──┘
8. State root advances to newState
9. BatchPosted event emitted