Proposal to configure relay builder endpoints in validator clients

This is just a topic to gauge interest / ideas before maybe drafting an EIP, all ideas are welcome.

As of today, the relay builder endpoints are configured at the beacon level which means that all validation keys managed by a beacon use the same builders. This is unfortunate if you want to have fine-grain selection of relay builders as it implies to duplicate your infrastructure with the combination of configurations you want to support.

Examples of use-cases:

  • testing an experimental relay builder on some specific validation keys,
  • have some validation keys use ofac/non-ofac relay builders,

It’d be convenient for those cases to be able to specify the relay builder endpoint to be used at the validator client level in the proposer config of the key. For instance:

        # Local build (no change)
          fee_recipient: 0x15f4b914a0ccd14333d850ff311d6dafbfbaa32b
            enabled: false
        # Relay build (new optional relay setting)
          fee_recipient: 0x15f4b914a0ccd14333d850ff311d6dafbfbaa32b
            enabled: true
            endpoint: "<http://mev-boost-with-ofac-compliant-relays>..." # Relay to use for this key
          fee_recipient: 0x15f4b914a0ccd14333d850ff311d6dafbfbaa32b
            enabled: true
            endpoint: "<http://mev-boost-with-experimental-relays>..." # Relay to use for this key

In this example, blocks proposed by the second and third validation keys would go to the specified relay builder endpoint. If no specific endpoint is set, the beacon would use its current configured relay endpoint (so it would be backward compatible with existing setups).

Such a change would require the following:

  • In the Beacon-API, /eth/v1/validator/prepare_beacon_proposer to support the optional endpoint field (so, validators and beacons to be updated),
  • Whenever a block is to be proposed using a builder, the beacon will now need to use the corresponding builder endpoint for the key, or fallback to its default endpoint.

Possible alternatives:

  • implement the key<>relay mapping in dispatch relay builders such as MEV-boost, this result in a more complex management (as you need to properly keep in sync your validator config with your MEV-boost config),
  • go one step further and to specify a list of relay builders at the validator client level, beacons would pick the best proposal out of the list, this would simplify infrastructure setups as there wouldn’t be a need to use MEV-boost to use multiple relay builders,
  • your cool idea here.

A previously (closed) MEV-boost PR about this topic, where the pubkey: relays mapping was done directly into MEV-boost: