From cf53309224a0809ef40210ccb5752488d7eefd40 Mon Sep 17 00:00:00 2001 From: dapplion <35266934+dapplion@users.noreply.github.com> Date: Tue, 9 Jun 2026 13:17:11 +0200 Subject: [PATCH] Enable Gloas fork choice compliance --- consensus/proto_array/src/proto_array.rs | 2 +- .../src/proto_array_fork_choice.rs | 27 ------------------- testing/ef_tests/check_all_files_accessed.py | 2 -- testing/ef_tests/src/cases/fork_choice.rs | 3 ++- testing/ef_tests/src/handler.rs | 2 +- 5 files changed, 4 insertions(+), 32 deletions(-) diff --git a/consensus/proto_array/src/proto_array.rs b/consensus/proto_array/src/proto_array.rs index bea561c8ef..a669323afa 100644 --- a/consensus/proto_array/src/proto_array.rs +++ b/consensus/proto_array/src/proto_array.rs @@ -1303,7 +1303,7 @@ impl ProtoArray { /// This is similar to `find_head_walk`, except it walks every viable branch instead of taking /// the maximum child at each step. #[allow(clippy::too_many_arguments)] - pub(crate) fn filtered_block_tree_leaves_and_weights( + pub fn filtered_block_tree_leaves_and_weights( &self, justified_root: &Hash256, current_slot: Slot, diff --git a/consensus/proto_array/src/proto_array_fork_choice.rs b/consensus/proto_array/src/proto_array_fork_choice.rs index c75a5d023f..9711f56b0b 100644 --- a/consensus/proto_array/src/proto_array_fork_choice.rs +++ b/consensus/proto_array/src/proto_array_fork_choice.rs @@ -1119,33 +1119,6 @@ impl ProtoArrayForkChoice { .map(|node| node.weight()) } - /// Returns the leaves of the filtered block tree (rooted at `justified_root`) along with - /// their weights — i.e. roots that are viable for head and have no descendant that is also - /// viable for head. Mirrors the spec's `viable_for_head_roots_and_weights` check. - #[allow(clippy::too_many_arguments)] - pub fn filtered_block_tree_leaves_and_weights( - &self, - justified_root: &Hash256, - current_slot: Slot, - justified_checkpoint: Checkpoint, - finalized_checkpoint: Checkpoint, - proposer_boost_root: Hash256, - justified_balances: &JustifiedBalances, - spec: &ChainSpec, - ) -> Result, String> { - self.proto_array - .filtered_block_tree_leaves_and_weights::( - justified_root, - current_slot, - justified_checkpoint, - finalized_checkpoint, - proposer_boost_root, - justified_balances, - spec, - ) - .map_err(|e| format!("filtered_block_tree_leaves_and_weights failed: {e:?}")) - } - /// Returns the payload status of the head node based on accumulated weights and tiebreaker. /// /// See `ProtoArray` documentation. diff --git a/testing/ef_tests/check_all_files_accessed.py b/testing/ef_tests/check_all_files_accessed.py index 85e35b5147..e012d6300e 100755 --- a/testing/ef_tests/check_all_files_accessed.py +++ b/testing/ef_tests/check_all_files_accessed.py @@ -88,8 +88,6 @@ excluded_paths = [ "tests/.*/.*/fast_confirmation", # TODO: fork choice compliance invalid_message tests not implemented yet "tests/minimal/.*/fork_choice_compliance/invalid_message_test/.*", - # TODO: fork choice compliance tests are implemented for Fulu only. - "tests/minimal/gloas/fork_choice_compliance/.*", ] diff --git a/testing/ef_tests/src/cases/fork_choice.rs b/testing/ef_tests/src/cases/fork_choice.rs index 4c901838a9..add0beb3f2 100644 --- a/testing/ef_tests/src/cases/fork_choice.rs +++ b/testing/ef_tests/src/cases/fork_choice.rs @@ -1424,6 +1424,7 @@ impl Tester { let justified_balances = fork_choice.fc_store().justified_balances().clone(); let actual = fork_choice .proto_array() + .core_proto_array() .filtered_block_tree_leaves_and_weights::( &justified.root, current_slot, @@ -1435,7 +1436,7 @@ impl Tester { ) .map_err(|e| { Error::InternalError(format!( - "filtered_block_tree_leaves_and_weights failed: {e}" + "filtered_block_tree_leaves_and_weights failed: {e:?}" )) })?; drop(fork_choice); diff --git a/testing/ef_tests/src/handler.rs b/testing/ef_tests/src/handler.rs index 1a4db0d3bd..64ca54069c 100644 --- a/testing/ef_tests/src/handler.rs +++ b/testing/ef_tests/src/handler.rs @@ -779,7 +779,7 @@ impl Handler for ForkChoiceComplianceHandler { } fn is_enabled_for_fork(&self, fork_name: ForkName) -> bool { - cfg!(feature = "fake_crypto") && fork_name == ForkName::Fulu + cfg!(feature = "fake_crypto") && fork_name.fulu_enabled() } fn disabled_forks(&self) -> Vec {