Comments (1)
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
- 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. - mev-boost requests recent fraud proofs by calling
relay_getRelayStatusV1
on connected relays. - 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.
- 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. - 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 ofFraudProof
- any fraud proof produced in the last 64 blocks.
FraudProof
payloadHeader
:SignedMEVPayloadHeader
- the invalid payload header signed by the offending relay.payload
:ExecutionPayloadV1
- the invalid payload revealed to the network.block
:SignedBlindedBeaconBlock
- the invalid beacon block signed and proposed by the validator.
from mev-boost.
Related Issues (20)
- Determine version currently deployed programmatically via API HOT 1
- Upcoming MEV-Boost Release: v1.7 (Deneb) HOT 7
- T
- Ty
- Problem since you updated the flashbots relay the 25th of JAN 9 PM UTC HOT 1
- Problem upgrading to latest, need to upgrade Go, add to release notes please HOT 6
- Cannot build 1.7 HOT 6
- Different version number to 1.7 HOT 6
- X-Mevboost-Version v1.7.1 HOT 1
- mev-boost: command not found HOT 2
- Spurious `no bid for this getPayload payload found` HOT 5
- Feat: Log a big fat message if the relay with the bid fails to return the payload
- Adding a cli library HOT 2
- MEV-Boost Direct builder connection HOT 5
- Very few proposals and warning in logs
- security exploit HOT 3
- Allow setting a minimum gas used value to determine whether or not to use a block supplied by the builder API HOT 3
- https://github.com/flashbots/mev-boost/releases/download/v1.7/mev-boost_1.7_windows_amd64.tar.gz
- How do I re-enable GET requests on the logs like earlier versions? HOT 1
- how do i go about using this service
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mev-boost.