Skip to content

Commit 38f208d

Browse files
authoredApr 1, 2024··
Reject Empty Bundles (#13798)
* reject it * test * add test case
1 parent 65b90ab commit 38f208d

File tree

3 files changed

+48
-6
lines changed

3 files changed

+48
-6
lines changed
 

‎beacon-chain/rpc/prysm/v1alpha1/validator/BUILD.bazel

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ go_library(
44
name = "go_default_library",
55
srcs = [
66
"aggregator.go",
7-
"duties.go",
87
"attester.go",
98
"blocks.go",
109
"construct_generic_block.go",
10+
"duties.go",
1111
"exit.go",
1212
"log.go",
1313
"proposer.go",
@@ -179,10 +179,10 @@ go_test(
179179
timeout = "moderate",
180180
srcs = [
181181
"aggregator_test.go",
182-
"duties_test.go",
183182
"attester_test.go",
184183
"blocks_test.go",
185184
"construct_generic_block_test.go",
185+
"duties_test.go",
186186
"exit_test.go",
187187
"proposer_altair_test.go",
188188
"proposer_attestations_test.go",
@@ -201,6 +201,7 @@ go_test(
201201
"status_mainnet_test.go",
202202
"status_test.go",
203203
"sync_committee_test.go",
204+
"unblinder_test.go",
204205
"validator_test.go",
205206
],
206207
embed = [":go_default_library"],

‎beacon-chain/rpc/prysm/v1alpha1/validator/unblinder.go

+11-4
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,22 @@ import (
1313
)
1414

1515
func unblindBlobsSidecars(block interfaces.SignedBeaconBlock, bundle *enginev1.BlobsBundle) ([]*ethpb.BlobSidecar, error) {
16-
if block.Version() < version.Deneb || bundle == nil {
16+
if block.Version() < version.Deneb {
1717
return nil, nil
1818
}
19-
header, err := block.Header()
19+
body := block.Block().Body()
20+
blockCommitments, err := body.BlobKzgCommitments()
2021
if err != nil {
2122
return nil, err
2223
}
23-
body := block.Block().Body()
24-
blockCommitments, err := body.BlobKzgCommitments()
24+
if len(blockCommitments) == 0 {
25+
return nil, nil
26+
}
27+
// Do not allow builders to provide no blob bundles for blocks which carry commitments.
28+
if bundle == nil {
29+
return nil, errors.New("no valid bundle provided")
30+
}
31+
header, err := block.Header()
2532
if err != nil {
2633
return nil, err
2734
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package validator
2+
3+
import (
4+
"testing"
5+
6+
consensusblocks "github.com/prysmaticlabs/prysm/v5/consensus-types/blocks"
7+
ethpb "github.com/prysmaticlabs/prysm/v5/proto/prysm/v1alpha1"
8+
"github.com/prysmaticlabs/prysm/v5/testing/assert"
9+
)
10+
11+
func TestUnblinder_UnblindBlobSidecars_InvalidBundle(t *testing.T) {
12+
wBlock, err := consensusblocks.NewSignedBeaconBlock(&ethpb.SignedBeaconBlockDeneb{
13+
Block: &ethpb.BeaconBlockDeneb{
14+
Body: &ethpb.BeaconBlockBodyDeneb{},
15+
},
16+
Signature: nil,
17+
})
18+
assert.NoError(t, err)
19+
_, err = unblindBlobsSidecars(wBlock, nil)
20+
assert.NoError(t, err)
21+
22+
wBlock, err = consensusblocks.NewSignedBeaconBlock(&ethpb.SignedBeaconBlockDeneb{
23+
Block: &ethpb.BeaconBlockDeneb{
24+
Body: &ethpb.BeaconBlockBodyDeneb{
25+
BlobKzgCommitments: [][]byte{[]byte("a"), []byte("b")},
26+
},
27+
},
28+
Signature: nil,
29+
})
30+
assert.NoError(t, err)
31+
_, err = unblindBlobsSidecars(wBlock, nil)
32+
assert.ErrorContains(t, "no valid bundle provided", err)
33+
34+
}

0 commit comments

Comments
 (0)
Please sign in to comment.