Set up MEV-Boost

Open source middleware run by validators to access a competitive block-building market.

Quick Steps

Make sure you have set up your Execution and Consensus Clients.

For a quick start:

  1. Install MEV-Boost DApp

  2. Enable MEV-Boost in the Consensus Client

This is all that is required to get MEV-Boost up and running.

Optionally, you can choose and configure your relays, and adjust the -min-bid value.

The following guide provides more details on each step.

What is MEV-Boost?

MEV-Boost refers to the practice of extracting maximal value (MEV) from trading activities on blockchain networks.

When creating a block, validators typically follow a simple algorithm of bundling pending transactions, prioritizing those with higher tips, and submitting the block to the chain. However, some entities employ sophisticated algorithms to modify transaction ordering and introduce new transactions in some cases to extract additional ETH from a block proposal.

MEV-Boost offers an opportunity for solo home stakers to access this extra or "boosted" rewards when proposing a block. To achieve this, the MEV-Boost DApp is used in conjunction with Execution and Consensus Clients.

The use of MEV-Boost is optional but highly recommended.

MEV-Boost rewards are Execution Layer rewards and are sent to your Fee Recipient Address once received.

Before your begin

Before proceeding, ensure that you have installed an Execution Client (Geth or Nethermind), and a Consensus Client (Teku, Prysm or Nimbus).

See Setting up the ETH Clients for instructions.

Step 1: Install MEV-Boost

Navigate to the DappStore and locate the DApp named ETH Staking MEV-Boost and click Install.

Step 2: Enable MEV-Boost in your Consensus Client

Open your Consensus Client (Teku, Prysm, or Nimbus). Select the Settings tab.

Locate the checkbox to Enable MEV-boost (near the bottom of the page). Check it, then click Apply changes.

To confirm that MEV-Boost is up and running, check the Logs of the Consensus Client. The Logs will periodically report that an external builder is being used.

Prysm:

level=“info” msg=“Submitted builder validator registration settings for custom builders”

Nimbus:

Using external payload builder 

Teku:

INFO  - Validator   *** X out of X validator registration(s) were successfully sent to the builder network via the Beacon Node.

where X is the number of relays configured.

Step 3: (Optional) Choose your Relays

The default MEV-Boost relay setting includes a relay that was previously available but is now deprecated:

  • Block Native (builder-relay-mainnet.blocknative.com)

To prevent excessive error messages in the Logs, you can remove this relay from your RELAYS setting or select alternative relays. Please follow the instructions below to make this adjustment.

Note that while these error messages can be numerous, they are harmless and do not impact the functionality of MEV-Boost.

Besides the Block Native relay, the following relay is also deprecated.

  • bloXroute Ethical

If you have this relay included in your RELAYS setting, it is recommended that you remove it or choose alternative relays. This will help prevent any excessive error messages in the Logs.

When utilizing MEV-Boost, you are essentially entrusting the task of block production to marketplace aggregators known as relays. You have the option to select one or multiple Relays to connect with.

When your validator is assigned to produce a block, all the configured relays will submit their bids. These bids can be viewed as bundled blocks that are ready for your validator to sign, along with associated rewards for you.

As the block proposer, you have the privilege to choose the highest bid among the options received. MEV-Boost streamlines the entire process of receiving the bids, proposing the winning block, signing it, and collecting the rewards associated with it. This allows you to maximize your potential earnings.

There are multiple relays in the marketplace to choose from. A definitive list can be found here:

On the Relay List, you can find details of each relay by different providers, such as Flashbots, Ultra Sound Money, bloXroute, and so on.

How do I choose a Relay?

To gain an understanding of the current relay market share and median rewards, visit the Relays page on Rated.Network.

When selecting a relay, the primary consideration, aside from profit potential, is whether "compliance" aligns with your values. Compliance refers to adhering to US sanction rules, which may involve censorship. On the other hand, being non-compliant means not being restricted by US sanction rules and rejecting censorship. Your choice should be based on your individual circumstances. Please note that this information does not constitute legal advice.

