Proposer MEV-Protect

Currently on Ethereum, proposers either accept the most favorable block offered by the relays or propose a self-made block. By default, there is nothing preventing builders from retaining as much block value as possible for themselves, as long as other builders provide less favorable blocks. To overcome this, bloXroute relays offer the option for proposers to refuse blocks that pay proposers less than 90% of the block value unless additional payment is offered. This means that the validator will be served blocks with over 90% of block profit. Whitelisted block builders will be subjected to a fee in order to submit blocks paying less than 90% of the block value to the proposer. This payment fee is a payment to the validator and relay in the same block.

Validator Reward (Block Value)
Action

Validator Reward >90% Block Value

Block will be accepted by relay and no fee will be taken from the builder

Validator Reward <90% of Block Value and builder is not whitelisted

Block will be rejected by the relay

Validator Reward <90% of Block Value and builder is whitelisted

Block will be accepted by relay and the block value kept by the builder will be distributed in a separate transaction. - 33% of the block value kept by the builder will be sent to the validator. - 33% of the block value kept by the builder will be sent to the relay. - 33% of the block value will remain with the builder.

This feature can only be activated when using a subset of relays that will guarantee to reject blocks that don't meet the 90% rule. Currently the bloXroute relays are the only relays that offer that but we expect other relays to follow. This feature is based on the research discussed in the paper "Decentralizing Monopolistic Power in DeFi" by Prof Sarit Markovich. If the validator registers with any non-supporting relay then a builder will not be forced to pay at least 90% of the block value.

The more validators opted in to use the Proposer MEV-Protect feature, the more builders and relays will support it as well. For example, assuming a builder created a block with 10 ETH value and decides to bid 4 ETH keeping (60% of the block value). If the proposer of that slot is using the Proposer MEV Protect feature the builder will be forced to add another transaction that pays the proposer additional 2 ETH and pays the relay 2 ETH. The proposer will make 50% higher profit in this case.

Validators

To utilize this feature, a validator must only register with a subset of relays that offer this feature, currently just bloXroute relays. Once you have ensured that your validator is not registering with any non supporting relay, add a query parameter proposer_mev_protect=true to the relay URLs you use to connect with bloXroute relays. These are the URLs that are passed in with the -relays flag. For example to run mev-boost with bloXroute's mev-protect feature:

./mev-boost -relay-check -relay https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com?proposer_mev_protect=true&id=validator-name

The rProxy also supports the query parameter proposer_mev_protect=true

Builders

As a builder, in order to submit blocks for slots protected by MEV-Protect, there are a couple of steps that must be taken.

Tracking which slots are protected by MEV-Protect

When querying the validator data from the relay endpoint

/relay/v1/builder/validators

the builder receives a JSON array of GetValidatorRelayResponse objects.

type GetValidatorRelayResponse []struct {
	Slot  uint64 `json:"slot,string"`
	Entry struct {
		Message struct {
			FeeRecipient string `json:"fee_recipient"`
			GasLimit     uint64 `json:"gas_limit,string"`
			Timestamp    uint64 `json:"timestamp,string"`
			Pubkey       string `json:"pubkey"`
		} `json:"message"`
		Signature string `json:"signature"`
	} `json:"entry"`
	ComplianceList      string `json:"compliance_list"`
	EnforcedProfitRatio uint64 `json:"enforced_profit_ratio"`
}

The enforced_profit_ratio 64-bit unsigned integer represents the percent of the block value required to be given to the proposer in the block.

Building MEV-Protect compliant blocks

In order for a block to be valid as an MEV-Protect block, it must meet the proposer profit threshold for that block which is 90%, as represented by enforced_profit_ratio. Note that slots not protected by MEV-Protect will have an enforced_profit_ratio value of 0. The enforced_profit_ratio 64-bit unsigned integer represents the percent of the block value required to be given to the proposer in the block. Block Profit is calculated as follows:

BlockValue = Value Transferred to Validator's Fee Recipient
BuilderValue = (Coinbase Balance @ Block n) - (Coinbase Balance @ Block n-1)
BlockProfit = BuilderValue + BlockValue

If the BlockValue is less than 90% of the BlockProfit, builders will be required to transfer a 33% fee of BuilderValue to the relay and a 33% fee of BuilderValue to the validator. At the start, only whitelisted block builders will be allowed to submit blocks within this range, non-whitelisted builders with blocks in this range will be rejected. Please contact bloXroute to be added to the whitelist.

For bloXroute relay payment fee address , please use 0x367DB1AD831E4284ab1381EE6EeC81Eae6BD94a0. Once more relays join the pilot, we will replace this address with a relay guilt wallet.

Optimistic MEV-Protect compliant blocks

When submitting a block to a bloXroute relay, for a slot protected by MEV-Protect, you must signal that the block is an MEV-Protect block (where either proposal payment is above 90% or the additional fee transaction was added) in order to maintain optimistic relaying.

  • When submitting via HTTP: attach a proposer-mev-protect header, with the value set to true.

  • When submitting via websocket: attach a proposer-mev-protect header, with the value set to true.

  • When submitting via gRPC*: you must set the ProposerMevProtect field of the SubmitBlockRequest struct to true.

*Note: the code required to use gRPC with bloXroute relays is publicly available at https://github.com/bloXroute-Labs/relay-grpc

Last updated