diff --git a/beacon/engine/bapl_encode.go b/beacon/engine/bapl_encode.go index b9f46ebf26..5a1ce47658 100644 --- a/beacon/engine/bapl_encode.go +++ b/beacon/engine/bapl_encode.go @@ -22,6 +22,9 @@ import ( // MarshalJSON implements json.Marshaler. func (list BlobAndProofListV1) MarshalJSON() ([]byte, error) { + if list == nil { + return []byte("null"), nil + } var b jsonw.Buffer b.Array(func() { for _, item := range list { @@ -46,6 +49,9 @@ func marshalBlobAndProofV1(b *jsonw.Buffer, item *BlobAndProofV1) { // MarshalJSON implements json.Marshaler. func (list BlobAndProofListV2) MarshalJSON() ([]byte, error) { + if list == nil { + return []byte("null"), nil + } var b jsonw.Buffer b.Array(func() { for _, item := range list { diff --git a/eth/catalyst/api_test.go b/eth/catalyst/api_test.go index 65d78d84ee..05d688ed9f 100644 --- a/eth/catalyst/api_test.go +++ b/eth/catalyst/api_test.go @@ -22,6 +22,7 @@ import ( "crypto/ecdsa" crand "crypto/rand" "crypto/sha256" + "encoding/json" "errors" "fmt" "math/big" @@ -2105,6 +2106,13 @@ func runGetBlobs(t testing.TB, getBlobs getBlobsFn, start, limit int, fillRandom } else { // Nil is expected if getBlobs can not return a partial response expect = nil + enc, err := json.Marshal(result) + if err != nil { + t.Fatalf("Failed to encode result for case %s: %v", name, err) + } + if string(enc) != "null" { + t.Fatalf("Unexpected JSON result for case %s: got %s, want null", name, enc) + } } } if !reflect.DeepEqual(result, expect) {