Authors: Benedikt Bünz, Ben Fisch, Ellie Davidson
We thank Justin Drake, Maryam Bahrani, Tim Roughgarden, Scott Kominers, Davide Crapis, Christoph Schlegl, Bruno Mazorra, Philipp Strack, and others for helpful discussions and feedback on our design. Thanks to Ed Felten for pointing out a mistake in the analysis section of a previous version.
Espresso proposes a marketplace for sequencing. For high-level motivation and background, please read our previous post Based Espresso: ad-hoc shared sequencing. In this post, we present the detailed marketplace design along with justifications for our design decisions.
Espresso can provide the following separate but complimentary services:
The marketplace has several advantages, including the benefit of outsourcing the sequencing to specialized parties. The most significant benefit, however, is that sequencers that buy the sequencing rights for multiple rollups can guarantee atomic execution between these rollups. Atomic execution allows sequencers to satisfy cross-rollup user intents and give strong preconfirmations for cross-rollup transactions. We discuss the benefits of this ad-hoc shared sequencing in this article.
In this post, we lay out the design and analyze the properties of the Espresso marketplace. The HotShot finality gadget, which you can read more about here and here, is independent of the marketplace, but serves multiple essential functions:
Our marketplace has two primary goals:
Additionally, the marketplace should have the following properties:
To achieve the above goals and properties, we use a combinatorial lottery mechanism to assign sequencers to particular rollup blocks. Potential sequencers act as buyers in the lottery by purchasing lottery tickets for bundles of rollups. Rollups act as sellers, selling their sequencing rights on a per-slot basis. If a potential sequencer has a winning ticket for a particular bundle of rollups for a specific slot, they become the shared sequencer for those rollups during that slot.
First, we specify how the sequencer assignment mechanism can be run as a combinatorial auction. Then, we show how to transform it into a lottery and discuss the advantages of a lottery versus an auction.
The combinatorial auction can be viewed as a first-price combinatorial pay-as-you-bid auction that consists of three phases: the bidding phase, assignment phase, and sequencing phase.
We make several assumptions before we further discuss the auction:
High level schematic of the mechanism and sequencing design:
During the bidding phase, each potential sequencer submits bids to the marketplace for the bundles they want to sequence. Sequencers can submit bids on any bundle they wish. All bids are public, and potential sequencers can submit as many bids as they'd like before the end of this phase. Potential sequencers pay their bids upfront when submitting their bid, like in pay-as-bid auctions. Paying bids up front serves two purposes: First, it ensures sequencers have adequate funds to cover their bid. If bids were paid at the time of the block proposal, a malicious sequencer could submit an adequately funded bid and win the auction but drain their funds before the bid is executed, resulting in gaining sequencing rights for free. Secondly, pay-as-bid auctions have advantageous economic incentives, which we will discuss later. Note that non-winning bids will always be refunded.
The bidding phase takes place well before the sequencing slot. This is necessary to allow the marketplace time to calculate the auction winners and make them known to the HotShot finality gadget.
The assignment phase (also sometimes reffered to as closing phase) determines the auction's outcome and assigns sequencers according to that outcome. The auction outcome is determined by selecting the set
More specifically, let there be
Note that since bundles can consist of any combination of rollups in
Real-world bundles will likely be a small subset of all possible bundles since not all bundle possibilities will make economic sense to bid on. Thus, the marketplace will likely only have to solve across a few combinations of bundles.
We can optionally timebox solving for the winning set
There is a challenge period during which anyone can submit a more optimal solution. Since all bids are public, any party can submit a solution.
Since a solution is the sum of bids across all bundles in the set, it is easy to verify that one solution is more revenue-maximizing than another by simply comparing the sums of their bundle values.
At the end of this phase, the finality gadget finalizes the auction outcome.
The auction winner of each bundle inside the winning set
Recall that one of our primary goals was to ensure rollups are always better off participating in the marketplace than sequencing alone. Therefore, given a particular auction outcome, we must split the revenue amongst the rollups. If the winning set
That is, the rollup receives an amount of the shared sequencing revenue proportional to the highest singleton bundle bid, which signifies the revenue a rollup could have made on its own.
The marketplace charges a small fee. That fee is burned and designed to disincentivize, setting a dishonestly high reserve price. The fee consists of two components: a fee proportional to the reserve price and a fee proportional to the shared sequencing revenue.
The marketplace does not touch rollup's execution fees (i.e., gas fees). These remain as they are today. Additionally, sequencers submit their blocks to the HotShot finality gadget. HotShot ensures that after submission, no one can change the order of transactions for a rollup. This allows the next sequencer to build on the previous block safely and also enables faster bridging.
The combinatorial auction fairly splits the revenue among rollups and ensures that sequencers that value rollups the most earn sequencing rights. One concern with auctions, however, is that the same party will win too often.
Recall that the auction is run before the block data is known. This means sequencers bid based on the expected value of bundles instead of their real value (this is different from the current PBS in Ethereum). This expected value should remain the same over time. Therefore, the same sequencer may win the same rollup in every instance of the auction.
We convert the combinatorial auction into a combinatorial lottery to mitigate this concern. Our design has similarities to the recently proposed execution tickets idea. We describe the core changes below:
We propose a possible ticket price adjustment algorithm below. We model the design after EIP1559 and the difficulty adjustment of PoW. We invite the community to analyze this proposal and suggest other approaches.
There is a target amount of tickets
Ticket price: The x-axis is the percentile of the ticket sold. The y-axis is the price assuming
In the second plot, we show how to compute the ticket price for the next lottery iteration. It is adjusted based on whether there was an over or under-demand for tickets in the previous iteration. We ensure the ticket price at most doubles or halves between any two iterations.
Plot for update function, with
As we laid out in our Based Espresso post, the Espresso marketplace and finality gadget are most powerful when the L1 proposer is the sequencer for one or multiple rollups. The reason is that the L1 proposer can simultaneously build the L1 block along with the rollup blocks, allowing it to satisfy user intents and enable interoperability across both the rollups and the L1. This design satisfies the definition of based sequencing.
If we run the marketplace lottery within the lookup time of the L1 proposer, then the L1 proposer can participate in the lottery like any other potential sequencer. However, this still does not guarantee that the L1 proposer will win the sequencing rights, as it might get unlucky in the lottery. To alleviate this problem, we use a simple idea: give the L1 proposer a right-of-first-refusal. After all the lottery tickets have been purchased for a particular slot, the L1 proposer can opt to buy out all the tickets for a winning bundle (or multiple bundles). This gives it the exclusive rights to build the L1 block and the rollup blocks for rollups within that bundle. The right-of-first-refusal does not require any changes to the L1. Only that the L1 proposer optionally takes this so-called right of first refusal. The L1 proposer would reimburse the owners of the winning tickets for their tickets plus an optional surcharge.
We now analyze the different properties of the marketplace and whether they achieve the desired goals laid out earlier. We give informal arguments, but the analysis of each property deserves further study and research.
Optionality ensures that an honestly reporting rollup will receive more revenue from the marketplace than it could have generated on its own. This is achieved by the rollups' ability to set a reserve price. The rollup is not allocated to a marketplace sequencer if no bid clears the reserve price.
The marketplace is efficient if it allocates the sequencing rights of a rollup to the sequencer that values it the most (perhaps as part of a bundle). This guarantees that if two rollups have shared sequencing complementarities, they will necessarily be allocated together. We make the simplifying assumption that all bidders in the marketplace view all goods, i.e., all rollup sequencing rights, as complements. The justification is that a sequencer controlling multiple rollups can always resell the individual sequencing rights.
We first analyze the efficiency of the auction variant of the marketplace. The combinatorial auction picks the allocation that maximizes the auction revenue. This winner determination is equivalent to the efficient allocation if all marketplace participants are honest. While we do not claim that the marketplace is entirely incentive-compatible, we postulate that the combinatorial auction still delivers a highly efficient outcome in equilibrium. Testing this hypothesis requires an equilibrium analysis. However, it was shown that in a wide range of domains and under almost any payment rule, combinatorial auctions are highly efficient in equilibrium.
Additionally, we do not run a combinatorial auction but a lottery. A lottery is isomorphic to a pay-as-bid auction where multiple bidders (who buy lottery tickets) pool their funds together to form a single bid with a proportional allocation. Note that while this can lead to lower revenue it does increase the diversity of winners. As a simple example consider an infinitely divisible good being sold, where both bidders have value
The marketplace is run as a repeated game, selling essentially the same good each round. This should significantly improve stability, as whenever the equilibrium is reached, the pricing of bundle lottery tickets should stay constant, as both the goods and the bidders remain essentially identical.
The marketplace inherently helps decentralization as it enables rollups, which today almost entirely use centralized sequencers to pass off the sequencing rights without having to relinquish the sequencing revenue. Additionally, we designed the mechanism to be a lottery instead of an auction. The key motivation is that multiple bidders can buy lottery tickets for the same rollup (or rollup bundle). The sequencing rights will be randomly split between all the lottery tickets. However, this begs an obvious question:
Why wouldn't the bidder with the highest value buy all the lottery tickets for a particular rollup?
We answer this question with multiple arguments:
Overall, this question deserves significantly more investigation, but point 4 is likely the strongest argument. The same issue arises in execution tickets and is discussed under multi-slot MEV here. Execution tickets use a simplified version of this design, where only a single sequencing right is sold.
We do not claim that this mechanism is incentive-compatible.
The unique incentive-compatible and efficient mechanism is the famous VCG mechanism. However, there are many practical and theoretical reasons why the VCG mechanism is often not the best choice in practice. The VCG mechanism does not even guarantee that the market is balanced, i.e., the sellers (in our case, the rollups) receive at most as much as the buyers (sequencers) bid.
Despite this, we hope that the repeated nature of the mechanism will enable participants to execute a winning strategy efficiently. To aid the repeated nature of the auction, we propose a smooth price update rule, which smoothly adjusts the lottery ticket price from round to round if there is over or under demand. This update rule aims to aid in price discovery and equilibrium finding.
Rollups may also sell restricted sequencing rights (e.g., that are subject to an ordering policy, inclusion list, etc, but that is beyond the scope of this article). ↩︎