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

Define engine_getBlobsV1 #559

Merged
merged 6 commits into from
Oct 2, 2024
Merged

Conversation

michaelsproul
Copy link
Contributor

Engine API specification for a new optional getBlobsV1 method.

The purpose of this method is to allow consensus clients to fetch blobs from the EL blob pool, so that:

  • It reduces the delay for a block to become available and attestable, if the blobs aren't received via gossip in a timely manner e.g. due to limited proposer bandwidth, or high latency at the receiving node.
  • Secondly it enables "decentralized blob building", which reduces the likelihood of a block getting orhpaned if the block proposer isn't able to publish the blobs quick enough due to bandwidth constraints (e.g. home stakers with limited bandwidth or stakers in remote locations). High capacity nodes can fetch blobs from their EL blob pools, build the blob sidecars and publish it to the network on behalf of the proposer. This will help self builders today (which statistically include a higher number of blobs in their blocks), and will become an important component to keep local block building viable for home stakers when blob count increases in the near future.

Co-authored with @jimmygchen

Copy link
Collaborator

@mkalinin mkalinin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few nits, otherwise, looks good to me!

src/engine/cancun.md Outdated Show resolved Hide resolved
src/engine/cancun.md Outdated Show resolved Hide resolved
src/engine/cancun.md Outdated Show resolved Hide resolved
src/engine/cancun.md Outdated Show resolved Hide resolved
src/engine/openrpc/methods/blob.yaml Show resolved Hide resolved
michaelsproul and others added 2 commits July 1, 2024 23:17
Co-authored-by: Mikhail Kalinin <noblesse.knight@gmail.com>
Co-authored-by: Mikhail Kalinin <noblesse.knight@gmail.com>
Copy link
Collaborator

@mkalinin mkalinin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@LukaszRozmej
Copy link

LukaszRozmej commented Aug 8, 2024

Would it be possible to query by tx hash instead of blob version hashes? EL generally store by tx hash. We can add another mapping but it will complicate things a bit. Or pairs of txhash+blobversionhashes.

EDIT: decided on ACCD that CL doesn't have the tx hashes.

@lightclient
Copy link
Member

lightclient commented Aug 8, 2024

Is there a reason this should be in the engine API vs the regular eth api? I lean towards the latter.

@smartprogrammer93
Copy link
Contributor

@lightclient i disagree. i dont see why this should move to eth API. it will only be used by CL clients. I dont see any other usage. Additionally, it is way better to keep all methods used by CL in the engine API. i hate the fact that they have to use eth API for other things (like eth_getLogs etc)

@tbenr
Copy link

tbenr commented Sep 27, 2024

This is my analysis of an actual case that could have been avoided by a good adoption of this PR
https://hackmd.io/@dsjdqQDBRp66btjRzfxjbw/r1OuFG7AA

I think we should prioritize this

Copy link
Contributor

@g11tech g11tech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

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

Successfully merging this pull request may close these issues.