-
Notifications
You must be signed in to change notification settings - Fork 208
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
Dynamic Relay Configuration Proposal #455
Comments
This is pretty cool, great work! Will review in detail these days. Btw, love the speed improvements of 25% on the side 🔥 🤠 |
adding support for per-validator relay configuration is the right direction I do wonder if there are ways to link this to the key-manager APIs https://github.com/ethereum/keymanager-APIs so we can avoid a proliferation of configuration... sketch of proposal: edit: I guess the keymanager-APIs could expose the RCP endpoint and we can unify that way |
Hey @ralexstokes, At the moment if the response produced by |
Dynamic Relay Configuration Proposal
This proposal summarises our take on Support Validator Account Level Relay Choice and Validator Level Relay Configuration as part of ConsenSys Codefi team responding to the features our customers requested.
Requirements
Many stakers run multiple keys on the same validator/consensus layer client. MEV-Boost, as currently implemented, requires all keys on the same node to point at the same set of relays.
The objective of this proposal is to allow stakers to specify different relays for different validators without having to increase their consensus layer client population:
Acceptance Criteria
Definitions
Relay Configuration Provider (RCP) holds information about validators and their corresponding relays. For example it may be as simple as a file or a remote API endpoint which returns a Proposer Config - a JSON discussed in Support validator account level relay choice issue.
Relay Configuration Manager (RCM) manages relays and their configurations. It fetches the configuration from an RCP, validates it and then populates an in memory Relay Registry which is basically a map of all the registered validators and their corresponding relay configs. The Relay Registry is then used to lookup relays for a given validator when requested.
Suggested Changes
We change MEV-Boost to:
When RCM is created at service startup it will try to fetch the configuration from an RCP. If this operation fails, the service will refuse to fast.
Then a background job is started to periodically synchronise the configuration. The job is optional and enabled only when proposer-config-refresh-enabled param is set to true. It will run every 3.2 mins (half an epoch). It is important to note that the Relay Registry won’t be updated if the configuration is malformed or invalid, in which case the previous valid configuration is used.
MEV-Boost then uses RCM to lookup information about relays for a given validator on every request to any endpoint (register validator, get header, get payload) via API.
Schema
Given the expectation to support multiple configuration sources, the implementation should align on a common schema. The schema we follow is the one discussed in the proposed changes and already used by Teku and available via validators-proposer-config option. The intention is to allow specifying a set of specific relays per validator and otherwise fallback to a common set of relays.
The proposer_config section contains the mapping from validator public key to the fee recipient and builder config. Inside the builder section, there is a mandatory enabled field. If true, the relays should be used by MEV-boost. If false, then MEV-Boost should ignore this key (and skip any incoming requests for this validator key).
If a validator key is not present inside the proposer_config, then the configuration inside default_config should be applied.
F.A.Q
Are the proposed changes backward compatible?
Yes they are. Using the newly introduced features is optional. At the moment we suggest a binary choice: either to use RCM or to use MEV-Boost in the conventional way.
What RCPs are supported?
At the moment we have a file-based RCP available via MEV-Boost’s proposer-config-file option and an API-based RCP configured via proposer-config-url.
What happens when the Relay Configuration Provider is down?
When RCM is used then:
What happens if the config is changed after a validator has been registered?
The changes will take effect in the next epoch.
Should remote RCP be exposed to the internet?
When using a remote RCP we strongly encourage running it in a trusted DMZ, preferably in the same network as mev-boost. We don’t expect it to be publicly available.
Test cases
Valid Cases
Invalid cases
Benchmarks
Seconds per operation:
Bytes per operation:
Allocations per operation:
The text was updated successfully, but these errors were encountered: