From dc07433d878edd49c376ed62a9f5749cc5ad31f9 Mon Sep 17 00:00:00 2001 From: Minh Vu Date: Thu, 21 May 2026 09:56:15 +0200 Subject: [PATCH] beacon/engine: preserve nil blob list JSON (#35019) Fixes a regression where nil results from getBlobs were encoded as an empty array instead of null. --------- Co-authored-by: Felix Lange --- beacon/engine/bapl_encode.go | 6 ++++++ eth/catalyst/api_test.go | 8 ++++++++ 2 files changed, 14 insertions(+) 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) {