ZK Rollup with validity proofs

Coming soon. This feature is built and on the AERE roadmap, its on-chain contracts are not yet deployed. Actions are disabled until launch.

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.

Rollup status

Account 0,
Account 1,
State root,
Batches submitted,

1 · Track local 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.

,

2 · Build a transfer

,

3 · Submit batch on-chain

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.

,

Recent batches

,

How it works

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