Specify Builder Configurations and Bid selection strategies#144
Specify Builder Configurations and Bid selection strategies#144bharath-123 wants to merge 39 commits into
Conversation
| # Builders must respond by 2 seconds into the slot | ||
| # This leaves 2 seconds for local building fallback | ||
| return slot_start + BUILDER_DEADLINE_MS |
There was a problem hiding this comment.
This deadline can be just 1 sec.
| # Validate the bid | ||
| registration = registrations.get(builder_config.url) | ||
| if registration and validate_bid(state, registration, signed_bid, registration.message.fee_recipient): | ||
| bids.append((builder_config, signed_bid)) |
There was a problem hiding this comment.
Bid needs to be boosted before being added.
| | `MAX_SALT_BYTES` | `4096` | | ||
| | Name | Value | | ----------------------------------------- | | ||
| ------------------ | | `MAX_SALT_BYTES` | `4096` | | `MAX_URL_BYTES` | `4096` | | ||
| | `MAX_WHITELISTED_BUILDERS` | `10000` | | `BUILDER_DEADLINE_MS` | `2000` | | `MAX_STRATEGY_DESC_BYTES` | `4096` | |
There was a problem hiding this comment.
Need to fix formatting
6327e7e to
b4d745e
Compare
| ### `BuilderConfig` | ||
|
|
||
| ```python | ||
| class BuilderConfig(Container): |
There was a problem hiding this comment.
MEV-Boost could be a special case of just having one builder in the configuration pointing to the url of the local mev-boost container.
| and decide on the best possible bid after making all requests. | ||
|
|
||
| ```python | ||
| def query_builders( |
There was a problem hiding this comment.
Maybe it is not necessary to specify how to fetch bids and send registrations in the specification and leave this to implementation. We could just specify the BuilderConfig
|
I don't see how this replaces Mev Boost. There are two components to mev boost, one is to request bids from multiple builders/relays. The other one is to handle exchange of blind signed objects. The first part has to be implemented by CL clients on Gloas to be able to request signed bids from builders directly. The second part would be the core feature of Mev Boost that this PR does not make any mention of. |
How/where? https://github.com/flashbots/mev-boost/blob/develop/cli/flags.go selects from entities the current builder API MEV ecyosystem calls relays (which, "whitelist" is an odd word here: it's mostly that they have to be queried explicitly, not that other relays are providing information which is being ignored). It doesn't know or care about what the current builder API MEV ecosystem calls "builders". Yes, ePBS changes this terminology, but in terms of discussing what |
With ePBS, we won't have blind signed objects. With the Builder-API with ePBS, the CL client would query the block builders for all their bids, pick the winning bid, embed it to the beacon block and send the beacon block to the builder whose bid has been selected. I should note that, I intended to have this PR only for ePBS and not pre-ePBS. So we wouldn't have blind signing going forward in ePBS. |
Yes we can be more clear about the terminology here for sure. I will re-work that aspect. Ideally relays and builders are technically interchangable. |
ef29bb8 to
0c9dced
Compare
b037d16 to
43f15ca
Compare
9d5be35 to
3b5735b
Compare
This PR standardizes how clients configure builder lists and their corresponding configurations for interacting with builders over the builder-api.
New Containers
We define three new containers:
Implementation
The boost parameters (bid_boost, local_block_boost, p2p_bid_block_boost) allow validators to express preferences between different bid sources. For example, a validator might apply a 110% boost (11000 basis points) to their local block to prefer building locally unless an external bid is significantly better.
How clients fetch bids from builders and send validator registrations remains an implementation detail. This PR only standardizes the per-builder and global configurations for whitelisted builder. A client could query all builders in the whitelist in parallel to fetch their bids, then apply the configured bid_selection_strategy and boost parameters to select the winning bid.