Skip to content

Non-validator: Store blocks from many leaders - #604

Merged
samliok merged 7 commits into
mainfrom
multi-block
Sep 28, 2026
Merged

samliok merged 7 commits into
mainfrom
multi-block

Conversation

@samliok

@samliok samliok commented Sep 18, 2026

Copy link
Copy Markdown
Collaborator

Adversaries can send us many blocks for different sequences, and we can't tell which block is legit until we receive the finalization.

Closes #565

@samliok samliok changed the title Store incomplete sequences from many leaders Non-validator: Store blocks from many leaders Sep 18, 2026
Comment thread nonvalidator/non_validator.go Outdated
Comment thread nonvalidator/non_validator.go Outdated
n.sequenceReplicator.ReceivedFutureFinalization(finalization, n.nextSeqToCommit())
return nil
for _, block := range blocks {
if block.BlockHeader().Digest == bh.Digest {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if it's not equal shouldn't we delete the block from memory?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe the finalization we received is for a telock, but the blocks we have in memory are for the next epoch.

Comment thread nonvalidator/non_validator_test.go
Comment thread nonvalidator/non_validator.go
Comment thread nonvalidator/non_validator.go
Comment thread nonvalidator/non_validator_test.go Outdated
tc := newSeededChain(t, testNodes, 2)
b3 := tc.appendBlock()
junk := testutil.NewTestBlock(common.ProtocolMetadata{
Round: b3.Metadata.Round + 1,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The junk block should be from the same leader no? so it should be b3.Metadata.Round + len(testNodes) no?

@yacovm

yacovm commented Sep 25, 2026

Copy link
Copy Markdown
Collaborator

small nit, otherwise LGTM.

@samliok
samliok merged commit 6671673 into main Sep 28, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Byzantine validator can wedge per-sequence block slot with self-chosen leader round

2 participants