Skip to content
Open
Show file tree
Hide file tree
Changes from 16 commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
2c3a6f5
extend data structures for gloas forkchoice
Tomi-3-0 Dec 16, 2025
9001418
update vote processing
Tomi-3-0 Dec 17, 2025
c4017ed
payload timeliness and extension logic
Tomi-3-0 Dec 17, 2025
c748e52
implement payload extension logic
Tomi-3-0 Dec 19, 2025
2fc45b9
implement is_supporting_vote logic
Tomi-3-0 Dec 23, 2025
327276f
implement vote support logic for gloas
Tomi-3-0 Dec 31, 2025
391b5fd
Implement get node children
Tomi-3-0 Dec 31, 2025
33613d2
Implement head selection logic for gloas
Tomi-3-0 Dec 31, 2025
2a60f8d
update process_block with forkchoice chnages
Tomi-3-0 Dec 31, 2025
26452f4
update process_attestation call sites
Tomi-3-0 Jan 1, 2026
134c290
update copyright year
Tomi-3-0 Jan 1, 2026
3a3767e
Calculate correct physical index
Tomi-3-0 Jan 3, 2026
f3a13dd
remove redundant tests
Tomi-3-0 Jan 4, 2026
5ed3f36
Review: use BitArray for ptc votes
Tomi-3-0 Jan 4, 2026
e67698b
run make test
Tomi-3-0 Jan 4, 2026
abcf6a2
clean up
Tomi-3-0 Jan 4, 2026
d9eca30
remove gloas fork choice test file
Tomi-3-0 Jan 6, 2026
ff65b17
updatw with latest changes from unstable
Tomi-3-0 Feb 1, 2026
34ad6d1
Merge branch 'unstable' into gloas/fork-choice
Tomi-3-0 Feb 1, 2026
429b402
Store parent payload status in ProtoNode
Tomi-3-0 Feb 1, 2026
c3e6acb
Merge branch 'unstable' into gloas/fork-choice
Tomi-3-0 Feb 10, 2026
439e7c3
Add new forkchoice constants
Tomi-3-0 Feb 12, 2026
fa89ee3
refactor is supporting vote
Tomi-3-0 Feb 12, 2026
957ccb3
Merge branch 'unstable'
Tomi-3-0 Feb 12, 2026
79f217a
misc
Tomi-3-0 Feb 12, 2026
7e6752d
update find head
Tomi-3-0 Feb 13, 2026
e850cfb
update should extend payload
Tomi-3-0 Feb 13, 2026
c2b6115
update get weight
Tomi-3-0 Feb 13, 2026
ddb93b3
Update get head
Tomi-3-0 Feb 13, 2026
0e6eca9
Merge branch 'unstable' of github.com:status-im/nimbus-eth2 into gloa…
Tomi-3-0 Mar 26, 2026
3dca6bf
activate fork choice tests for gloas
Tomi-3-0 Mar 26, 2026
0825fdb
update constants
Tomi-3-0 Mar 26, 2026
75853c0
implement is payload data available
Tomi-3-0 Mar 26, 2026
8f418f6
add ptc data availabilty tracking to ForkChoiceBackend
Tomi-3-0 Mar 26, 2026
e4f1d37
update get node children
Tomi-3-0 Mar 26, 2026
185c4bb
implement notify ptc messages
Tomi-3-0 Mar 26, 2026
74e2e8a
update on_payload_attestation_message
Tomi-3-0 Mar 26, 2026
f3f5cd7
update process block
Tomi-3-0 Mar 26, 2026
f66b05e
implement is head weak and apply proposer boost
Tomi-3-0 Mar 26, 2026
47be668
clean up
Tomi-3-0 Mar 26, 2026
48dd155
track block timeliness and block proposer
Tomi-3-0 Mar 26, 2026
47cfe48
implement is parent strong
Tomi-3-0 Mar 26, 2026
b0a63d3
passes spec tests
Tomi-3-0 Mar 26, 2026
204c09c
seperate gloas specific fork choice functions
Tomi-3-0 Mar 27, 2026
3ba168a
refactor: DRY up ptc vote threshold checks
Tomi-3-0 Mar 27, 2026
3592d74
refactor: use an helper for calculating supporting weight
Tomi-3-0 Mar 27, 2026
effbe31
refactor add getNode helper
Tomi-3-0 Mar 27, 2026
957aed2
clean up test fixture fork choice
Tomi-3-0 Mar 27, 2026
e7540c8
remove is parent strong and head late since no reorg logic
Tomi-3-0 Mar 27, 2026
60058ef
notify forkchoice of payload availability
Tomi-3-0 Mar 27, 2026
7ebfb54
Merge remote-tracking branch 'origin/unstable' into gloas/fork-choice
Tomi-3-0 Apr 10, 2026
36ebb91
Implement Gloas fork choice filter_block_tree and fix pre-Gloas attes…
Tomi-3-0 Apr 12, 2026
dd17a20
Merge branch 'unstable'
Tomi-3-0 Apr 22, 2026
255b310
Clean up: use childrenIdx in proposer boost, simplify get_node_children
Tomi-3-0 Apr 22, 2026
5164915
Merge remote-tracking branch 'origin/unstable' into gloas/fork-choice
Tomi-3-0 Apr 24, 2026
05f27ae
update for alpha.5
Tomi-3-0 Apr 24, 2026
54f4efb
Fix Gloas fork choice spec tests
Tomi-3-0 Apr 24, 2026
b168262
update test summaries
Tomi-3-0 Apr 25, 2026
02270d8
use correct spec link
Tomi-3-0 Apr 26, 2026
8c11bee
Merge branch 'unstable' of github.com:status-im/nimbus-eth2 into gloa…
Tomi-3-0 Apr 28, 2026
8f879fd
add forkchoiceCompliance suite
Tomi-3-0 Apr 28, 2026
c461fd5
Merge branch 'unstable' of github.com:status-im/nimbus-eth2 into gloa…
Tomi-3-0 May 1, 2026
7b790ff
Distinguish absent PTC votes from negative votes
Tomi-3-0 May 1, 2026
29ae629
Merge branch 'unstable'
Tomi-3-0 May 1, 2026
abc7835
Merge branch 'unstable'
Tomi-3-0 May 2, 2026
f9de444
Fix proposer boost equivocation check and optimize get_weight
Tomi-3-0 May 2, 2026
e0e6a48
Merge branch 'unstable'
Tomi-3-0 May 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions AllTests-mainnet.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,11 @@ AllTests-mainnet
+ put()/hasSidecar(index, slot, proposer_index)/remove() test OK
+ put(sidecar)/put([sidecars])/hasSidecars/popSidecars/remove() test OK
```
## Block Processing
```diff
+ on_execution_payload: Enables FULL branch in fork choice OK
+ on_execution_payload: Marks payload as locally available OK
```
## Block pool altair processing [Preset: mainnet]
```diff
+ Invalid signatures [Preset: mainnet] OK
Expand Down Expand Up @@ -709,6 +714,17 @@ AllTests-mainnet
+ Obtaining the graffiti of an unconfigured validator returns the suggested default [Beacon OK
+ Setting the graffiti on a missing validator creates a record for it [Beacon Node] [Preset: OK
```
## Head Selection - LMD-GHOST with Payload Status
```diff
+ Descends multiple levels OK
+ Gloas: Handles virtual node expansion correctly OK
+ Gloas: Lexicographic tiebreak on root when weights equal OK
+ Gloas: Payload tiebreaker when same root, equal weight OK
+ Gloas: Pick child with highest weight OK
+ Pre-Gloas: Use standard proto_array logic OK
+ Safety: Iteration limit prevents infinite loops OK
+ Start at justified checkpoint with PENDING OK
```
## Honest validator
```diff
+ General pubsub topics OK
Expand Down
14 changes: 14 additions & 0 deletions ConsensusSpecPreset-mainnet.md
Original file line number Diff line number Diff line change
Expand Up @@ -5398,6 +5398,20 @@ ConsensusSpecPreset-mainnet
+ ForkChoice - mainnet/fulu/fork_choice/on_block/pyspec_tests/proposer_boost_is_first_block OK
+ ForkChoice - mainnet/fulu/fork_choice/on_block/pyspec_tests/proposer_boost_root_same_slot_ OK
ForkChoice - mainnet/fulu/fork_choice/should_override_forkchoice_update/pyspec_tests/shoul Skip
+ ForkChoice - mainnet/gloas/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_honest_a OK
+ ForkChoice - mainnet/gloas/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_without_attes OK
+ ForkChoice - mainnet/gloas/fork_choice/ex_ante/pyspec_tests/ex_ante_vanilla OK
+ ForkChoice - mainnet/gloas/fork_choice/get_head/pyspec_tests/chain_no_attestations OK
+ ForkChoice - mainnet/gloas/fork_choice/get_head/pyspec_tests/discard_equivocations_on_atte OK
+ ForkChoice - mainnet/gloas/fork_choice/get_head/pyspec_tests/genesis OK
+ ForkChoice - mainnet/gloas/fork_choice/get_head/pyspec_tests/shorter_chain_but_heavier_wei OK
+ ForkChoice - mainnet/gloas/fork_choice/get_head/pyspec_tests/split_tie_breaker_no_attestat OK
+ ForkChoice - mainnet/gloas/fork_choice/on_block/pyspec_tests/basic OK
+ ForkChoice - mainnet/gloas/fork_choice/on_block/pyspec_tests/on_block_bad_parent_root OK
ForkChoice - mainnet/gloas/fork_choice/on_block/pyspec_tests/on_block_future_block Skip
+ ForkChoice - mainnet/gloas/fork_choice/on_block/pyspec_tests/proposer_boost OK
+ ForkChoice - mainnet/gloas/fork_choice/on_block/pyspec_tests/proposer_boost_is_first_block OK
+ ForkChoice - mainnet/gloas/fork_choice/on_block/pyspec_tests/proposer_boost_root_same_slot OK
```
## Sync
```diff
Expand Down
12 changes: 7 additions & 5 deletions beacon_chain/consensus_object_pools/attestation_pool.nim
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# beacon_chain
# Copyright (c) 2018-2025 Status Research & Development GmbH
# Copyright (c) 2018-2026 Status Research & Development GmbH
# Licensed and distributed under either of
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
Expand Down Expand Up @@ -182,10 +182,10 @@ proc init*(T: type AttestationPool, dag: ChainDAGRef,
proc addForkChoiceVotes(
pool: var AttestationPool, slot: Slot,
attesting_indices: openArray[ValidatorIndex], block_root: Eth2Digest,
wallTime: BeaconTime) =
committee_index: CommitteeIndex, wallTime: BeaconTime) =
# Add attestation votes to fork choice
if (let v = pool.forkChoice.on_attestation(
pool.dag, slot, block_root, attesting_indices, wallTime);
pool.dag, slot, block_root, attesting_indices, committee_index, wallTime);
v.isErr):
# This indicates that the fork choice and the chain dag are out of sync -
# this is most likely the result of a bug, but we'll try to keep going -
Expand Down Expand Up @@ -464,7 +464,8 @@ proc addAttestation*(
addAttToPool(pool.electraCandidates, newAttEntry, Opt.some committee_index)
pool.addForkChoiceVotes(
attestation.data.slot, attesting_indices,
attestation.data.beacon_block_root, wallTime)
attestation.data.beacon_block_root,
attestation.data.index.CommitteeIndex, wallTime)

# There does not seem to be an SSE stream event corresponding to this,
# because both attestation and single_attestation specifically specify
Expand All @@ -486,7 +487,8 @@ proc addAttestation*(
Opt.some attestation.committee_index.CommitteeIndex)
pool.addForkChoiceVotes(
attestation.data.slot, attesting_indices,
attestation.data.beacon_block_root, wallTime)
attestation.data.beacon_block_root,
attestation.data.index.CommitteeIndex, wallTime)

# Send notification about new attestation via callback.
if not(isNil(pool.onSingleAttestationAdded)):
Expand Down
Loading
Loading