A crappy zk-rollups explanation attempt

(Considering the example of zksync.io) (Also, don’t believe me on any of this.)

  1. They are sidechains.
  2. You move tokens to the sidechain by depositing it on an Ethereum contract. Then your account is credited in the sidechain balance.
  3. Then you can make payments inside the sidechain by signing transactions and sending them to a central operator.
  4. The central operator takes transactions from a bunch of people, computes the new sidechain balances state and publishes a hash of that state to the Ethereum contract.
  5. The idea is that a single transaction in the blockchain contains a bunch of sidechain transactions.
  6. The operator also sends to the contract an abbreviated list of the sidechain transactions. The trick is making all signatures condensed in a single zero-knowledge proof which is enough for the contract to verify that the transition from the previous state to the new is good.
  7. Apparently they can fit 500 sidechain transactions in one mainchain transaction (each is 12 bytes). So I believe it’s fair to say all this zk-rollup fancyness could be translated into “a system for aggregating transactions”.
  8. I don’t understand how the zero-knowledge proof works, but in this case it is a SNARK and requires a trusted setup, which I imagine is similar to this one.