From 9b7d3c583f5888fbc9d9d0c674f93d6386178b34 Mon Sep 17 00:00:00 2001 From: samliok Date: Thu, 13 Aug 2026 18:02:12 -0400 Subject: [PATCH 1/2] Stop indexing and treat all senders as non-validators once the epoch is sealed --- simplex/epoch.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/simplex/epoch.go b/simplex/epoch.go index 1377da11..e6a6dab5 100644 --- a/simplex/epoch.go +++ b/simplex/epoch.go @@ -166,7 +166,7 @@ func (e *Epoch) HandleMessage(msg *common.Message, from common.NodeID) error { } _, known := e.validatorsToPKs[string(from)] - if !known { + if !known || e.isEpochSealed() { e.Logger.Debug("Received message from a non-validator node", zap.Stringer("nodeID", from)) switch { case msg.ReplicationRequest != nil && e.ReplicationEnabled: @@ -1466,13 +1466,17 @@ func (e *Epoch) indexFinalizations(startRound uint64) error { } func (e *Epoch) indexFinalization(block common.VerifiedBlock, finalization common.Finalization) error { - if err := e.Storage.Index(e.finishCtx, block, finalization); err != nil { - return err + // index only if the epoch is not sealed + if !e.isEpochSealed() { + if err := e.Storage.Index(e.finishCtx, block, finalization); err != nil { + return err + } + e.Logger.Info("Committed block", + zap.Uint64("round", finalization.Finalization.Round), + zap.Uint64("sequence", finalization.Finalization.Seq), + zap.Stringer("digest", finalization.Finalization.Digest)) } - e.Logger.Info("Committed block", - zap.Uint64("round", finalization.Finalization.Round), - zap.Uint64("sequence", finalization.Finalization.Seq), - zap.Stringer("digest", finalization.Finalization.Digest)) + e.lastBlock = &common.VerifiedFinalizedBlock{ VerifiedBlock: block, Finalization: finalization, From 5e8fbe2a4a2b652a64caee34ded2f40828de25db Mon Sep 17 00:00:00 2001 From: samliok Date: Thu, 13 Aug 2026 19:05:41 -0400 Subject: [PATCH 2/2] remove epoch sealed check --- simplex/epoch.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/simplex/epoch.go b/simplex/epoch.go index e6a6dab5..962f53f0 100644 --- a/simplex/epoch.go +++ b/simplex/epoch.go @@ -1467,15 +1467,13 @@ func (e *Epoch) indexFinalizations(startRound uint64) error { func (e *Epoch) indexFinalization(block common.VerifiedBlock, finalization common.Finalization) error { // index only if the epoch is not sealed - if !e.isEpochSealed() { - if err := e.Storage.Index(e.finishCtx, block, finalization); err != nil { - return err - } - e.Logger.Info("Committed block", - zap.Uint64("round", finalization.Finalization.Round), - zap.Uint64("sequence", finalization.Finalization.Seq), - zap.Stringer("digest", finalization.Finalization.Digest)) + if err := e.Storage.Index(e.finishCtx, block, finalization); err != nil { + return err } + e.Logger.Info("Committed block", + zap.Uint64("round", finalization.Finalization.Round), + zap.Uint64("sequence", finalization.Finalization.Seq), + zap.Stringer("digest", finalization.Finalization.Digest)) e.lastBlock = &common.VerifiedFinalizedBlock{ VerifiedBlock: block,