An easy way for L2 smart contracts to read the latest L1 data (or L2 data from an L3) in a way that is also easy to prove for L2s that are EVM equivalent and use the same state tree format (like type 1 ZK-EVMs):
Booster rollups: rollups that execute transactions as if they are executed on L1, having access to all the L1 state, while also having their own storage. This scales both execution and storage on L2, using the L1 as a shared base.
Booster rollups as ZK coprocessors: ethresear.ch/t/booster-roll…. You can read a summary below.
To recap: Booster rollups are rollups that execute transactions like they are executed on L1, having access to all the L1 state, but they can also have their own storage.
Booster rollup update!
Quite a few things have changed so an update seemed necessary.
The latest WIP design doc can be found here: taikoxyz.notion.site/Booster-rollup…
Below a summary of the most important stuff.
Using assembly, and likely still contains some mistakes, but ~80% gas improvement, still some small improvements left probably: github.com/Brechtpd/base6…
I made a @metamask_io plugin that can be used to sign zkRollup transactions for exchanges built on @loopringorg in the same way (or even better than) Ethereum transactions are signed. We're eagerly awaiting the release of MetaMask's awesome plugin system so we can start using it!
L1CALL is great. It allows the execution of L1 smart contracts directly from L2 (without persisting any of the state changes of course).
L1DELEGATECALL could also be helpful to help connect L1 and L2s and make it look more like a single parallelized execution environment.
Just in time for interop day.
A sketch of how to extend @gwyneth_taiko's synchronous composability to non-gwyneth rollups.
capricious-firefly-0c5.notion.site/Generalized-Sy…
High level and hastily written. More to come (or not if it's a bad idea, then we all simply ignore this ever happened okay).
How efficient can based rollups get?
In an ideal world, there are lots of based rollups, lots of transactions, some blob data sharing service, and each L1 block makes the most of L1 blockspace.
Pat on the back, pat on the butt, good work team, we’re done.
But, read on.
Transactions vs state diffs for rollup DA. A classic discussion. But an interesting one, especially with multiple chains interacting with each other.
Recently I started to appreciate state diffs more and more for their simplicity and efficiency.
Some reasons below.
Created an EIP for improved introspection capabilities in Ethereum blocks: github.com/ethereum/EIPs/…
The proposal makes it efficient to switch between L2 and L1 execution while ensuring data consistency, something that is especially useful for synchronous composability with L1.
Loopring is a zkRollup, ALL the data is available on Layer 1! It depends on the layer 2 project how this data needs to be decoded, but that's also publicly available. It's just a bit harder to read compared to layer 1. You can check our Dune how to do this (with source code!).