# In Defense of Trustless Builder Payments
There is [a common mental model](https://ethresear.ch/t/slot-restructuring-design-considerations-and-trade-offs/22687) for [EIP-7732](https://eips.ethereum.org/EIPS/eip-7732) which splits the proposal into three main components:
1. Payload-Block Separation
2. PTC Committee
3. Trustless Builder Payments
At this stage in the discussion, many core-developers are on board with the first two components. See [my earlier writing](https://notes.ethereum.org/@0YxgBRfbR0OTJbu2fDpY2Q/BkyjpOJEgg) if you would like to understand why. Some core-developers are more concerned about trustless builder payments and would advocate for this to be removed from Glamsterdam.
As far as I can tell, there are a few main criticisms of the on-chain trustless builder payment mechanism:
1. We don't want to enshrine the wrong mechanism and constrain design flexibility
2. Requiring staked builders will negatively impact builder competition
3. There may be withholding strategies leveraging the guaranteed payment mechanism which are toxic for chain stability
4. Removing the trustless payment mechanism saves development time
I want to address each of these point by point.
## 1. Enshrining the Wrong Mechanism / Constraining Design Flexibility
In the course of ePBS research, we have theorized many different kinds of off-chain agreements that proposers may wish to enter into with third parties. Examples include
* slot auctions
* partial block auctions
* preconfirmations for based rollups
* proving auctions (when L1-zkEVM becomes viable)
* mev-burn designs
Today, validators run a standard block auction. That is, they auction off the right to build a specific block in their slot to the highest bidder. In theory, offchain infrastructure for these alternative kinds of agreements could be built, allowing the proposer to specify additional, more exotic constraints on the block through software like [commit-boost](https://commit-boost.github.io/commit-boost-client/).
The concern is that EIP-7732 is being opinionated by choosing block auctions and potentially killing off these alternative agreements, thus reducing overall design flexibility.
This concern is actually a complete misunderstanding. **EIP-7732 is completely unopinionated about the auction mechanism**. Consider how a validator would participate one of these alternative auctions post-7732. They would:
1. Run something like [commit-boost](https://commit-boost.github.io/commit-boost-client/) to specify their constraints
2. Receive [`SignedExecutionPayloadHeader`](https://github.com/ethereum/consensus-specs/blob/master/specs/_features/eip7732/beacon-chain.md#signedexecutionpayloadheader)s with [zero value](https://github.com/ethereum/consensus-specs/blob/master/specs/_features/eip7732/beacon-chain.md#executionpayloadheader) from a builder, and trust a relay to validate the payload conforms to their constraints, is valid, and pays them
3. Select the highest bidder, stuff the winning header into their [`BeaconBlockBody`](https://github.com/ethereum/consensus-specs/blob/master/specs/_features/eip7732/beacon-chain.md#executionpayloadheader) and publish
Notice this is **exactly the same procedure** as validators would go through today, only with the added benefit of not needing consensus clients to support alternative code-paths. There is no need for `Blinded` consensus objects. This makes the code easier to maintain across upgrades, saving significant core-developer time on every hard fork.
To put it simply **EPBS maintains exactly the same flexibility we have today**. More fundamentally, EPBS is simply about separating the payload from the beacon block and allowing a separate signature for each component (block, payload). Today, the protocol requires these components have the same signature, which effectively **enshrines trusted relays** even for standard block auctions. So viewed from this lense, **ePBS is actually more flexible than today**.
## The Role of the Trustless Builder Payment
The discussion in the previous section reveals something fundamental: **the trustless builder payment does not make using relays more difficult than today**. In fact, if proposers wish, they can continue to trust relays and always bypass the on-chain mechanism. **EIP-7732 simply provides proposers the option to use a trustless mechanism, but does not require it**.
So what sort of behavior do we expect proposers to engage in then? Well EIP-7732 has been carefully designed so that bypassing the on-chain payment mechanism does not provide an advantage in the vast majority of circumstances. This is **fundamentally a good thing** (more on this in the last section).
There are however a few exceptions where a proposer may still want to use an off-chain trusted entity:
1. For obscenely large MEV payments
2. More exotic alternative agreements
3. (Potentially) access to more/more competitive bids
For those rare and obscenely large MEV blocks that occur every now and then, it is possible that there isn't a minimum of two builders with enough capital on the Beacon Chain to cover the bid. In this case, the proposer gets short-changed. Going out of protocol allows the builders to pay the proposer from the capital that is raised from the execution of the block.
The alternative agreements is discussed in the previous section and no different than today.
Builders that use the in-protocol payment mechanism must be staked. This raises their up-front capital costs (more on this later). Going out of protocol could provide access to bids from builders who:
1. can't afford these costs
2. want to cut out these costs, returning some of the savings to the proposer
All of this paints a clear picture of the role of the trustless builder payment: **it is an in-protocol, competitive, default mechanism, but it is not the only option**. From this angle, it appears to strike the right balance of being **competitive enough** for a large fraction of the network to rely on it, while also **leaving enough incentive** on the table to enable alternatives to exist.
## 2. Requiring Staked Builders Further Centralizes Builders
The issue is that the trustless payment mechanism will increase builder capital costs by requiring an up-front Beacon Chain balance of:
1. `MIN_ACTIVATION_BALANCE` (32 ETH)
2. The total value of however many bids the builder expects to win in the length of the deposit queue
3. The value of the maximum, sporadic, large MEV payment the builder hopes to cover
The value from (1) is unavoidable if a new builder wants to use the on-chain voting mechanism.
The value from (2) can be mitigated by monitoring the amount of ETH entering the deposit contract and placing deposit transactions at regular intervals depending on how much ETH has entered since the last deposit. No need to wait the entire queue.
The value from (3) is also unavoidable for a new builder using the on-chain voting mechanism.
While this is still a concern, the impact of this **is mitigated somewhat by allowing new builders to reach propsers through off-chain relays**.
It's also worth noting that these same concerns exist today for relays that use [optimistic designs](https://github.com/michaelneuder/optimistic-relay-documentation/blob/main/proposal.md) like [ultrasound](https://relay.ultrasound.money/).
## 3. Toxic Withholding Strategies Leveraging the Trustless Payment Mechansim
I've written a little bit more about this [in an earlier post](https://notes.ethereum.org/@0YxgBRfbR0OTJbu2fDpY2Q/r16wx8gIge). In a nutshell, the concern is that a builder may choose at the time of proposal to place a large trade in one direction in their block and simultaneously place another trade in the opposite direction on a CEX. The builder could then reveal all but one blob in the block.
The builder has now created an option for themselves. If they reveal that final blob, their on-chain trade will execute. If they withhold that final blob, the block will be re-orged and their trade will effectively be cancelled. In 7732 the builders would have a maximum of about 8 seconds in the [dual PTC deadline design](https://notes.ethereum.org/@anderselowsson/Dual-deadlinePTCvote) to execute this option.
This is currently an under-researched topic. But [I am hearing](https://pbs.twimg.com/media/GE04lZaXsAAYHNp?format=jpg&name=900x900) that preliminary research to quantify the economics around these attacks indicates that this is typically an unprofitable strategy.
Even if this attack were profitable, there are several mitigations we can do to make them unprofitable:
1. Socially "slashing" badly behaving builders
2. A builder-specific "circuit-breaker" implemented by default in consensus clients that blacklists the builder's pubkey for a few epochs if the builder fails to reveal (on a timely beacon block)
3. Simply charge a flat fee against the builders balance for not revealing (on a timely beacon block)
These are ordered from lowest to highest penalty. The only reason we wouldn't jump straight to (3) is that it's a bit heavy-handed when we don't even know if builders would intentionally do this yet.
## 4. Removing the Trustless Payment Mechanism Saves Development Time
I mean sure.. but not much. For consensus devs, the trustless payment option is:
1. One new [withdrawal prefix `0x03`](https://github.com/ethereum/consensus-specs/blob/master/specs/_features/eip7732/beacon-chain.md#withdrawal-prefixes) for the builder
2. Two new queues on the [`BeaconState`](https://github.com/ethereum/consensus-specs/blob/master/specs/_features/eip7732/beacon-chain.md#beaconstate) (`builder_pending_payments` & `builder_pending_withdrawals`)
3. One new function [during epoch processing](https://github.com/ethereum/consensus-specs/blob/master/specs/_features/eip7732/beacon-chain.md#new-process_builder_pending_paymentsstate)
These are quite trivial to implement. The time saved by ripping them out is negligible. And we lose **a lot** if we do.
## Why we Should Keep the Trustless Payment Option
I realize that there isn't a strong appetite for trustless payments, at least not strong enough to justify EIP-7732 on its own. But it's still worth mentioning why we want to provide the trustless in-protocol option:
1. Relays require trust from both builders and proposers. They are not decentralized as there is only a handful of them. **This conflicts with Ethereum's core values and is a potential attack vector on the network if there is no decentralized, trustless, alternative.**
2. The core functionality of the protocol **does not need to rely exclusively** on brittle, out-of-protocol software. This caused [significant instability during the capella upgrade](https://collective.flashbots.net/t/impact-of-the-prysm-invalid-signature-bug-on-the-mev-boost-ecosystem-at-the-shapella-fork/1623).