Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Astria Auctioneer MVP #1533

Open
3 tasks
itamarreif opened this issue Sep 19, 2024 · 3 comments · May be fixed by #1839
Open
3 tasks

Astria Auctioneer MVP #1533

itamarreif opened this issue Sep 19, 2024 · 3 comments · May be fixed by #1839
Assignees

Comments

@itamarreif
Copy link
Contributor

itamarreif commented Sep 19, 2024

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

optimistic auction state machine

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:

  1. 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).
  2. 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).
  3. 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.
  4. 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

  1. The Sequencer will stream blocks to the Auctioneer optimistically, i.e. before they are finalized (ProcessProposal).
  2. 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

Envisioned high level data flow

![image](https://github.com/user-attachments/assets/4f144092-4b2e-427a-9aa1-a1b797431024]

@joroshiba
Copy link
Member

This issue is stale because it has been open 45 days with no activity. Remove stale label or this issue
be closed in 7 days.

@joroshiba
Copy link
Member

This issue was closed because it was stale

@joroshiba joroshiba closed this as not planned Won't fix, can't repro, duplicate, stale Dec 30, 2024
@SuperFluffy SuperFluffy reopened this Jan 7, 2025
@SuperFluffy
Copy link
Member

This is ongoing.

@SuperFluffy SuperFluffy changed the title Auctioneer Production MVP Master Issue Astria Auctioneer MVP Jan 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants