SIMD-0337: Markers for Alpenglow Fast Leader Handover#337
Conversation
ParentReadyUpdate Marker for Alpenglow Optimistic Block PackingParentReadyUpdate Marker for Alpenglow Optimistic Block Packing
|
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? |
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.
How about
What do you mean? |
|
I was only worried about language. UpdateParent I like. nit:
first slice? |
|
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. |
|
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. |
|
maybe add a reference to the section 2.7 in the whitepaper in the SIMD? |
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
we make the reference to the paper here in the SIMD: |
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.
Yes, I would. Otherwise we have another thing where the naming is not optimal in the future. |
ParentReadyUpdate Marker for Alpenglow Optimistic Block PackingParentReadyUpdate Marker for Alpenglow Fast Leader Handover
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 |
Also good. I would still say that handover is a bit more explicit since this problem only appears during a leader handover. |
ParentReadyUpdate Marker for Alpenglow Fast Leader HandoverUpdateParent Marker for Alpenglow Fast Leader Handover
lidatong
left a comment
There was a problem hiding this comment.
sorry for the delay -- lgtm seems my questions were already addressed by others in PR comments
|
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 |
UpdateParent Marker for Alpenglow Fast Leader Handover|
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 To address this, we enable |
bw-solana
left a comment
There was a problem hiding this comment.
Approving from Anza side
Benhawkins18
left a comment
There was a problem hiding this comment.
I see the right approvers from Anza and Jump
#### 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.
We propose augmenting
BlockMarkerV1, introduced in SIMD-0307, to includeBlockHeaderandUpdateParentvariants.BlockHeader, placed at the beginning of a block, indicates the parent of the block.UpdateParentsignals 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."