220 lines
11 KiB
Markdown
Raw Normal View History

2024-06-13 14:46:39 +02:00
Ethereum L2 Rollups
===================
A quick and dirty overview of existing rollups and their suitability for hosting
the Codex marketplace smart contracts. To interact with these contracts, the
participants in the network create blockchain transactions for purchasing and
selling storage, and for providing storage proofs that are then checked
on-chain. It would be too costly for these transactions to happen on Ethereum
main net, which is why this document explores L2 rollups as an alternative.
Main sources used:
- individual websites of the rollup projects
- https://l2beat.com
- https://blog.kroma.network/l2-scaling-landscape-fees-and-max-tps-fe6087d3f690
Requirements
------------
For the storage marketplace to work, we have the following requirements for a
rollup:
1. Low gas costs; if gas is too costly then the business case of storage
providers disappears
2. EVM compatibility; this shortens our time to market because we already have
Solidity contracts
3. Support for BN254 elliptic curve precompiles (ecAdd, ecMul, ecPairing) for
the proof system
4. High throughput; our current proof system that checks all proofs separately
on chain requires a large number of transactions per second
5. Censorship resistant; an L2 operator should not have the power to exclude
transactions from certain people or apps
Note that low latency is not a requirement; it's ok to have latency equivalent
to L1, which is in the order of tens of seconds.
Main flavours
-------------
Although there are many L2 rollups, there is a limited number of technical
stacks that underly them.
There is the family of purely optimistic rollups, that rely on fraud proofs to
ensure that they are kept honest:
- Arbitrum
- Optimism / OP Stack
- Fuel
And there are the rollups that rely on zero-knowledge proofs to prove that they
act honestly:
- Polygon zkEVM / CDK
- Linea
- zkSync
- Scroll
And there's Taiko, which uses a combination of zero-knowledge proofs and fraud
proofs to keep the network honest:
- Taiko
Gas prices
----------
2024-06-13 14:46:39 +02:00
A rough approximation of average gas prices for submitting a Codex storage proof
2024-06-13 14:46:39 +02:00
for each rollup:
| Rollup | Average proof price | Potential profit |
2024-06-13 14:46:39 +02:00
| ------------------- | ------------------ | ---------------- |
| Mantle | $0.0000062723 | $2.58 |
2024-06-13 14:46:39 +02:00
| Boba network | $0.0016726250 | -$2.54 |
| Immutable zkEVM | $0.0073595500 | -$20.01 |
| Arbitrum | $0.0083631250 | -$23.09 |
| zkSync Era | $0.0209078125 | -$61.63 |
| Base | $0.0418156250 | -$125.86 |
| Optimism | $0.0836312500 | -$254.32 |
| Polygon zkEVM | $0.1254468750 | -$382.77 |
| Blast | $0.1672625000 | -$511.23 |
| Scroll | $0.2090781250 | -$639.69 |
| Taiko | $0.2508937500 | -$768.15 |
| Metis | $0.4014300000 | -$1,230.59 |
| Linea | $0.8363125000 | -$2,566.55 |
This table was created by eyeballing the gas cost and token price graphs for
each L2, and [calculating the USD costs](rollups.ods) for a proof from that. We
did not include rollups that are not EVM compatible.
Potential profit (per month per TB) is calculated by assuming operational costs
of $1.40 and revenue of $4.00 per TB per month, an average slot size of 10 GB,
and an average of 1 proof per slot per day.
EVM compatibility
-----------------
This shows which rollups are EVM compatible, and whether they support the BN254
elliptic curve precompiles that we require for verification of our storage
proofs (ecAdd, ecMul, ecPairing).
| Rollup | EVM compatible | Elliptic Curve operations |
| --------------------- | -------------- | ------------------------- |
| Arbitrum | Yes | Yes |
| Base | Yes | Yes |
| Blast | Yes | Yes |
| Boba network | Yes | Yes |
| Immutable zkEVM | Yes | Yes |
| Linea | Yes | Yes |
| Mantle | Yes | Yes |
| Metis | Yes | Yes |
| Optimism | Yes | Yes |
| Polygon zkEVM | Yes | Yes |
| Scroll | Yes | Yes |
| Taiko | Yes | Yes |
| zkSync Era | Yes | No |
| Fuel L2 V1 | No | N/A |
| Fuel Rollup OS | No | N/A |
| Immutable X | No | N/A |
| Polygon Miden | No | N/A |
| Starknet | No | N/A |
| zkSync lite | No | N/A |
Throughput
----------
A rough approximation of the maximum number of transactions that a rollup can
handle, and the maximum size of the storage network that it might support:
| Rollup | Maximum TPS | Maximum storage |
| --------------------- | ----------- | --------------- |
| zkSync Era | 750 | 1236 PB |
| Starknet | 484 | 798 PB |
| Optimism | 455 | 750 PB |
| Base | 455 | 733 PB |
| Mantle | 400 | 659 PB |
| Metis | 357 | 588 PB |
| Polygon zkEVM | 237 | 391 PB |
| Arbitrum | 226 | 372 PB |
| Boba network | 205 | 338 PB |
| Scroll | 50 | 82 PB |
| Taiko | 33 | 54 PB |
| Blast | ? | ? |
| Immutable zkEVM | ? | ? |
| Linea | ? | ? |
| Fuel L2 V1 | ? | ? |
| Fuel Rollup OS | ? | ? |
| Immutable X | ? | ? |
| Polygon Miden | ? | ? |
| zkSync lite | ? | ? |
Maximum size of the storage network is [calculated](rollups.ods) assuming an
average 1 proof per 24 hours per slot, average slot size 10 GB, and average
erasure coding rate of 1/2. In practice the calculated maximum storage is going
to be less, because we can't use up the entirety of the rollup capacity.
Maximum TPS figures are taken from an [overview document by
Kroma](https://blog.kroma.network/l2-scaling-landscape-fees-and-max-tps-fe6087d3f690)
Censorship resistance
---------------------
Censorship resistance can be achieved by having a decentralized architecture,
where anyone is allowed to propose blocks and there are are no admin rights that
allow a rollup operator to change the rules in their favour.
Only Fuel L2 V1 has all these properties, the others don't. And because Fuel L2
V1 is a payment network without smart contracts it is not suitable for the Codex
marketplace. This means that at this moment there is no censorship resistant
rollup that can host the Codex marketplace.
Taiko is one of the few rollups that has a decentralized architecture, and it's
committed to becoming permissionless. However, at the moment it is not.
| Rollup | Decentralized | Permissionless | Adminless |
| --------------------- | ------------- | --------------- | ------------ |
| Fuel L2 V1 | Yes | Yes | Yes |
| Metis | Yes | No | No |
| Taiko | Yes | No | No |
| Arbitrum | No | N/A | N/A |
| Base | No | N/A | N/A |
| Blast | No | N/A | N/A |
| Boba network | No | N/A | N/A |
| Fuel Rollup OS | No | N/A | N/A |
| Immutable X | No | N/A | N/A |
| Immutable zkEVM | No | N/A | N/A |
| Linea | No | N/A | N/A |
| Mantle | No | N/A | N/A |
| Optimism | No | N/A | N/A |
| Polygon zkEVM | No | N/A | N/A |
| Polygon Miden | No | N/A | N/A |
| Scroll | No | N/A | N/A |
| Starknet | No | N/A | N/A |
| zkSync lite | No | N/A | N/A |
| zkSync Era | No | N/A | N/A |
Conclusion
----------
There seems to be no rollup that matches all the requirements that we listed in
the beginning of the document. The most pressing problem is that only Mantle
seems to be cheap enough to allow storage providers to turn a profit, given the
assumptions of an average 10 GB slot size and 1 proof per 24 hours. It is
unclear whether these low prices are sustainable in the long run. If we want to
have more choice on where to deploy, then we either need to reduce the number of
on-chain proofs in Codex drastically, or we need to find a way to reduce rollup
transaction costs.
Luckily we're already working on reducing the number of proofs by introducing
proof aggregation, but the analysis in this document shows that we might not be
able to launch a storage network without it. Reducing the number of proofs also
ensures that the network can grow to a larger total size.
When we look at reducing the transaction costs, then the best thing to focus on
is getting rid of the need to post transactions on L1 in blobs. This is by far
the most expensive part of running a rollup, and this is most likely also why
Mantle is the only rollup in this overview that is cheap enough; it uses EigenDA
instead of posting to L1. In this respect, it might also be interesting to look
at Arbitrum AnyTrust, which has a similar design. We could also consider
creating a fork of an existing rollup and use Codex as the DA layer. Some of the
new modular architectures for creating rollups, such as
[Espresso](https://www.espressosys.com/), [Astria](https://www.astria.org/),
[Radius](https://www.theradius.xyz/), [Altlayer](https://www.altlayer.io/) and
[NodeKit](https://www.nodekit.xyz/) could also make it easier to experiment with
different rollup designs.