Useful definitions
MEV value transfer patterns in the wild
There are three main on-chain patterns in which we have observed value transfers between a block builder and a validator; (a) one that involves theend_tx as parametrized in the table above, (b) one in which the value transfer happens exclusively via the fee_recipient, and (c) one that involves an an end_tx and an internal_tx.
The following case based approach is based on modulating these three parameters, as well as whether the relay where the block was procured from is known or not.
Case A: Known MEV Relay blocks
Case A.1
This class of cases describe patterns where the builder has set their own address as thefee_recipient and pays the proposer via an end_tx (e.g. Flashbots relay). A builder may choose to use the same address they set as the fee_recipient to pay the proposer or a different one (secondary_builder_address). What is consistent here is that regardless of the address used by the builder, the proposer is paid through an end_tx.
If the
winning_bid is greater than or equal to the sum of priority_fees for the transactions in the block, and , we calculate baseline MEV as:
baseline_mev are known. The winning_bid is captured from the relay and the priority_fees are computed from the transaction fees in the block.
If the winning_bid is less than the sum of priority_fees, for the transactions in the block, we calculate:
winning_bid they received as the priority_fees that went to said validator.
Case A.2
This class of cases describe patterns where the builder has set the ****proposer account as thefee_recipient (e.g. Manifold relay).
In this case we revert to:
While initially looking at this from the
winning_bid - priority_fees lens appears rational, cases like the Manifold bug have shown that bids can be misconfigured to not show exactly how much a validator receives in the end.Case A.3
This class of cases describe patterns where the builder has set an alternate receiver address (say a smart contract) in theend_tx which then initiates an internal_tx to send the funds to the validator.
If the
winning_bid is greater than or equal to the sum of priority_fees for the transactions in the block, and , we calculate baseline MEV as:
winning_bid is less than the sum of priority_fees, for the transactions in the block, we calculate:
winning_bid they received as the priority_fees that went to said validator.
The calculation is identical to Case A.1, it is just that here, the winning bid would equate to the value of the internal_tx instead of the end_tx.
Case B: Unknown but likely MEV Relay
This class of cases describe patterns where we do not know the relay the block came from, but given the presence of anend_tx this is most likely a relay block.
In the absence of data from relays, but with an
end_tx still observed, if the end_tx is greater than or equal to the sum of priority_fees for transactions in the block, we calculate baseline MEV as:
end_tx is less than the sum of priority_fees for transactions in the block, we calculate baseline MEV as:
baseline_mev undetermined and book all the value that went to the proposer as priority_fees.
Case C: Vanilla block
If all of the parameters we are segregating for are UNKNOWN then we revert to :