From dd3c9652c39e2afddbd75f4e754caed4b827a811 Mon Sep 17 00:00:00 2001 From: Rupam Dey <117000803+rupam-04@users.noreply.github.com> Date: Thu, 22 Aug 2024 22:43:10 +0530 Subject: [PATCH] fix: replace `BeaconBlockHeader` in `createLightClientBootstrap` with `LightClientHeader` (#14374) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: replace `BeaconBlockHeader` in `createLightClientBootstrap` with `LightClientHeader` * minor fix in `handlers_test.go` * check if `beacon` is `nil` instead of `header` --------- Co-authored-by: Radosław Kapka --- api/server/structs/endpoints_lightclient.go | 6 +++++- beacon-chain/rpc/eth/light-client/handlers_test.go | 2 +- beacon-chain/rpc/eth/light-client/helpers.go | 11 +++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/api/server/structs/endpoints_lightclient.go b/api/server/structs/endpoints_lightclient.go index 7204e177dc..d738007339 100644 --- a/api/server/structs/endpoints_lightclient.go +++ b/api/server/structs/endpoints_lightclient.go @@ -1,12 +1,16 @@ package structs +type LightClientHeader struct { + Beacon *BeaconBlockHeader `json:"beacon"` +} + type LightClientBootstrapResponse struct { Version string `json:"version"` Data *LightClientBootstrap `json:"data"` } type LightClientBootstrap struct { - Header *BeaconBlockHeader `json:"header"` + Header *LightClientHeader `json:"header"` CurrentSyncCommittee *SyncCommittee `json:"current_sync_committee"` CurrentSyncCommitteeBranch []string `json:"current_sync_committee_branch"` } diff --git a/beacon-chain/rpc/eth/light-client/handlers_test.go b/beacon-chain/rpc/eth/light-client/handlers_test.go index aff9643128..59e3492394 100644 --- a/beacon-chain/rpc/eth/light-client/handlers_test.go +++ b/beacon-chain/rpc/eth/light-client/handlers_test.go @@ -73,7 +73,7 @@ func TestLightClientHandler_GetLightClientBootstrap(t *testing.T) { resp := &structs.LightClientBootstrapResponse{} require.NoError(t, json.Unmarshal(writer.Body.Bytes(), resp)) require.Equal(t, "capella", resp.Version) - require.Equal(t, hexutil.Encode(header.Header.BodyRoot), resp.Data.Header.BodyRoot) + require.Equal(t, hexutil.Encode(header.Header.BodyRoot), resp.Data.Header.Beacon.BodyRoot) require.NotNil(t, resp.Data) } diff --git a/beacon-chain/rpc/eth/light-client/helpers.go b/beacon-chain/rpc/eth/light-client/helpers.go index eb87610d78..e5c8a94966 100644 --- a/beacon-chain/rpc/eth/light-client/helpers.go +++ b/beacon-chain/rpc/eth/light-client/helpers.go @@ -67,17 +67,20 @@ func createLightClientBootstrap(ctx context.Context, state state.BeaconState) (* branch[i] = hexutil.Encode(proof) } - header := structs.BeaconBlockHeaderFromConsensus(latestBlockHeader) - if header == nil { + beacon := structs.BeaconBlockHeaderFromConsensus(latestBlockHeader) + if beacon == nil { return nil, fmt.Errorf("could not get beacon block header") } + header := &structs.LightClientHeader{ + Beacon: beacon, + } // Above shared util function won't calculate state root, so we need to do it manually stateRoot, err := state.HashTreeRoot(ctx) if err != nil { return nil, fmt.Errorf("could not get state root: %s", err.Error()) } - header.StateRoot = hexutil.Encode(stateRoot[:]) + header.Beacon.StateRoot = hexutil.Encode(stateRoot[:]) // Return result result := &structs.LightClientBootstrap{ @@ -237,7 +240,7 @@ func NewLightClientBootstrapFromJSON(bootstrapJSON *structs.LightClientBootstrap var err error - v1Alpha1Header, err := bootstrapJSON.Header.ToConsensus() + v1Alpha1Header, err := bootstrapJSON.Header.Beacon.ToConsensus() if err != nil { return nil, err }