From eb9feabd6f880d049a9a15b60a8dbc418862dddd Mon Sep 17 00:00:00 2001 From: terence Date: Wed, 19 Nov 2025 11:51:46 -0500 Subject: [PATCH] stop emitting payload attribute events during late block handling (#16026) * stop emitting payload attribute events during late block handling when we are not proposing the next slot * Change the behavior to not even enter FCU if we are not proposing next slot --- beacon-chain/blockchain/process_block.go | 7 ------- changelog/late-block-dont-fire-attribute.md | 3 +++ 2 files changed, 3 insertions(+), 7 deletions(-) create mode 100644 changelog/late-block-dont-fire-attribute.md diff --git a/beacon-chain/blockchain/process_block.go b/beacon-chain/blockchain/process_block.go index 01aae56f94..5f21e73599 100644 --- a/beacon-chain/blockchain/process_block.go +++ b/beacon-chain/blockchain/process_block.go @@ -948,13 +948,6 @@ func (s *Service) lateBlockTasks(ctx context.Context) { attribute := s.getPayloadAttribute(ctx, headState, s.CurrentSlot()+1, headRoot[:]) // return early if we are not proposing next slot if attribute.IsEmpty() { - headBlock, err := s.headBlock() - if err != nil { - log.WithError(err).WithField("head_root", headRoot).Error("Unable to retrieve head block to fire payload attributes event") - } - // notifyForkchoiceUpdate fires the payload attribute event. But in this case, we won't - // call notifyForkchoiceUpdate, so the event is fired here. - go s.firePayloadAttributesEvent(s.cfg.StateNotifier.StateFeed(), headBlock, headRoot, s.CurrentSlot()+1) return } diff --git a/changelog/late-block-dont-fire-attribute.md b/changelog/late-block-dont-fire-attribute.md new file mode 100644 index 0000000000..7edef9647f --- /dev/null +++ b/changelog/late-block-dont-fire-attribute.md @@ -0,0 +1,3 @@ +### Changed + +- Stop emitting payload attribute events during late block handling when we are not proposing the next slot