-
Notifications
You must be signed in to change notification settings - Fork 0
add flag to include payload in produceBlockV4 #2
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
base: epbs-standardized
Are you sure you want to change the base?
Conversation
52cf903 to
2013831
Compare
| payload later. This endpoint is specific to the post-Gloas forks and is not backwards compatible | ||
| with previous forks. | ||
|
|
||
| When self-building (local execution payload), the response will include the full block contents |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in ethereum#519 the conclusion was to leave it up to clients to support blinding the response, eg. in Lodestar we have a flag --blindedLocal and corresponding query param to tell the bn to not return full block contents but rather cache them which makes the block production stateful but there is no drawback in a 1:1 setup
I think it would be good to standardize this kind of query parameter in produceBlockV4 and leave it up to clients whether the wanna implement it or not, ie. if a client doesn't wanna implement it they can always set the query param to false
nflaig
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
something to consider, if we return both the beacon block and execution payload here, do we also want an api to publish both, or are we fine with having 2 separate publish apis
|
Speaking on behalf of Vouch, we find this approach preferable to maintain the statelessness of the REST API and allowing us to leverage multiple clients in block production.
This would be ideal for the stateless flow. |
does it matter for that to have a single publish api call or 2 separate ones? but I can see that it's simpler for beacon node to process the data since you need to process the beacon block before you can process the execution payload to which the beacon block committed |
Is the submission process stateful, I.e. do you have to submit the payload to the same BN that you submit the beacon block to? If it's stateful then a single submission endpoint for both would make sense to keep the API stateless, but if it's not stateful it might be more consistent (for MEV and local production) to keep them separate. For my benefit - is the worry that, if you submit the block to one BN and then the execution payload to a second BN, that the second client might not have seen the block yet? |
the BN needs the beacon block first to validate and process the execution payload however it's not required to submit both via the api there will be a queue mechanism in clients for gossip as you can't be sure that you receive the beacon block before the execution payload there so for api, it could be similar, BN shouldn't care if it receives the beacon block/payload via gossip or api
this is kinda what I wanna avoid, it's a implementation detail but I think we might be fine with keeping the 2 apis separate, and not have a specific publish api for local blocks |
I'd just keep the 2 separate publish endpoints, that seems cleaner to me, they are two different objects being submitted. That way we can also push out the |
Resolves comment in the epbs standardized PR by adding a flag to
produceBlockV4to respond with the payload envelope, blobs, and kzg_commitments alongside the CL block in the self-building case as to continue supporting multi beacon node setups