Special Note for Rocketpool Users

Rocketpool currently accepts only a smaller subset of relays. See information here: https://docs.rocketpool.net/guides/node/mev#block-builders-and-relays

How do I configure the Relays?

On the MEV relay list for Mainnet, scroll to the far right of the table to find the Relay URL's. These are long strings of letters and numbers and follow the pattern:

https://0x...a-long-public-key...@relay-domain

You will set the RELAYS environment variable using these URL's.

It is recommended to use a text editor for easier editing. Copy the chosen Relay URL(s) to your text editor. If you choose to use multiple relays, the format of the combined URL string shall be:

relay1,relay2,relay3

and so on, where relay1 etc. are the long URL strings you copied from the relay list. Ensure there are no spaces before and after the commas.

Once you're ready, go to the Management Page of the MEV-Boost DApp. Scroll down to the Environment variables panel. Replace the value of RELAYS variable. Hint: position your cursor within the "Value" box, press ctrl+A (command ⌘+A on Mac) to select the entire string in the box, and press delete to remove the existing string. Then copy and paste in your new relay string.

Click Update environment variables to apply the change.

Step 4: (Optional) Set -min-bid

The default setting for EXTRA_OPTS is -min-bid 0.05. This means that if the relay bids offer less than 0.05 ETH in rewards, MEV-Boost will not choose those bids and will instead produce blocks locally.

The idea behind this approach is to outsource block production to builders for valuable blocks, while handling less valuable blocks ourselves. This strikes a balance between profitability through outsourcing and decentralization through local production.

Vitalik says:

A min bid of 0.05 would mean you produce nearly half the blocks yourself (very strong censorship resistance) but only sacrifice a tiny bit of profit.

For a more detailed analysis, see: https://writings.flashbots.net/the-cost-of-resilience

You have the option to keep the default setting or experiment with different -min-bid values. However, for most users, the default setting is sufficient.

Step 5: Monitoring

Confirming correct relay setup

To confirm that the relays have been successfully configured, check the MEV-Boost Logs. A successful startup shall look like the following:

In this example, we have configured 4 relays, and the Logs confirm that they have been successfully picked up.

The periodic status messages with a 200 code are a good sign. They indicate that the relays are functioning properly.

However, there was an error message that appeared in this example:

level=error msg="relay status error - request failed" error="Get \"https://aestus.live/eth/v1/builder/status\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)" 

This error indicates that one of the relays, in this case, "aestus.live", is not responding. This is usually a temporary issue and is expected to resolve on its own.

If you consistently encounter this error, it may indicate a problem with the relay; especially if you had included one or more of the "deprecated" relays in your RELAYS setting. In such cases, you can consider removing them from your RELAYS setting.

What happens if the relays are not working?

If none of your configured relays are functioning or if there is a configuration issue, your Consensus Client will simply fallback to using the locally generated block. You won't miss the block proposal, although it is possible that you may miss out on a potentially higher reward.

In these situations, you might come across the following message in your Consensus Client.

Teku:

WARN  - The builder is not available: java.util.concurrent.TimeoutException. Block production will fallback to the execution engine.

Prysm:

level=fatal msg="proposer settings is empty after unmarshalling from file specified by proposer-settings-file flag" 

My validator has proposed a block! How do I know which relay was used?

You can check on the beaconcha.in site. Follow these steps:

  1. Visit the beaconcha.in site.

  2. Navigate to your Validator Page on beaconcha.in

  3. Go to the Blocks tab, where you will find information about your proposed blocks.

  4. Look for the specific Epoch, Slot, and Time when your block was produced.

  5. Click on the link for the Slot to access the Slot Page on beaconcha.in

On the Slot Page, you will find details about the block and its contributors. If the block was contributed by a relay (or multiple relays), you will see this information displayed under the Slot number. In this example, the block was supplied by the Ultra Sound relay.

Last updated