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

Build auctioneer docker image in CI #1820

Closed
itamarreif opened this issue Nov 19, 2024 · 2 comments · Fixed by #1839
Closed

Build auctioneer docker image in CI #1820

itamarreif opened this issue Nov 19, 2024 · 2 comments · Fixed by #1839
Assignees
Labels
auctioneer ci issues that are related to ci and github workflows docker ignore-stale Override for issues or PRs which should not be removed if stale.

Comments

@itamarreif
Copy link
Contributor

itamarreif commented Nov 19, 2024

We should build the auctioneer image in CI. Since it hasn't been added to CI, the current workflow requires rebuilding the image locally and loading it into the cluster.

This is complicated by the fact that there are multiple in flight prs for adding the chart, the binary, modifications to the sequencer, etc. that all require changing branches before rebuilding the image.

┆Issue Number: ENG-1020

@itamarreif itamarreif added ci issues that are related to ci and github workflows docker auctioneer labels Nov 19, 2024
@itamarreif itamarreif self-assigned this Nov 19, 2024
@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 joroshiba added the stale label Jan 4, 2025
SuperFluffy pushed a commit that referenced this issue Jan 10, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
## Summary
This adds the auctioneer binary to the docker build workflow.

## Changes
- add the auctioneer to the docker-build github workflow

## Changelogs
No updates required.

closes #1820
@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 Jan 11, 2025
SuperFluffy pushed a commit that referenced this issue Jan 13, 2025
## Summary
This adds the auctioneer binary to the docker build workflow.

## Changes
- add the auctioneer to the docker-build github workflow

## Changelogs
No updates required.

closes #1820
SuperFluffy pushed a commit that referenced this issue Jan 14, 2025
## Summary
This adds the auctioneer binary to the docker build workflow.

## Changes
- add the auctioneer to the docker-build github workflow

## Changelogs
No updates required.

closes #1820
@SuperFluffy SuperFluffy reopened this Jan 16, 2025
@syedali012 syedali012 added the ignore-stale Override for issues or PRs which should not be removed if stale. label Jan 30, 2025
github-merge-queue bot pushed a commit that referenced this issue Feb 14, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
## 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 block[^1] via a Sequencer node's
`astria.sequencerblock.optimistic.v1alpha1.OptimisticBlock` service, and
forwards it to its Rollup node's
`astria.auction.v1alpha1.OptimisticExecutionService` for 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's `astria.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_sync` to 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.

[^1]: A proposed Sequencer block is that data structure that comes out
of the Astria Sequencer network's CometBFT process-proposal step.

## Changes
- Add crate `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).
- Bump workspace dependency `tokio_utils` to `0.7.13` to get access to
`CancellationToken::run_until_cancelled`
- Rename execution APIs `astria.bundle` to `astria.auction`
- Add domain type `SequencerBlockCommit` to new
`astria_core::sequencerblock::optimistic::v1alpha1` submodule, following
protobuf spec naming conventions (the other domain types remain
exclusive to auctioneer for now).
- Implement `astria_core::Protobuf` for `FilteredSequencerBlock` to get
access to the wiretype name in error and log messages.
- Refactor `astria_sequencer::sequencer::start_grpc_server` to
`astria-sequencer::grpc::serve`
- Add module `astria_sequencer::grpc::optimistic` implementing the
`astria.sequencerblock.optimistic.v1alpha1.OptimisticBlock` gRPC service
- Refactor `astria_sequencer::app` module to implement an `EventBus`
that is used by the gRPC service to subscribe to new events (right now,
only proposed blocks and commits).
- Add setting `ASTRIA_SEQUENCER_NO_OPTIMISTIC_BLOCKS` to toggle the
optimistic block service in Sequencer
- Add chart `charts/auctioneer`
- Update `charts/evm-rollup/files/genesis/geth-genesis.json` to set
`astriaAuctioneerAddresses`
- Update `charts/sequencer/templates/configmaps.yaml` to to set
`ASTRIA_SEQUENCER_NO_OPTIMISTIC_BLOCKS`
- Update `justifle` to understand how to docker-build auctioneer
- Add job `auctioneer` to 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_latency` histogram (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

---------

Co-authored-by: itamar <[email protected]>
Co-authored-by: Bharath <[email protected]>
Co-authored-by: quasystaty <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
auctioneer ci issues that are related to ci and github workflows docker ignore-stale Override for issues or PRs which should not be removed if stale.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants