Description
The current phase0 fork-choice spec adds another branch to get_proposer_head that reorgs a weak previous-slot head when the proposer equivocated:
elif all([head_weak, current_time_ok, proposer_equivocation]):
return parent_node
This base behavior applies across forks. The Gloas version retains the same equivocation branch, but additionally preserves the selected parent's payload status.
Lodestar's current getProposerHead() only follows the regular proposer-reorg path. It does not check for proposer equivocation and still requires the normal conditions, including isParentStrong().
This is related to the Gloas should_apply_proposer_boost rule: when the next proposer sees a weak equivocating head, it is expected to build on the parent. Unlike should_apply_proposer_boost, this get_proposer_head branch considers any known equivocation and does not apply a PTC-timeliness filter.
Specs:
Related:
Expected behavior
Across forks, return the parent when:
- the head is weak
- the head is from the previous slot (
current_time_ok)
- another block from the same proposer and slot is known
For Gloas, preserve the correct parent payload status when returning the parent.
Add coverage for the equivocation branch. If #9757 provides the underlying observation data, keep its builder-facing semantics separate from the fork-choice integration and define whether this rule should consume signature-verified roots or only blocks imported into fork choice. The spec currently checks store.blocks.
Description
The current phase0 fork-choice spec adds another branch to
get_proposer_headthat reorgs a weak previous-slot head when the proposer equivocated:This base behavior applies across forks. The Gloas version retains the same equivocation branch, but additionally preserves the selected parent's payload status.
Lodestar's current
getProposerHead()only follows the regular proposer-reorg path. It does not check for proposer equivocation and still requires the normal conditions, includingisParentStrong().This is related to the Gloas
should_apply_proposer_boostrule: when the next proposer sees a weak equivocating head, it is expected to build on the parent. Unlikeshould_apply_proposer_boost, thisget_proposer_headbranch considers any known equivocation and does not apply a PTC-timeliness filter.Specs:
Related:
Expected behavior
Across forks, return the parent when:
current_time_ok)For Gloas, preserve the correct parent payload status when returning the parent.
Add coverage for the equivocation branch. If #9757 provides the underlying observation data, keep its builder-facing semantics separate from the fork-choice integration and define whether this rule should consume signature-verified roots or only blocks imported into fork choice. The spec currently checks
store.blocks.