New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Sharing a Sequencer Is Caring About Interoperability | Ben Fisch - Espresso Systems

Ethereum DenverWed, Oct 9, 2024, 12:00 AM

Speaker

Ben Fisch

Application composability has always been a driver of Ethereum’s network effects. Fragmenting Ethereum into many siloed rollups harms interoperability and liquidity. By sharing a sequencer, rollups regain interoperability through atomic bundles, shared block auctions, and safer fast bridging. APPLICATIONS FOR ETHDenver 2024: #YearOfTheSpork ARE OPEN APPLY NOW https://ethdenver.com/apply

Transcript

[Music] like I'm just going to swap the displays all there we go okay all right this talk is uh titled sharing a sequencer is caring about interoperability uh I am Ben Fish I am the CEO and co-founder of espresso systems uh I am also an assistant professor of computer science at Yale so rollups are horizontally scaling ethereum rollups are this beautiful solution that allows for sharding of computation across different applications it allows for powerful uh servers to also help much weaker nodes verify what the state is um which allows for greater decentralization of ethereum while while supporting many many more applications um it also enables virtual machine diversity so you can add new applications that are not even running the evm and uh they can just simply prove their state transitions to to the layer one so rollups are are this this this wonderful um you know Innovation over the last few years that have brought tremendous benefits to the ethereum ecosystem scalability and and and virtual machine diversity in particular um but one of the things that rollups do today is they run what are called isolated sequencers and this has an a a significant drawback the drawback is that interoperability between applications across different rollups is very limited okay bridging is slow and costly and this leads to a loss of what we call synchronous composability between applications and liquidity fragmentation and the value of ethereum is really in its unit right not fragmentation seamless interoperability of applications is the promise of trust minimized infastructure and what really differentiates web 3 from web 2 so let's take a little look at at at what the job of the rollup sequencer is and why rollups are running isolated sequencers today that in in that that hampers interoperability so the job of the sequencer is to collect transactions from users and periodically summarize the result of executing those transactions and post it to the ethereum network uh this in a ZK rollup would also come with an immediate validity proof which allows the ethereum network to verify that the state update is correct so it determines rollup blocks and which transactions are included in those rollup blocks and they ordering uh a sequencer may also run an auction uh naturally gives rise to an auction where where Builders are bidding to propose the next block and the sequencer kind of runs an auction among these Builders and that helps it produce the most valuable block it can which is the same Dynamic that happens with leaders or proposers in uh ethereum's consensus protocol now based sequencing um BAS quing which is the most recent let me just base sequencing um which is really the original version of rollups is as follows so L2 nodes just read the finalized transaction list from the L1 there's no sequencer there's no additional sequencer they just read this user send their transactions directly to the rollup smart contract and and uh L2 nodes read the finalized transaction list from the L1 they execute them and then periodically post what the state transition is along with perhaps a ZK proof um to to the layer one so by by using the layer one itself as the sequencer the advantage is one it inherits the decentralization and liveness and censorship resistance of the layer one you're not introducing this external party um and number two because all these rollups are then sharing the same sequence ER in effect it it it results in improved interoperability not only between rollups but also between rollups and layer one applications and I'll get into in a little bit more detail why that is the case but before um you know why is this important well ultimately users just want a secure convenient and lowcost experience right they don't want to think about necessarily being on one rollup versus another satisfying user intents will be most efficient across applications that are deployed to rollups with the greatest Unity not only with each other but also with smart contracts on the ethereum L1 so that's why this is so important now what so so what is enabled by having a common sequencer um between not only rollups but also the layer one what is the what is the benefit of this well the way the layer one works is that it always has a proposer that's building the next block right it has proposers and then it has validators which are are attesting and signing on the Block proposal and making sure that the network has received it and doesn't um you know forget it um so this elected proposer from the L1 if it's also producing blocks for rollups then what it can do is it can promise to users things that it will do synchronously between different rollups and maybe even the L1 itself so here's a simple example a rollup user wants to take uh you know advantage of some Arbitrage between two amm on different rollups so it says I want my two transactions on rollups A and B to execute atomically now a the L1 proposer can give this promise to the user that it will execute its transactions on both rollup a and rollup b or otherwise not included in the in the L1 block um now this doesn't give the user the same exact protection it has when just atomically taking advantage between Arbitrage of two amm that are on the ethereum L1 itself um or on the same rollup VM itself but it it's still quite powerful because the promise that the L1 proposer gives is slash all right violating A promise is a slash offense and even the user could collect damages so promises function almost like an insurance policy and and importantly the honest proposer can make these promises without any risk so it can offer very lowcost Insurance there's much higher risk without a shared proposer you can imagine that a builder would try to make the same promise to a user interacting with two different you know uh siloed rollup sequencers but rollup a sequencer or proposer might accept its transaction while the Rolla B proposer rejects it so there's no real way for this external Builder to make this promise unless there is a coordination so proposer promises or what are also known as pre-confirmation they they enable a shared proposer for a for a bundle of multiple rollups to do many things including acting as a liquidity provider making promises to satisfy arbitrary user intents Atomic execution of several transactions across different rollups they can also provide very fast confirmations of what it has proposed even with 100 milliseconds latency or less even though it takes much longer for ethereum to to to uh to finalize what what happened there is some risk that this pre-confirmation will not will will eventually be reversed but again it can act as like an insurance policy that the proposer gives to a user uh which can be checked in in uh in in very very short time it can also be used to a shared proposer can also be used to coordinate message passing between ZK provable chains so this is something that um polygon uh Ager describes um and with uh with with improvements in the latency of proving um this which which may ultimately enable us to do real-time proving even 100 millisecond latency proving then this could ultimately enable synchronous interactions between L1 and L2 contracts so again violating A promise is a slash offense and if users can collect damages for violations of these promises then pre-confirmation act as a form of insurance uh there's many examples of cross doain user intents that we might want to use pre-confirmation to satisfy some examples are capturing Arbitrage as I already gave an example of um maybe finding the cheapest way to execute an asset Swap and that may involve multiple duvi exchanges or liquidity providers across multiple chains or buying an nft on one chain with funds from another but not wanting to First bridge and swap assets unless you know that the purchase will actually succeed in the end so this sounds all great but what is basic sequencing missing right why were external sequencers introduced in the first place well number one better data compression and which ultimately translates to lower data availability costs so an external sequencer collects transactions over time and can optimize when it post them to the ethereum L1 and also fast what I will emphasize is lowrisk pre-confirmation okay what we just talked about before with L1 proposers giving promises over what might happen there's always the risk that even if they do nothing wrong their promise will be violated because ethereum could experience a reorg and uh transactions that they included could be dropped before 15 minutes have elapsed okay ultimately higher risk means that if they're going to give Insurance to users it's going to be higher cost an external sequencer can prec confirm pure L2 transactions that do not depend on any unfinalized L1 transactions with virtu no risk at all of being wrong because they have complete autonomy of what they're going to do with the rollup contract right they have an exclusive right to update the L2 state so better data compression and fast low lowrisk pre-confirmation were the real reason why why external sequencers were introduced in the first place the original Arbitron paper actually had no external sequencer these were introduced later now is there a middle ground yes base sequencing can have its cake and eat it too in in some sense too what we can do is we can introduce an external finality Gadget and we call this a a fast finality Gadget and we could have L1 validators even opt in to participate uh say using igen layer reaking as kaida was just talking about in the last talk so what does this do well the rollup smart contract on the L1 will require okay it will require transactions to be first approved by the fast finality Gap so so users are sending their transaction still to an L1 proposer the L1 proposer produces a super block for all these rollups but it needs to get it approved by the fast finality Gadget first right and then it will be post then it will be settled in the L1 um and so the role of smart contract requires this fast finality Gadget which could be a bft consensus protocol operated by an opt-in set of validators to to approve all transactions and this still maintains L1 composability because the L1 proposer is still proposing it's still building the L1 and L2 blocks together but it first just first needs noorizadeh of external sequencers that were introduced by rollups now what else is base sequencing missing especially now that we're used to rollup sequencers well me capture for rollups so enshrined rollup sequencers have additional Revenue beyond the gas fees and rollups which come from tips that users are paying for satisfaction of intents whether they're pre-confirmation tips which generalized you know order priority fees or or standard order priority fees so vanilla based sequencing is simply not economically aligned with rollups and so a solution is to have a mechanism to redistribute sequencing me that flows to the ethereum L1 or whatever is doing this shared sequencing back to rollups so we can view shared sequencing um as an auction it gives rise to this auction where proposers are bidding on rollup block bundles you can auction off the right to update all rollups or a subset of rollups at once to biders proposers are competing with each other and bidding on the right to to produce this super block okay um so the difference between shared sequencing and isolated sequencing is the difference between a shared auction versus isolated auctions right in the picture today every rollup ENT every rollup sequencer essentially auctions off the right on its own to produce the next block on that rollup whereas with something like shared sequencing or base sequencing we have a joint auction where the rollup block spaces are auctioned off all together and someone can bid on the right to produce a bundle of all rollups together now the shared auction Revenue may be higher than the combined isolated auctions but how should we share the auction Revenue with individual rollups is there a stable mechanism through which rollups can dynamically participate in this mechanism such that they're always convinced they're better off running in the joint auction than in isolation there's many analogies to this we can look at bands playing at a music festival right the festival sells tickets how is the ticket Revenue allocated among the bands travel agencies sell tickets combining flight legs from multiple Airlines how should the ticket Revenue be allocated among Airlines a toy example is a um you know you have let's say you have two companies one that manufactures left shoes one that manufactures right shoes it's obviously better to sell the shoes as a pair in a store but then how would you split the revenue between the two different companies so that they're convinced they wouldn't be better off selling left shoes and right shoes on their own so a solution is a com what's called a combinatorial auction where proposers can bid on any combination of roller bundles that they want to produce and each bid is for the right to propose this bundle of blocks in a specific slot now for each slot we would select a partition rollups into bundles that maximizes auction revenue and this can result in even multiple proposers it wouldn't necessarily be one proposer for all for all rollups in uh all the time and every rollup uh receives at least its highest bid in fact every rollup can even bid on itself which functions as what's called a reserve price a reserve price is the minimum price at which a seller is willing to sell sell a product so if a rollup bids high on itself then it can can ensure that it will at least make as much it would make running on its own in isolation if it bids too high it will be excluded from bundles that are assigned to Shared proposers now burning part of this bid can also further disincentivize what's called shill bidding where they're bidding too high and that's reducing the efficiency of of the overall allocation and this is similar to what's called a Harbinger tax so but wait how is this base sequencing right I said that base sequencing gives the right to the the L1 proposer to produce the next block not only for the L1 but for all rollups so where does this auction come in right what the hell is this auction what about the L1 proposer well this is this can also be a version of Bas sequencing okay so this is what I call Base sequencing 3.0 so after running the combinatorial auction which anyone can participate in the L1 proposer for the ethereum L1 Block in the same slot can be given the option to purchase purchase the proposal rights for any bundle it wants at the winning bid price plus perhaps a premium because it can produce even more value since it's also producing the L1 block together this price at which it it it it pays for the bundle will always exceed the sum of Reserve prices for rollups within that bundle by by Design so what is shared based sequencing after all in light of this picture here well it is a Marketplace it is a Marketplace through which rollups can sell block space to Shared proposers who create Surplus value by satisfying user intents across multiple chains and for base rollups that includes the ethereum L1 chain itself so thank you uh we are espresso systems we are building a shared sequencer and a shared sequencer that also supports base rollups too please please follow us on Twitter uh we are at espresso sis my Twitter handle is at Ben Fish and uh stay tuned for for updates we have a new test net coming out soon called [Applause] cappuccino

Automatic transcript — names and jargon may be misspelled.