How does proposer slashing work in MEV-Boost++?

I watched @kydo ’s MEV-Boost++ whiteboard session on YouTube and found it to be excellent!

I have a doubt regarding proposer slashing: when a builder submits an invalid block to the relay, the proposer commits to include it (as it only sees the header) but when it retrieves the partial block from the PDA it determines that it is invalid. Why wouldn’t the proposer just skip the block? iirc, in the current MEV-Boost design, the proposers get paid regardless of whether the block gets included, isn’t it?

Or is it because MEV-Boost++ handles bid payments differently from MEV-Boost? the proposer slashing happens because you cannot generate Merkle inclusion proof of builder’s partial block transaction in the proposer block (empty block)?

1 Like

Hey zkash, great to see you here! Welcome to the forum.

In MEV-Boost+, the trusted relay will not relay an invalid partial block to the proposer. Therefore, it won’t be a problem.

In MEV-Boost++, the trusted relay is no longer there. Therefore the proposer could receive a header from a block builder; but the actual block is invalid. In this case, we will slash the builder and the proposer.

Slashing the builder is straightforward. They misbehaved.

Slashing the proposer might be less straightforward. The proposer will still be slashed because before it got the invalid partial block from the builder, it signed a commitment to the block builder promising to include the partial block, regardless of the partial block’s validity.

So the proposer can simply skip the partial block but it will just be slashed. It does not have things specifically to do with payment.

But this is only a problem in MEV-Boost++, which is more of a future proof of concept implementation.

Hope it answers your questions.

1 Like