fix deposit bridge logic and ignore some tests

This commit is contained in:
Eitan Seri-Levi
2026-06-03 08:21:45 +03:00
parent 1336bf742a
commit 3892966d33
2 changed files with 18 additions and 1 deletions

View File

@@ -42,6 +42,13 @@ pub fn upgrade_state_to_fulu<E: EthSpec>(
let epoch = pre_state.current_epoch();
let proposer_lookahead = initialize_proposer_lookahead(pre_state, spec)?;
let pre = pre_state.as_electra_mut()?;
// Finalize the Eth1 bridge at the Fulu fork (spec PR #5322).
let deposit_requests_start_index =
if pre.deposit_requests_start_index == spec.unset_deposit_requests_start_index {
pre.eth1_data.deposit_count
} else {
pre.deposit_requests_start_index
};
// Where possible, use something like `mem::take` to move fields from behind the &mut
// reference. For other fields that don't have a good default value, use `clone`.
//
@@ -93,7 +100,7 @@ pub fn upgrade_state_to_fulu<E: EthSpec>(
next_withdrawal_validator_index: pre.next_withdrawal_validator_index,
historical_summaries: pre.historical_summaries.clone(),
// Electra
deposit_requests_start_index: pre.deposit_requests_start_index,
deposit_requests_start_index,
deposit_balance_to_consume: pre.deposit_balance_to_consume,
exit_balance_to_consume: pre.exit_balance_to_consume,
earliest_exit_epoch: pre.earliest_exit_epoch,

View File

@@ -75,6 +75,16 @@ impl<E: EthSpec> Case for ForkTest<E> {
ForkName::Gloas => upgrade_to_gloas(&mut result_state, spec).map(|_| result_state),
};
// TODO(gloas) theres a bug in alpha.9 fork vectors that will be fixed once spec PR #5322 is merged
// We have to ignore these tests until alpha.10
if fork_name.fulu_enabled()
&& let (Ok(result_state), Some(expected_state)) = (result.as_mut(), expected.as_ref())
&& let Ok(expected_drsi) = expected_state.deposit_requests_start_index()
&& let Ok(result_drsi) = result_state.deposit_requests_start_index_mut()
{
*result_drsi = expected_drsi;
}
compare_beacon_state_results_without_caches(&mut result, &mut expected)
}
}