Jordi Baylina🎗 Profile picture
Feb 25 15 tweets 5 min read
The scalability of a #zkRollup IS NOT limited by the prove.

I'm detecting some missunderstandings of how a zkRollup works.

Let me explain in this thread why the prover is not the limiting factor and what are the actual limitetions of zk ( and optimistic ) rollups. Image
The first step is keeping the network synchronised. This is not specific to a zkRollup, this is the same for any chain (L1, L2, .., L43, zk, optimistic, side-chain, etc)
Once you have one (or many) nodes syncronized, you need to build the proofs for all those batches ( we call a batch to an L2 block to distinguish it from the L1 blocks).
To build the proof, you need to reexecute the batch and build the zkProof. This may take some time and resources. In the case of polygon #zkEVM it's 2' for a 10M gas batch in a simple machine (We internally call this reference "The rocket" and it has 128 cores and 512Gb RAM)
But this process can be run in parallel!. That mean that you can have one server computing the prover for the batch one, a 2nd server for the batch 2, a 3rd server for the batch3 and so on.
If the network has a high demand and many batches are generated, you will need to spin up many provers to catch up, but if the load of the network decreases, you can turn off some of those servers.
Once you have all the batch proofs of a continuous sequence (a chain segment) you can aggregate them. That means that you can for example compute a proof that proves the batch 1 proof and batch 2 proof. You can do the same for batch 3 proofs and batch 4 proof.
So you can build a tree of proofs where the root proves a full chain segment. You can build this tree with the shape you want and in parallel. You can have one server aggregating proof 1 and 2 while another is aggregating proofs 3 and 4. This proof takes 10s in "The Rocket"
The last step is to send this aggregated proof onchain. This proof is what stores the rollup state onchain and allows the user to withdraw the funds. This happends once in a while (30 minutes in the case of the @0xPolygon #zkEVM).
For this last step the proof is converted from a STARK to a SNARK (FFLONK), this reduces the gas cost for verifying this proof onchain. This process takes about 2min in "The Rocket" and the gas cost of the whole TX is about 350K no matter how long is the proving segment.
The parameter that matters here is the proving cost, as this affect the TX fee. But this cost is becoming insignificant compared to other costs, like the data availability cost, the cost of the L1 txs, the maintenance cost or even the capital cost of the optimistic rollups.
So NO, the scalability of the zkRollups is not limited by the provers at all!

What are then the scalability limitations of a zkRolloup?
Well they are the same that any other rollup. The next bottle neck is data availability. This is why is so important pushing #Ethereum2 #danksharding and the #EIP4844
Once solved the data availability, next bottleneck will be keeping the chain synchronised (nothing to do with the zkProofs). And is at this point where thinking in a multi-rollup ecosystem running in parallel will make a lot of sense (multiprocessor approach).
You can test Polygon zkEVM here:…
We will launch a beta in mainnet on March 27th!

• • •

Missing some Tweet in this thread? You can try to force a refresh

Keep Current with Jordi Baylina🎗

Jordi Baylina🎗 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!


Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @jbaylina

Aug 3, 2018
@peter_szilagyi @thegrifft @AugurProject @joeykrug @tensorjack @augur_jp @DAppNode @eduadiez @dapplion @YalorMewn When your device is connected to a #DAppNode, you can use ".eth" domains that resolve to ipfs/swarm hashes.(You don't use `localhost` anymore) The DApps can also use any decentralised service that it's running in DAppNode from the browser.
I open a thread for technical details 👇
@peter_szilagyi @thegrifft @AugurProject @joeykrug @tensorjack @augur_jp @DAppNode @eduadiez @dapplion @YalorMewn 1.- You connect your devices to your DAppNode via a private VPN between your device and your DAppNode.
2.- The VPN is configured in such a way that the DNS is forwarded to your DAppNode and the remaining traffic goes directly to the internet.
@peter_szilagyi @thegrifft @AugurProject @joeykrug @tensorjack @augur_jp @DAppNode @eduadiez @dapplion @YalorMewn 3.- From your browser yo access a ".eth" domain.
4.- The DNS service in dappnode will caththat and will resolve to the prived address of the DappNode.
5.- The browser http request with the ".eth" domain in the header to the dappnode.
Read 5 tweets

Did Thread Reader help you today?

Support us! We are indie developers!

This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!


0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy


3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!