Git Product home page Git Product logo

Comments (1)

thegostep avatar thegostep commented on July 17, 2024

The design I initially proposed was 3) where mev-boost can call relay_getRelayStatusV1 on the relays to obtain fraud proofs for the last 64 blocks. Main reason for selecting this approach is to avoid needing to solve spam prevention on p2p.

Why I think 3) can work:

  • relays have incentive to report against on each other because they can take down a different relay
  • it allows all validators to obtain a fraud proof and disconnect from a relay simultaneously
  • if a relay provides an invalid fraud proof or spam, they can be punished by mev-boost

The fraud proof does assume that the execution client provides an RPC for simulating a block on top of the state of any of the past 64 blocks. Initially, the plan was to use engine_executePayloadV1 for this, but as I understand it was removed from the engine API and must be replaced.


Validation

sequenceDiagram
    Title: Fraud Proof
    participant mev_boost
    participant relays
    mev_boost->>relays: relay_getRelayStatusV1
    Note over mev_boost: blacklist bad relay
Loading
  1. if a relay identifies a payload which violates consensus rules and was subsequently proposed to the network, they must craft a FraudProof which contains the necessary information to verify the missbehavior.
  2. mev-boost requests recent fraud proofs by calling relay_getRelayStatusV1 on connected relays.
  3. If a fraud proof is returned, mev-boost extracts the identity of the offending relay from the payload signature and verifies that the signature matches the payload header.
  4. mev-boost calls engine_executePayloadV1 against the local execution client using the payload data provided in the fraud proof. If the response is "INVALID", mev-boost immediately blacklists the relay that generated this payload.
  5. the operator must manually remove the offending relay from the blacklist in order to resume receiving payloads.

relay_getRelayStatusV1

Request

  • method: relay_getRelayStatusV1

Response

  • result: RelayStatus
  • error: code and message set in case an exception happens while performing the request.

RelayStatus

  • currentState: ForkchoiceStateV1 - current state of the chain seen by the relay.
  • nextPayload: PayloadAttributesV1 - attributes of the upcoming payload.
  • fraudProofs: Array of FraudProof - any fraud proof produced in the last 64 blocks.

FraudProof

from mev-boost.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.