Conversation
| - consensus client must implement [blind transaction signing](https://hackmd.io/@paulhauner/H1XifIQ_t#Change-1-Blind-Transaction-Signing) | ||
| - consensus client must implement [proposal promises](https://hackmd.io/@paulhauner/H1XifIQ_t#Change-2-Proposal-Promises) | ||
| - in event of mev-boost crash, consensus client must be able to bypass the middleware to reach a local or remote execution client | ||
|
|
There was a problem hiding this comment.
consensus client must implement consensus_getfeerecipientsv1 no?
|
|
||
| - `payloadHeader`: [`SignedMEVPayloadHeader`](#signedmevpayloadheader) - the invalid payload header signed by the offending relay. | ||
| - `payload`: [`ExecutionPayloadV1`](https://github.com/ethereum/consensus-specs/blob/v1.1.6/specs/merge/beacon-chain.md#executionpayload) - the invalid payload revealed to the network. | ||
| - `block`: [`SignedBlindedBeaconBlock`](#signedblindedbeaconblock) - the invalid beacon block signed and proposed by the validator. |
There was a problem hiding this comment.
Maybe I'm missing something... What is SignedBlindedBeaconBlock useful for?
|
Hi!
|
| mev_boost->relays: relay_getValidatorStatusV1 | ||
| ``` | ||
|
|
||
| 1. on startup, mev-boost requests a list of [`AuthenticatedFeeRecipient`](#authenticatedfeerecipient) from the consensus client using a new [`consensus_getFeeRecipientsV1`](#consensus_getfeerecipientsv1) method. |
There was a problem hiding this comment.
IMO this should be an mev-boost endpoint which consensus clients must POST to, something like builder_updateFeeRecipientsV1. I don't think this API should be made bidirectional if possible. Other endpoints in the builder API should respond with a specific status code if it doesn't yet have a suggested fee recipient. If a consensus client ever receives a payload header from mev-boost with an incorrect suggested_fee_recipient, they can update it with another call to builder_updateFeeRecipientsV1
Missed this when I was reviewing! but had similar thoughts here: #34 (comment) |
| 4. mev-boost must verify the signature and the merkle proof of the [`SignedMEVPayloadHeader`](#signedmevpayloadheader) received to ensure the signature matches the BLS key associated with the IP of the relay, has a matching `payloadId`, and has a valid fee recipient payment. | ||
| 5. upon receiving a [`builder_getPayloadHeaderV1`](#builder_getpayloadheaderv1) request from the BN, mev-boost must return the [`ExecutionPayloadHeaderV1`](https://github.com/ethereum/consensus-specs/blob/v1.1.6/specs/merge/beacon-chain.md#executionpayloadheader) with the highest associated `feeRecipientBalance` and terminate the polling cycle. If no eligible payload is received from a relay, mev-boost must request and return a payload from the local execution client using [`engine_getPayloadV1`](#engine_getpayloadv1). | ||
| 6. the BN must use the [`ExecutionPayloadHeaderV1`](https://github.com/ethereum/consensus-specs/blob/v1.1.6/specs/merge/beacon-chain.md#executionpayloadheader) received to assemble and sign a [`SignedBlindedBeaconBlock`](#signedblindedbeaconblock) and return it to mev-boost using [`builder_proposeBlindedBlockV1`](#builder_proposeblindedblockv1). | ||
| 7. mev-boost must forward the [`SignedBlindedBeaconBlock`](#signedblindedbeaconblock) to all connected relays and attach the matching [`SignedMEVPayloadHeader`](#signedmevpayloadheader) using [`relay_proposeBlindedBlockV1`](#relay_proposeblindedblockv1) to inform the network of which relay created this payload. |
There was a problem hiding this comment.
This seems like a big hole in the security of the validation/reputation system. If we want to be able to determine when a malicious relay delays or withholds sending its ExecutionPayloadV1, we have to rely on mev-boost delivering the SignedMEVPayloadHeaders to all relays in a timely manner. Timing then becomes a huge edge case, since it will be impossible to tell if the relay is delayed vs the validator is delayed, or if either party lies.
|
@thegostep could you remove the changes to README and milestone1 from this PR, to make it more focused? (I could also update it if you'd prefer) |
Codecov Report
@@ Coverage Diff @@
## main #34 +/- ##
=======================================
Coverage ? 59.48%
=======================================
Files ? 8
Lines ? 701
Branches ? 0
=======================================
Hits ? 417
Misses ? 221
Partials ? 63
Flags with carried forward coverage won't be shown. Click here to find out more. Continue to review full report at Codecov.
|
|
As a heads-up - we're planning to close this PR and move the discussions into issues. This will go into future versions v0.3+ |
No description provided.