Skip to content

Execution API: Support blobs_bundle_v2 for PeerDAS #15167

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

Merged
merged 3 commits into from
Apr 16, 2025
Merged

Execution API: Support blobs_bundle_v2 for PeerDAS #15167

merged 3 commits into from
Apr 16, 2025

Conversation

terencechain
Copy link
Collaborator

@terencechain terencechain commented Apr 12, 2025

This PR adds support for blobs_bundle_v2 as defined in execution-apis#630, enabling compatibility with the latest Fulu-era blob response format.

Summary of Changes

  • Introduced a BlobsBundler interface to abstract over both v1 and v2 blob bundle implementations
  • Extended the constructGenericBeaconBlock logic to support type assertions for both BlobsBundle and BlobsBundleV2 based on the block version
  • Modified execution payload parsing and response handling to dynamically select the appropriate bundle version
  • Adjusted PeerDAS integration logic to use GetBlobs() and GetProofs() from the BlobsBundler interface
  • Updated protobuf definitions and generated code to include BlobsBundleV2 and ExecutionBundleFulu

@terencechain terencechain marked this pull request as draft April 12, 2025 04:23
@terencechain terencechain marked this pull request as ready for review April 14, 2025 23:46
func (vs *Server) constructGenericBeaconBlock(sBlk interfaces.SignedBeaconBlock, blobsBundle *enginev1.BlobsBundle, winningBid primitives.Wei) (*ethpb.GenericBeaconBlock, error) {
func (vs *Server) constructGenericBeaconBlock(
sBlk interfaces.SignedBeaconBlock,
blobsBundle enginev1.BlobsBundler,
Copy link
Contributor

Choose a reason for hiding this comment

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

blobsBundle ==> blobsBundler?
(To ensure consistency between variable name and type.)

@@ -12,7 +12,7 @@ import (
// GetPayloadResponseV(1|2|3|4) value.
type GetPayloadResponse struct {
ExecutionData interfaces.ExecutionData
BlobsBundle *pb.BlobsBundle
BlobsBundle pb.BlobsBundler
Copy link
Contributor

Choose a reason for hiding this comment

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

BlobsBundle ==> BlobsBundler?
(To ensure struct field consistency with type.)

@@ -81,3 +81,11 @@ message ExecutionBundleElectra {
bool should_override_builder = 4;
repeated bytes execution_requests = 5;
}

message ExecutionBundleFulu {
Copy link
Contributor

Choose a reason for hiding this comment

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

Is it possible to create a new fulu.proto file to avoid having Fulu structs defined in the electra.proto file?

@nalepae nalepae merged commit b9deabb into peerDAS Apr 16, 2025
14 checks passed
@nalepae nalepae deleted the bundle-v2 branch April 16, 2025 08:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants