From 7aee98aebc2a3fd9577dad58b43c58d2ee53d7d8 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Fri, 12 Feb 2021 09:50:07 -0800 Subject: [PATCH] Use latest block header + slot as key --- beacon-chain/core/state/skip_slot_cache.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/beacon-chain/core/state/skip_slot_cache.go b/beacon-chain/core/state/skip_slot_cache.go index f3fe4fe944cd..371618789d3c 100644 --- a/beacon-chain/core/state/skip_slot_cache.go +++ b/beacon-chain/core/state/skip_slot_cache.go @@ -2,6 +2,7 @@ package state import ( "context" + "errors" "github.com/prysmaticlabs/prysm/beacon-chain/cache" beaconstate "github.com/prysmaticlabs/prysm/beacon-chain/state" @@ -19,7 +20,11 @@ var SkipSlotCache = cache.NewSkipSlotCache() // state root is in the mix to defend against different forks with same skip slots // to hit the same cache. We don't want beacon states mixed up between different chains. func cacheKey(ctx context.Context, state *beaconstate.BeaconState) ([32]byte, error) { - r, err := state.HashTreeRoot(ctx) + bh := state.LatestBlockHeader() + if bh == nil { + return [32]byte{}, errors.New("block head in state can't be nil") + } + r, err := bh.HashTreeRoot() if err != nil { return [32]byte{}, err }