You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Astria Auctioneer runs auctions for a rollup's top of block by allowing the Rollup to optimistically execute proposed Sequencer Blocks.
First price auction flow
The Auctioneer will run a first price auction for its bundle slot. In place of the SizedBundle in the composer, which packs bundles on a FIFO basis up to a given size, the auctioneer will have an OptimisticAuctionBundle which will run a first price auction for incoming bundles based on their associated fee.
The auction for the slot will work as follows:
Start the auction after a block is executed optimistically and the result is streamed from the BundleService. In order to address reorgs, in the event that an optimistic execution result is received while an auction is running, the running auction will be thrown out (since the bids were checked against balances in a stale block).
Process incoming bundles according to a first price auction (replace the bundle with the current highest bid by any incoming bundle with a higher bid).
After a block commitment is received, the auction will start a timer that will tick after latency_margin. Note that due to single slot finality in CometBFT, it is assumed that a block commitment will follow an optimistic block and the auction won't be preempted during the latency_margin by a following optimistic block.
After the timer ends, the auction result will contain the one bundle with the highest bid. The Auctioneer will submit this bundle.
Sequencer side implementation
In order for the Auctioneer to drive optimistic block execution in Geth, it needs to receive a stream of optimistic blocks and block commitments. As described in the PR introducing this API:
The Auctioneer receives blocks optimistically from the sequencer in order to maximize the auction duration.
After a block is committed, the Auctioneer will submit the highest paying bundle for inclusion by the sequencer.
Optimistic Block Stream
The Sequencer will stream blocks to the Auctioneer optimistically, i.e. before they are finalized (ProcessProposal).
The Sequencer will also stream block commitments to the Auctioneer, which mark blocks as final thanks to CometBFT's single slot finality.
This functionality needs to be optional, as only one sequencer node in the network needs to be serving this stream (i.e. the sequencer node run alongside the Auctioneer, but not any of the ones connected to a Composer).
Required charts for deployment
We need to add a Helm chart for deploying the Auctioneer. This Helm chart should support all necessary configurations to deploy the Auctioneer in our local Kubernetes environment, such as :
Connect to the optimistic block gRPC service served by a sequencer node
Connect to the sequencer node's ABCI server for transaction submission
Connect to the optimistic execution and bundle gRPC services served by the rollup node
The Astria Auctioneer runs auctions for a rollup's top of block by allowing the Rollup to optimistically execute proposed Sequencer Blocks.
First price auction flow
The Auctioneer will run a first price auction for its bundle slot. In place of the
SizedBundle
in thecomposer
, which packs bundles on a FIFO basis up to a given size, theauctioneer
will have anOptimisticAuctionBundle
which will run a first price auction for incoming bundles based on their associated fee.The auction for the slot will work as follows:
BundleService
. In order to address reorgs, in the event that an optimistic execution result is received while an auction is running, the running auction will be thrown out (since the bids were checked against balances in a stale block).latency_margin
. Note that due to single slot finality in CometBFT, it is assumed that a block commitment will follow an optimistic block and the auction won't be preempted during thelatency_margin
by a following optimistic block.Sequencer side implementation
In order for the Auctioneer to drive optimistic block execution in Geth, it needs to receive a stream of optimistic blocks and block commitments. As described in the PR introducing this API:
This functionality needs to be optional, as only one sequencer node in the network needs to be serving this stream (i.e. the sequencer node run alongside the Auctioneer, but not any of the ones connected to a Composer).
Required charts for deployment
We need to add a Helm chart for deploying the Auctioneer. This Helm chart should support all necessary configurations to deploy the Auctioneer in our local Kubernetes environment, such as :
Envisioned high level data flow
![image](https://github.com/user-attachments/assets/4f144092-4b2e-427a-9aa1-a1b797431024]
The text was updated successfully, but these errors were encountered: