@@ -3,6 +3,7 @@ package validator
33import (
44 "fmt"
55
6+ "github.com/pkg/errors"
67 "github.com/prysmaticlabs/prysm/v5/consensus-types/interfaces"
78 "github.com/prysmaticlabs/prysm/v5/consensus-types/primitives"
89 enginev1 "github.com/prysmaticlabs/prysm/v5/proto/engine/v1"
@@ -12,9 +13,13 @@ import (
1213)
1314
1415// constructGenericBeaconBlock constructs a `GenericBeaconBlock` based on the block version and other parameters.
15- func (vs * Server ) constructGenericBeaconBlock (sBlk interfaces.SignedBeaconBlock , blobsBundle * enginev1.BlobsBundle , winningBid primitives.Wei ) (* ethpb.GenericBeaconBlock , error ) {
16+ func (vs * Server ) constructGenericBeaconBlock (
17+ sBlk interfaces.SignedBeaconBlock ,
18+ blobsBundle enginev1.BlobsBundler ,
19+ winningBid primitives.Wei ,
20+ ) (* ethpb.GenericBeaconBlock , error ) {
1621 if sBlk == nil || sBlk .Block () == nil {
17- return nil , fmt . Errorf ("block cannot be nil" )
22+ return nil , errors . New ("block cannot be nil" )
1823 }
1924
2025 blockProto , err := sBlk .Block ().Proto ()
@@ -34,12 +39,21 @@ func (vs *Server) constructGenericBeaconBlock(sBlk interfaces.SignedBeaconBlock,
3439 return vs .constructBellatrixBlock (blockProto , isBlinded , bidStr ), nil
3540 case version .Capella :
3641 return vs .constructCapellaBlock (blockProto , isBlinded , bidStr ), nil
37- case version .Deneb :
38- return vs .constructDenebBlock (blockProto , isBlinded , bidStr , blobsBundle ), nil
39- case version .Electra :
40- return vs .constructElectraBlock (blockProto , isBlinded , bidStr , blobsBundle ), nil
42+ case version .Deneb , version .Electra :
43+ bundle , ok := blobsBundle .(* enginev1.BlobsBundle )
44+ if blobsBundle != nil && ! ok {
45+ return nil , fmt .Errorf ("expected *BlobsBundle, got %T" , blobsBundle )
46+ }
47+ if sBlk .Version () == version .Deneb {
48+ return vs .constructDenebBlock (blockProto , isBlinded , bidStr , bundle ), nil
49+ }
50+ return vs .constructElectraBlock (blockProto , isBlinded , bidStr , bundle ), nil
4151 case version .Fulu :
42- return vs .constructFuluBlock (blockProto , isBlinded , bidStr , blobsBundle ), nil
52+ bundle , ok := blobsBundle .(* enginev1.BlobsBundleV2 )
53+ if blobsBundle != nil && ! ok {
54+ return nil , fmt .Errorf ("expected *BlobsBundleV2, got %T" , blobsBundle )
55+ }
56+ return vs .constructFuluBlock (blockProto , isBlinded , bidStr , bundle ), nil
4357 default :
4458 return nil , fmt .Errorf ("unknown block version: %d" , sBlk .Version ())
4559 }
@@ -92,7 +106,7 @@ func (vs *Server) constructElectraBlock(blockProto proto.Message, isBlinded bool
92106 return & ethpb.GenericBeaconBlock {Block : & ethpb.GenericBeaconBlock_Electra {Electra : electraContents }, IsBlinded : false , PayloadValue : payloadValue }
93107}
94108
95- func (vs * Server ) constructFuluBlock (blockProto proto.Message , isBlinded bool , payloadValue string , bundle * enginev1.BlobsBundle ) * ethpb.GenericBeaconBlock {
109+ func (vs * Server ) constructFuluBlock (blockProto proto.Message , isBlinded bool , payloadValue string , bundle * enginev1.BlobsBundleV2 ) * ethpb.GenericBeaconBlock {
96110 if isBlinded {
97111 return & ethpb.GenericBeaconBlock {Block : & ethpb.GenericBeaconBlock_BlindedFulu {BlindedFulu : blockProto .(* ethpb.BlindedBeaconBlockFulu )}, IsBlinded : true , PayloadValue : payloadValue }
98112 }
0 commit comments