Merged
Conversation
c26dd21 to
779b36f
Compare
ce75877 to
e95f4ab
Compare
e95f4ab to
556bb15
Compare
556bb15 to
fd44c8c
Compare
fd44c8c to
87593ec
Compare
87593ec to
5594ba3
Compare
b213ddb to
2d75a89
Compare
2d75a89 to
3e4e7b9
Compare
quasystaty1
approved these changes
Feb 11, 2025
Contributor
quasystaty1
left a comment
There was a problem hiding this comment.
infra approval. Note, a test is failing duo to chart dependency issue. run:
helm dependency update ./charts/evm-stack to resolve.
aajimal
approved these changes
Feb 11, 2025
joroshiba
approved these changes
Feb 12, 2025
Member
joroshiba
left a comment
There was a problem hiding this comment.
approved for API and infra w/ minor nits on proto naming stuff
|
|
||
| import "google/protobuf/any.proto"; | ||
|
|
||
| message GetBidStreamRequest {} |
Member
There was a problem hiding this comment.
nit: try to keep the request and return types together in file definition
Contributor
Author
Member
There was a problem hiding this comment.
again very nit, and we don't do a great job of this elsewhere but I think bid.proto is not a great name for this.
We could do 1-1-1, I'd be generally in favor but this isn't our operating practice to date.
I think service.proto or auction_service.proto would be a reasonable file name here outside of doing that?
Contributor
Author
This was referenced Feb 13, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This patch adds the Astria Auctioneer service to the monorepo.
Background
The Astria Auctioneer auctions the top of the next Rollup to the highest bidder.
It receives a proposed Sequencer block1 via a Sequencer node's
astria.sequencerblock.optimistic.v1alpha1.OptimisticBlockservice, and forwards it to its Rollup node'sastria.auction.v1alpha1.OptimisticExecutionServicefor optimistic execution by the Rollup. The executed optimistic block hash returned by the rollup triggers Auctioneer to start an auction. It then receives bids from the Rollup node'sastria.auction.v1alpha.AuctionService, selecting the winner using a first-price mechanism.The auction winner is finally submitted to the same Sequencer node using a standard ABCI
broadcast_tx_syncto the Sequencer network.Auctioneer does not act as a server in its own right but connects as a client to a Rollup node and to a Sequencer node.
Changes
crates/astria-auctioneer. It is implemented as a simple event loop that multiplexes proposed blocks and finalized commits (from sequencer), as well as executed rollup blocks and bids (from the rollup).tokio_utilsto0.7.13to get access toCancellationToken::run_until_cancelledastria.bundletoastria.auctionSequencerBlockCommitto newastria_core::sequencerblock::optimistic::v1alpha1submodule, following protobuf spec naming conventions (the other domain types remain exclusive to auctioneer for now).astria_core::ProtobufforFilteredSequencerBlockto get access to the wiretype name in error and log messages.astria_sequencer::sequencer::start_grpc_servertoastria-sequencer::grpc::serveastria_sequencer::grpc::optimisticimplementing theastria.sequencerblock.optimistic.v1alpha1.OptimisticBlockgRPC serviceastria_sequencer::appmodule to implement anEventBusthat is used by the gRPC service to subscribe to new events (right now, only proposed blocks and commits).ASTRIA_SEQUENCER_NO_OPTIMISTIC_BLOCKSto toggle the optimistic block service in Sequencercharts/auctioneercharts/evm-rollup/files/genesis/geth-genesis.jsonto setastriaAuctioneerAddressescharts/sequencer/templates/configmaps.yamlto to setASTRIA_SEQUENCER_NO_OPTIMISTIC_BLOCKSjustifleto understand how to docker-build auctioneerauctioneerto docker-build github workflow.Testing
This patch does not contain blackbox tests because there currently is no support in the Rust ecosystem to easily mock streams. Smoke tests to submit a winning bid to sequencer and have it executed against geth will be done in a follow-up PR.
We deployed a local setup consisting of a dedicated auctioneer flame node, the auctioneer node and a sequencer with optimistic blocks enabled.
The code for auctioneer flame node can be found at astriaorg/flame#30. The auctioneer has been tested locally against this auctioneer flame node branch.
We have tested the setup by sending txs to the auctioneer flame node using spamooor. We check with logs and manually query the blocks to ensure that the tx sent has end up on the top of block of the auctioneer.
Metrics
astria_auctioneer_block_commitments_received: counter (the number of block commitments auctioneer received from sequencer over its runtime)astria_auctioneer_executed_blocks_received: counter (the number of executed blocks auctioneer received from its connected rollup over its runtime)astria_auctioneer_proposed_blocks_received: counter (the number of proposed blocks auctioneer received from sequencer over its runtime)astria_auctioneer_auctions_cancelled: counter (the auctions auctioneer cancelled over its runtime because a new proposed sequencer block cancelled a previous one and thus the auction; this might include auctions for which sumissions took too long)astria_auctioneer_auctions_submitted: counter (the auctions auctioneer successfully submitted over its runtime)astria_auctioneer_auction_bids_received: counter (total bids received over the runtime of auctioneer)astria_auctioneer_auction_bids: histogram(bids per auction labels "processed" and "dropped")astria_auctioneer_auction_bids_without_matching_auction: counter (the number of bids auctioneer received without having a matching auction running over its runtime; for example because the bid contained a difference sequencer or rollup block hashes than what the auction expected)astria_auctioneer_winner_submission_latencyhistogram (labels "success" and "error"; time from when an auction started and auctioneer received a bid for the auction)astria_winning_bid: histogram (the amount that the winning bid was willing to pay)Changelogs
Changelogs updated.
Related Issues
closes #1888
closes #1533
closes #1820
Footnotes
A proposed Sequencer block is that data structure that comes out of the Astria Sequencer network's CometBFT process-proposal step. ↩