Skip to content

SIMD-0337: Markers for Alpenglow Fast Leader Handover#337

Merged
Benhawkins18 merged 22 commits into
solana-foundation:mainfrom
ksn6:simd-0335-parent-ready-update-marker
Oct 1, 2025
Merged

SIMD-0337: Markers for Alpenglow Fast Leader Handover#337
Benhawkins18 merged 22 commits into
solana-foundation:mainfrom
ksn6:simd-0335-parent-ready-update-marker

Conversation

@ksn6
Copy link
Copy Markdown
Contributor

@ksn6 ksn6 commented Aug 14, 2025

We propose augmenting BlockMarkerV1, introduced in SIMD-0307, to include BlockHeader and UpdateParent variants. BlockHeader, placed at the beginning of a block, indicates the parent of the block. UpdateParent signals that the intended parent is different from what was initially indicated, paving the way for Fast Leader Handover support in Alpenglow (section 2.7 of https://www.anza.xyz/alpenglow-1-1).

Fast Leader Handover will minimize the synchronization delay between consecutive leaders, increasing throughput.

This SIMD purely introduces the types required for Fast Leader Handover - the algorithmic details of Fast Leader Handover itself are outlined in SIMD-0326.

NOTE: Fast Leader Handover may also be referred to as "optimistic block production."

@ksn6 ksn6 changed the title SIMD-X: ParentReadyUpdate Marker for Alpenglow Optimistic Block Packing SIMD-0337: ParentReadyUpdate Marker for Alpenglow Optimistic Block Packing Aug 14, 2025
@rogerANZA
Copy link
Copy Markdown
Contributor

Can we please not call it ParentReadyUpdate? ParentReady is an internal event, so it might be confusing to use the same name here. We just communicate the parent again... so the same as the regular parent announcement in the first slice? Also, why blockmarker?

@ksn6
Copy link
Copy Markdown
Contributor Author

ksn6 commented Aug 14, 2025

We just communicate the parent again... so the same as the regular parent announcement in the first slice?

Right now, the initial parent specification for a block is disseminated in the first shred of a block. In contrast, we will be using the recently introduced BlockComponent type to disseminate the special marker required for a parent switch in optimistic block packing. In a separate SIMD, post-Alpenglow launch, we'll eventually disseminate the initial block parent via a BlockComponent type as well.

This being said, I'm strongly in favor of having separate marker types for (1) the initial parent and (2) the parent switch for optimistic block packing, despite the high likelihood of these two types essentially doing the same thing.

This is because maintaining code is far easier (e.g., we can easily upgrade each type separately) + reading code is much easier and less error-prone.

Can we please not call it ParentReadyUpdate? ParentReady is an internal event, so it might be confusing to use the same name here.

How about UpdateParent?

Also, why _block_marker?

What do you mean?

@rogerANZA
Copy link
Copy Markdown
Contributor

rogerANZA commented Aug 14, 2025

I was only worried about language. UpdateParent I like.

nit:

first shred of a block

first slice?

@kobi-lizard
Copy link
Copy Markdown

I think we have to change how the parent is initially indicated for correctness. I mean before Alpenglow.

Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
@ksn6
Copy link
Copy Markdown
Contributor Author

ksn6 commented Aug 15, 2025

I think we have to change how the parent is initially indicated for correctness. I mean before Alpenglow.

This doesn't seem necessary for correctness. Agreed that the current design isn't optimal, though we can look into changing this after Alpenglow launches.

@rogerANZA
Copy link
Copy Markdown
Contributor

why is it called "Alpenglow Optimistic Block Packing". To me this sounds a bit like greedily pack Txs into a block. something like "Alpenglow Fast Leader Handover" would make more sense.

@rogerANZA
Copy link
Copy Markdown
Contributor

maybe add a reference to the section 2.7 in the whitepaper in the SIMD?

@ksn6
Copy link
Copy Markdown
Contributor Author

ksn6 commented Aug 22, 2025

why is it called "Alpenglow Optimistic Block Packing". To me this sounds a bit like greedily pack Txs into a block. something like "Alpenglow Fast Leader Handover" would make more sense.

it's because the next leader is optimistically packing a block, in the hopes that ParentReady doesn't switch to an earlier parent; "optimistic" != "optimal" which is what greedy typically refers to in the context of approximation algorithms for packing

that being said - don't feel too strongly about this; let me know if you'd really like to change this

maybe add a reference to the section 2.7 in the whitepaper in the SIMD?

we make the reference to the paper here in the SIMD:

https://github.com/solana-foundation/solana-improvement-documents/pull/337/files#diff-631937531eeb51a129767f8899e4398615b51d0c411e73c05885dcd190fea4e0R38-R40

@rogerANZA
Copy link
Copy Markdown
Contributor

why is it called "Alpenglow Optimistic Block Packing". To me this sounds a bit like greedily pack Txs into a block. something like "Alpenglow Fast Leader Handover" would make more sense.

it's because the next leader is optimistically packing a block, in the hopes that ParentReady doesn't switch to an earlier parent; "optimistic" != "optimal" which is what greedy typically refers to in the context of approximation algorithms for packing

Mh. I probably would call it "Alpenglow Fast [Leader] Handover". Packing (e.g., bin packing) means something very different in CS and Math. And since since packing a block actually makes a lot of sense even for Solana, it's just very misleading in this context.

that being said - don't feel too strongly about this; let me know if you'd really like to change this

Yes, I would. Otherwise we have another thing where the naming is not optimal in the future.

@ksn6 ksn6 changed the title SIMD-0337: ParentReadyUpdate Marker for Alpenglow Optimistic Block Packing SIMD-0337: ParentReadyUpdate Marker for Alpenglow Fast Leader Handover Aug 22, 2025
@bw-solana
Copy link
Copy Markdown
Contributor

bw-solana commented Sep 5, 2025

why is it called "Alpenglow Optimistic Block Packing". To me this sounds a bit like greedily pack Txs into a block. something like "Alpenglow Fast Leader Handover" would make more sense.

it's because the next leader is optimistically packing a block, in the hopes that ParentReady doesn't switch to an earlier parent; "optimistic" != "optimal" which is what greedy typically refers to in the context of approximation algorithms for packing

Mh. I probably would call it "Alpenglow Fast [Leader] Handover". Packing (e.g., bin packing) means something very different in CS and Math. And since since packing a block actually makes a lot of sense even for Solana, it's just very misleading in this context.

that being said - don't feel too strongly about this; let me know if you'd really like to change this

Yes, I would. Otherwise we have another thing where the naming is not optimal in the future.

Another alternative: "Alpenglow Optimistic Parent Selection" ?

We're being optimistic that we know the right parent block to build off of.

Agree that "Optimistic Block Packing" could easily confuse a casual reader.

Edit: Just noticed title was already changed (weeks ago, ha!). I'm fine with it as is

@rogerANZA
Copy link
Copy Markdown
Contributor

Another alternative: "Alpenglow Optimistic Parent Selection" ?

Also good. I would still say that handover is a bit more explicit since this problem only appears during a leader handover.

Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md Outdated
Comment thread proposals/simd-0335-parent-ready-update-marker.md
@ksn6 ksn6 changed the title SIMD-0337: ParentReadyUpdate Marker for Alpenglow Fast Leader Handover SIMD-0337: UpdateParent Marker for Alpenglow Fast Leader Handover Sep 12, 2025
Copy link
Copy Markdown
Contributor

@lidatong lidatong left a comment

Choose a reason for hiding this comment

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

sorry for the delay -- lgtm seems my questions were already addressed by others in PR comments

Comment thread proposals/0337-parent-ready-update-marker.md
@bw-solana
Copy link
Copy Markdown
Contributor

Holding off on approving from Anza side.

We've discussed potential issues w/ observing the parent switch in replay execution that are triggering new ideas on how to communicate this information

@ksn6 ksn6 changed the title SIMD-0337: UpdateParent Marker for Alpenglow Fast Leader Handover SIMD-0337: Block Markers for Alpenglow Fast Leader Handover Sep 28, 2025
@ksn6 ksn6 changed the title SIMD-0337: Block Markers for Alpenglow Fast Leader Handover SIMD-0337: Markers for Alpenglow Fast Leader Handover Sep 28, 2025
@kobi-lizard
Copy link
Copy Markdown

My demands have been satisfied and I support the current form of this SIMD 🐸

@ksn6
Copy link
Copy Markdown
Contributor Author

ksn6 commented Sep 28, 2025

Holding off on approving from Anza side.

We've discussed potential issues w/ observing the parent switch in replay execution that are triggering new ideas on how to communicate this information

My demands have been satisfied and I support the current form of this SIMD 🐸

For more context, a few folks came up with a scenario that leads to liveness issues if we are only able to detect UpdateParent messages during replay.

To address this, we enable UpdateParent detection on shred ingest as discussed in the "DATA_COMPLETE_SHRED Placement Rules" section.

Copy link
Copy Markdown
Contributor

@bw-solana bw-solana left a comment

Choose a reason for hiding this comment

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

Approving from Anza side

Comment thread proposals/0337-parent-ready-update-marker.md Outdated
Comment thread proposals/0337-parent-ready-update-marker.md Outdated
Copy link
Copy Markdown
Contributor

@Benhawkins18 Benhawkins18 left a comment

Choose a reason for hiding this comment

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

I see the right approvers from Anza and Jump

@Benhawkins18 Benhawkins18 merged commit 5d77a08 into solana-foundation:main Oct 1, 2025
4 checks passed
ksn6 added a commit to anza-xyz/alpenglow that referenced this pull request Oct 29, 2025
#### Problem and Summary of Changes

Construct and disseminate the block header. In a follow-up PR, we'll
parse the header in replay.

We discuss block headers in detail here:
solana-foundation/solana-improvement-documents#337.
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Jan 12, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants