This document is currently a draft - please sign in and comment to provide feedback
This document outlines the design for a trust based marketplace for block builder / block proposer separation compatible with the upcoming Ethereum merge fork. As detailed in the Flashbots POS Proposals, this trust based solution most closely resembles the current Flashbots auction design with modifications suggested by Ethereum core devs to enable solo staker participation without introducing changes to Ethereum consensus. This solution aims to bridge the gap to a permissionless PBS design which we recommend be strongly considered for the cleanup fork in order to improve decentralization of block builders.
The Flashbots Auction architecture allows validators to outsource the task of block construction to a network of third party block builders. While the validators have the ability to include any payload into the chain, we believe network decentralization and validator revenues are maximized when the validator's job is limited to selecting the payload which pays them the most ETH.
On POS Ethereum, the flashbots block construction process involves the following steps:
feeRecipient
address as the coinbase address of the payload, or the builders may set their own address and include a transaction which transfers to the feeRecipient
in the payload.feeRecipient
).Note that a single entity may play multiple roles in this system. The roles are labeled separately as they each lend themselves to some level of specialization. In the short term, there should be multiple independent relays. In the future, a trustless PBS design at the consensus level will remove the need for relays and escrows.
On the validator side, this architecture makes use of an independent middleware which sits between the consensus client and the execution client. This middleware handles communication with the relays, the profit switching logic for selecting the most valuable payload, and a fallback mechanism to a local execution client if relays get disconnected. Using a middleware instead of direct modification of the consensus clients allows us to maintain each component independently and have cross client compatibility with minimal changes to the engine api.
It's important to note that relays should only be used for receiving payloads during block construction - relays are not meant to be used for the other roles performed by the execution clients and the validators should always fall back to a local payload construction if no relays are available.
Since the execution payload header does not include the transaction content, the risk of validators frontrunning is eliminated. This design allows solo stakers to participate in Flashbots MEV thus reducing the incentive for economic centralization. However, this design also requires validators to trust the relay to filter invalid payloads, accurately report payload value, and reveal the transaction content once the header is signed. Escrows are introduced to improve data availability by duplicating the transaction content across multiple providers.
Summary:
Flashbots will continue to maintain a formal specification and will support client implementation teams to add MEV compatibility for the merge.
The current design requires the following modifications to the consensus client interface:
There are no execution client changes currently required.
The most important security mechanism of this design is the ability for all validators to identify if a relay has turned malicious.
Lets assume the worse case scenario: there is a single relay which is connected to 100% of the validators. The relay begins proposing invalid blocks and lies about the value of the payloads such that the validators always selects them.
Under this scenario, a naive middleware implementation could cause the chain to halt as validators are no longer proposing valid blocks.
There are three ways for the relay to propose a bad payload:
To mitigate this, it must be possible to either 1) pre validate payload between multiple parties ahead of sending to validators or 2) for all validators in the network to identify when a relay has proposed a bad payload and automatically fallback to a safe alternative. Critically, this security mechanism must be robust in the face of relays who are adversarial towards each other.
There are multiple alternatives for communication between the middleware and the relays: push vs pull, direct vs p2p.
Care must be taken to ensure the following requirements are met in order to select the best implementation:
Missed slots can occur if the block proposer fails to propagate a block in time for sufficient attestations to be collected. In this case, the block proposer does not receive the base reward for the block (approx 0.025 eth at 10m eth staked) nor the transaction and MEV rewards. Since this architecture requires sending signed headers back to the relays / escrows before propagation to the attestors, it will be important to understanding what is an acceptable rate of missed slots and how to minimize it under normal network operating conditions.
In order to produce valid blocks, builders and relayers must know all of the attributes of the execution payload header. It's in the interest of validators to provide all the inputs required for block construction as early as possible. This allows builders to maximize the accuracy and compute time available for finding an optimal block construction.
All header attributes except from coinbase
can be derived by the builder based on their observed state of the network. It is up to the middleware to filter payloads built on incorrect states.
feeRecipient
addressThe validators needs to communicate to builders and relays the address they wish to use as the feeRecipient
. This address is necessary to accurately measure the value of the proposed payload. Since feeRecipient
can be any address, the validator must authenticate themselves when publishing it.
There does not currently exist a way for validators to authenticate and publish their feeRecipient
. The best way to do this would likely be to add a signing domain which allows validators to safely sign arbitrary messages with their staking key.
This specification deprecates the use of "Flashbots Bundles" in the communication between builders and block proposers in favor of execution payloads which represent the full ordering and content of a block. While bundles have provided an efficient auction mechanism for inclusion of transaction at the top of blocks, they are not expressive enough for all order preference. In particular, bundle auctions are not well suited for large transactions or frontrunning protection use cases. Moving to full block proposals means the full range of preference on ordering can be expressed.
It is possible some validators will accept out of band bribes to prioritize certain payloads or attempt to perform time bandit attacks through attestation bribery. It is not possible to protect against this behavior without consensus modifications. In theory, consensus could enforce that the block builder which pays the most to the block proposer in ETH must be included and that the payment is spread or burned, though the mechanism is out of scope of this proposal requires further research.
As mentioned in the architecture section above, relays are trusted providers of frontrunning and DoS protection. While the system enables having multiple relays competing with eachother permissionlessly, it is possible there will only be a handful of successful relays. We suggest a permissionless design be strongly considered by core devs for the cleanup fork in order to reduce relay trust requirements and improve network decentralization.
Although not recommended, a validator who is relying exclusively on third party block builders for block construction may run a stripped down version of an execution client which removes the transaction pool and the block construction logic thus reducing the hardware and bandwidth requirement of their client.