Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Builder API for blobs #3689

Closed
realbigsean opened this issue Nov 4, 2022 · 5 comments
Closed

Builder API for blobs #3689

realbigsean opened this issue Nov 4, 2022 · 5 comments
Assignees

Comments

@realbigsean
Copy link
Member

Description

This hasn't been spec'd out as far as I can tell, but it is something we should keep in mind. flashbots/mev-boost#392

We would at least have to make sure we are following to whatever versioning scheme is implemented in the API, and I wonder if there is apetite for blinded blobs, in which case we'd end up having to make blobs generic over Payload: AbstractExecPayload

@realbigsean
Copy link
Member Author

Thinking about this further - we will need blob_kzg_commitments in the builder bid so we can include them in a block, and we'll probably need to change the response for submitting a signed block to a builder to be changed from an ExecutionPayload to a SignedBeaconBlockAndBlobsSidecar or at least something that includes blobs and the kzg proof

@jimmygchen
Copy link
Member

@0xGabi and I have started making changes on the builder spec and hopefully have a draft PR on the builder spec changes soon. I've summarised the discussions so far on this page: https://hackmd.io/@jimmygchen/B1dLR74Io

sequenceDiagram
    participant validator
    participant consensus
    participant mev_boost
    Title: Block Proposal with Builder API (EIP-4844)
    validator->>consensus: GET v2/validator/blinded_blocks/{slot}
    consensus->>mev_boost: GET v1/builder/header/{slot}/{parent_hash}/{pubkey}
    mev_boost-->>consensus: GET v1/builder/header/{slot}/{parent_hash}/{pubkey} response
    Note left of mev_boost: add `blob_kzg_commitments` to response (`SignedBuilderBid`)
    consensus-->>validator: GET v2/validator/blinded_blocks/{slot} response
    Note left of consensus: add `blob_kzg_commitments` to response
    Note over validator: include `blob_kzg_commitments` in block and sign the header
    validator->>consensus: POST beacon/blinded_blocks
    consensus->>mev_boost: POST /eth/v1/builder/blinded_blocks
    mev_boost-->>consensus: POST /eth/v1/builder/blinded_blocks response
    Note left of mev_boost: revealed payload will have to include `blobs_sidecar` and kzg proof
    Note over consensus: construct block and broadcast block
Loading

@jimmygchen
Copy link
Member

@0xGabi and I are working on this change, will hopefully have a draft PR soon!

@jimmygchen
Copy link
Member

jimmygchen commented Jun 22, 2023

Task Tracking

Beacon Node

  • produceBlindedBlock endpoint updates (Builder flow for Deneb & Blobs #4428)
    • Handle new Deneb BuilderBid response from builder endpoint (new BlindedBlobsBundle type)
    • Build BlockContents response (containing kzg_commitments, proof and blinded_blob_sidecars)
  • submitBlindedBlock endpoint updates
    • Handle SignedBlockContents request and forward to builder
    • Handle unblinded ExecutionPayloadAndBlobsBundle response from builder endpoint, and publish block

Validator Client

  • Handle produceBlindedBlock response from Beacon API (Builder flow for Deneb & Blobs #4428)
  • Individual signing of blinded_blob_sidecars
  • Build SignedBlockContents and submit to Beacon API (submitBlindedBlock)

@realbigsean
Copy link
Member Author

Completed in:
#4607
#4428

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants