diff --git a/ConsensusSpecPreset-mainnet.md b/ConsensusSpecPreset-mainnet.md index 06b00370d..95daff8f7 100644 --- a/ConsensusSpecPreset-mainnet.md +++ b/ConsensusSpecPreset-mainnet.md @@ -52,6 +52,7 @@ ConsensusSpecPreset-mainnet + EF - Altair - Rewards - with_slashed_validators_leak [Preset: mainnet] OK + EF - Altair - Slots - double_empty_epoch [Preset: mainnet] OK + EF - Altair - Slots - empty_epoch [Preset: mainnet] OK ++ EF - Altair - Slots - historical_accumulator [Preset: mainnet] OK + EF - Altair - Slots - over_epoch_boundary [Preset: mainnet] OK + EF - Altair - Slots - slots_1 [Preset: mainnet] OK + EF - Altair - Slots - slots_2 [Preset: mainnet] OK @@ -124,6 +125,7 @@ ConsensusSpecPreset-mainnet + EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: mainnet] OK + EF - Bellatrix - Slots - double_empty_epoch [Preset: mainnet] OK + EF - Bellatrix - Slots - empty_epoch [Preset: mainnet] OK ++ EF - Bellatrix - Slots - historical_accumulator [Preset: mainnet] OK + EF - Bellatrix - Slots - over_epoch_boundary [Preset: mainnet] OK + EF - Bellatrix - Slots - slots_1 [Preset: mainnet] OK + EF - Bellatrix - Slots - slots_2 [Preset: mainnet] OK @@ -196,6 +198,7 @@ ConsensusSpecPreset-mainnet + EF - Capella - Rewards - with_slashed_validators_leak [Preset: mainnet] OK + EF - Capella - Slots - double_empty_epoch [Preset: mainnet] OK + EF - Capella - Slots - empty_epoch [Preset: mainnet] OK ++ EF - Capella - Slots - historical_accumulator [Preset: mainnet] OK + EF - Capella - Slots - over_epoch_boundary [Preset: mainnet] OK + EF - Capella - Slots - slots_1 [Preset: mainnet] OK + EF - Capella - Slots - slots_2 [Preset: mainnet] OK @@ -268,6 +271,7 @@ ConsensusSpecPreset-mainnet + EF - EIP4844 - Rewards - with_slashed_validators_leak [Preset: mainnet] OK + EF - EIP4844 - Slots - double_empty_epoch [Preset: mainnet] OK + EF - EIP4844 - Slots - empty_epoch [Preset: mainnet] OK ++ EF - EIP4844 - Slots - historical_accumulator [Preset: mainnet] OK + EF - EIP4844 - Slots - over_epoch_boundary [Preset: mainnet] OK + EF - EIP4844 - Slots - slots_1 [Preset: mainnet] OK + EF - EIP4844 - Slots - slots_2 [Preset: mainnet] OK @@ -343,6 +347,7 @@ ConsensusSpecPreset-mainnet + EF - Phase 0 - Rewards - with_slashed_validators_leak [Preset: mainnet] OK + EF - Phase 0 - Slots - double_empty_epoch [Preset: mainnet] OK + EF - Phase 0 - Slots - empty_epoch [Preset: mainnet] OK ++ EF - Phase 0 - Slots - historical_accumulator [Preset: mainnet] OK + EF - Phase 0 - Slots - over_epoch_boundary [Preset: mainnet] OK + EF - Phase 0 - Slots - slots_1 [Preset: mainnet] OK + EF - Phase 0 - Slots - slots_2 [Preset: mainnet] OK @@ -495,6 +500,7 @@ ConsensusSpecPreset-mainnet + [Invalid] EF - Capella - Sanity - Blocks - slash_and_exit_same_index [Preset: mainnet] OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block OK ++ [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_bls_changes_same_block [Prese OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: m OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pr OK @@ -507,6 +513,8 @@ ConsensusSpecPreset-mainnet + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: mai OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_same_slot_block_transition [Preset: mai OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [ OK ++ [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_two_bls_changes_of_different_addresses_ OK ++ [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_withdrawal_fail_second_block_payload_is OK + [Invalid] EF - EIP4844 - Sanity - Blocks - slash_and_exit_same_index [Preset: mainnet] OK + [Invalid] EF - Phase 0 - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK + [Invalid] EF - Phase 0 - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block OK @@ -730,22 +738,27 @@ ConsensusSpecPreset-mainnet + [Valid] EF - EIP4844 - Sanity - Blocks - full_random_operations_1 [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - full_random_operations_2 [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - full_random_operations_3 [Preset: mainnet] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - full_withdrawal_in_epoch_transition [Preset: ma OK + [Valid] EF - EIP4844 - Sanity - Blocks - high_proposer_index [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - historical_batch [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - inactivity_scores_full_participation_leaking [P OK + [Valid] EF - EIP4844 - Sanity - Blocks - inactivity_scores_leaking [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - is_execution_enabled_false [Preset: mainnet] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - many_partial_withdrawals_in_epoch_transition [P OK + [Valid] EF - EIP4844 - Sanity - Blocks - max_blobs [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: OK + [Valid] EF - EIP4844 - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pr OK + [Valid] EF - EIP4844 - Sanity - Blocks - multiple_different_proposer_slashings_same_bloc OK + [Valid] EF - EIP4844 - Sanity - Blocks - multiple_different_validator_exits_same_block [ OK + [Valid] EF - EIP4844 - Sanity - Blocks - one_blob [Preset: mainnet] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - partial_withdrawal_in_epoch_transition [Preset: OK + [Valid] EF - EIP4844 - Sanity - Blocks - proposer_after_inactive_index [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - proposer_self_slashing [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - proposer_slashing [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - skipped_slots [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - success_bls_change [Preset: mainnet] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - success_exit_and_bls_change [Preset: mainnet] OK + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee__empty [Preset: mainne OK + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee__full [Preset: mainnet OK + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee__half [Preset: mainnet OK @@ -753,6 +766,7 @@ ConsensusSpecPreset-mainnet + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: OK + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK + [Valid] EF - EIP4844 - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - withdrawal_success_two_blocks [Preset: mainnet] OK + [Valid] EF - Phase 0 - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK + [Valid] EF - Phase 0 - Finality - finality_rule_1 [Preset: mainnet] OK + [Valid] EF - Phase 0 - Finality - finality_rule_2 [Preset: mainnet] OK @@ -799,7 +813,7 @@ ConsensusSpecPreset-mainnet + [Valid] EF - Phase 0 - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK + [Valid] EF - Phase 0 - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK ``` -OK: 787/796 Fail: 0/796 Skip: 9/796 +OK: 801/810 Fail: 0/810 Skip: 9/810 ## Attestation ```diff + [Invalid] EF - Altair - Operations - Attestation - invalid_after_epoch_slots OK @@ -1159,15 +1173,24 @@ OK: 150/150 Fail: 0/150 Skip: 0/150 + [Invalid] EF - Capella - Operations - BLS to execution change - invalid_bad_signature OK + [Invalid] EF - Capella - Operations - BLS to execution change - invalid_incorrect_from_bls OK + [Invalid] EF - Capella - Operations - BLS to execution change - invalid_val_index_out_of_r OK ++ [Invalid] EF - EIP4844 - Operations - BLS to execution change - invalid_already_0x01 OK ++ [Invalid] EF - EIP4844 - Operations - BLS to execution change - invalid_bad_signature OK ++ [Invalid] EF - EIP4844 - Operations - BLS to execution change - invalid_incorrect_from_bls OK ++ [Invalid] EF - EIP4844 - Operations - BLS to execution change - invalid_val_index_out_of_r OK + [Valid] EF - Capella - Operations - BLS to execution change - success OK + [Valid] EF - Capella - Operations - BLS to execution change - success_exited OK + [Valid] EF - Capella - Operations - BLS to execution change - success_in_activation_queu OK + [Valid] EF - Capella - Operations - BLS to execution change - success_in_exit_queue OK + [Valid] EF - Capella - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Capella - Operations - BLS to execution change - success_withdrawable OK -+ [Valid] EF - EIP4844 - Operations - BLS to execution change - no_op OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_exited OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_in_activation_queu OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_in_exit_queue OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_not_activated OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 +OK: 20/20 Fail: 0/20 Skip: 0/20 ## Block Header ```diff + [Invalid] EF - Altair - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -1283,6 +1306,7 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - EIP4844 - Operations - Deposit - new_deposit_non_versioned_withdrawal_crede OK + [Valid] EF - EIP4844 - Operations - Deposit - new_deposit_over_max OK + [Valid] EF - EIP4844 - Operations - Deposit - new_deposit_under_max OK ++ [Valid] EF - EIP4844 - Operations - Deposit - success_top_up_to_withdrawn_validator OK + [Valid] EF - EIP4844 - Operations - Deposit - top_up__less_effective_balance OK + [Valid] EF - EIP4844 - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - EIP4844 - Operations - Deposit - top_up__zero_balance OK @@ -1302,7 +1326,7 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Phase 0 - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Phase 0 - Operations - Deposit - top_up__zero_balance OK ``` -OK: 97/97 Fail: 0/97 Skip: 0/97 +OK: 98/98 Fail: 0/98 Skip: 0/98 ## EF - Altair - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK @@ -1649,9 +1673,9 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` OK: 2/2 Fail: 0/2 Skip: 0/2 -## EF - Capella - Epoch Processing - Historical roots update [Preset: mainnet] +## EF - Capella - Epoch Processing - Historical summaries update [Preset: mainnet] ```diff -+ Historical roots update - historical_root_accumulator [Preset: mainnet] OK ++ Historical summaries update - historical_summaries_accumulator [Preset: mainnet] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Inactivity [Preset: mainnet] @@ -1781,6 +1805,7 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Testing Fork OK + Testing ForkData OK + Testing HistoricalBatch OK ++ Testing HistoricalSummary OK + Testing IndexedAttestation OK + Testing LightClientBootstrap OK + Testing LightClientFinalityUpdate OK @@ -1805,7 +1830,7 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 44/44 Fail: 0/44 Skip: 0/44 +OK: 45/45 Fail: 0/45 Skip: 0/45 ## EF - EIP4844 - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK @@ -1817,9 +1842,9 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` OK: 2/2 Fail: 0/2 Skip: 0/2 -## EF - EIP4844 - Epoch Processing - Historical roots update [Preset: mainnet] +## EF - EIP4844 - Epoch Processing - Historical summaries update [Preset: mainnet] ```diff -+ Historical roots update - historical_root_accumulator [Preset: mainnet] OK ++ Historical summaries update - historical_summaries_accumulator [Preset: mainnet] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - EIP4844 - Epoch Processing - Inactivity [Preset: mainnet] @@ -1950,6 +1975,7 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Testing Fork OK + Testing ForkData OK + Testing HistoricalBatch OK ++ Testing HistoricalSummary OK + Testing IndexedAttestation OK + Testing LightClientBootstrap OK + Testing LightClientFinalityUpdate OK @@ -1975,7 +2001,7 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 46/46 Fail: 0/46 Skip: 0/46 +OK: 47/47 Fail: 0/47 Skip: 0/47 ## EF - Phase 0 - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK @@ -2456,6 +2482,25 @@ OK: 63/63 Fail: 0/63 Skip: 0/63 + [Invalid] EF - Capella - Operations - Withdrawals - invalid_one_of_many_incorrectly_full OK + [Invalid] EF - Capella - Operations - Withdrawals - invalid_one_of_many_incorrectly_partia OK + [Invalid] EF - Capella - Operations - Withdrawals - invalid_two_expected_partial_withdrawa OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_f OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_a_lot_mixed_withdrawable_in_qu OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_a_lot_partially_withdrawable_t OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_address_full OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_address_partial OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_amount_full OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_amount_partial OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_withdrawal_index OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_many_incorrectly_full OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_many_incorrectly_partial OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_max_per_slot_full_withdrawals_ OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_max_per_slot_partial_withdrawa OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_non_withdrawable_non_empty_wit OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_expected_full_withdrawal_a OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_expected_full_withdrawal_a OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_expected_partial_withdrawa OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_of_many_incorrectly_full OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_of_many_incorrectly_partia OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_two_expected_partial_withdrawa OK + [Valid] EF - Capella - Operations - Withdrawals - all_withdrawal OK + [Valid] EF - Capella - Operations - Withdrawals - no_withdrawals_but_some_next_epoch OK + [Valid] EF - Capella - Operations - Withdrawals - random_0 OK @@ -2487,9 +2532,39 @@ OK: 63/63 Fail: 0/63 Skip: 0/63 + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_balance OK + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK -+ [Valid] EF - EIP4844 - Operations - Withdrawals - no_op OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - all_withdrawal OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - no_withdrawals_but_some_next_epoch OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_0 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_full_withdrawals_0 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_full_withdrawals_1 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_full_withdrawals_2 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_full_withdrawals_3 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_1 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_2 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_3 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_4 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_5 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_all_fully_withdrawable_in_one_ OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_all_partially_withdrawable_in_ OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_excess_balance_but_no_max_effe OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_max_partial_withdrawable OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_max_per_slot OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_no_excess_balance OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_no_max_effective_balance OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_full_withdrawal OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_activ OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_exite OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_exite OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_in_ex OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_not_y OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawal OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_two_partial_withdrawable OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_zero_expected_withdrawals OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - withdrawable_epoch_but_0_balance OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ``` -OK: 51/51 Fail: 0/51 Skip: 0/51 +OK: 100/100 Fail: 0/100 Skip: 0/100 ---TOTAL--- -OK: 2197/2206 Fail: 0/2206 Skip: 9/2206 +OK: 2272/2281 Fail: 0/2281 Skip: 9/2281 diff --git a/ConsensusSpecPreset-minimal.md b/ConsensusSpecPreset-minimal.md index fbff663e1..15bd3f2d3 100644 --- a/ConsensusSpecPreset-minimal.md +++ b/ConsensusSpecPreset-minimal.md @@ -54,6 +54,7 @@ ConsensusSpecPreset-minimal + EF - Altair - Rewards - with_slashed_validators_leak [Preset: minimal] OK + EF - Altair - Slots - double_empty_epoch [Preset: minimal] OK + EF - Altair - Slots - empty_epoch [Preset: minimal] OK ++ EF - Altair - Slots - historical_accumulator [Preset: minimal] OK + EF - Altair - Slots - over_epoch_boundary [Preset: minimal] OK + EF - Altair - Slots - slots_1 [Preset: minimal] OK + EF - Altair - Slots - slots_2 [Preset: minimal] OK @@ -132,6 +133,7 @@ ConsensusSpecPreset-minimal + EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: minimal] OK + EF - Bellatrix - Slots - double_empty_epoch [Preset: minimal] OK + EF - Bellatrix - Slots - empty_epoch [Preset: minimal] OK ++ EF - Bellatrix - Slots - historical_accumulator [Preset: minimal] OK + EF - Bellatrix - Slots - over_epoch_boundary [Preset: minimal] OK + EF - Bellatrix - Slots - slots_1 [Preset: minimal] OK + EF - Bellatrix - Slots - slots_2 [Preset: minimal] OK @@ -210,6 +212,7 @@ ConsensusSpecPreset-minimal + EF - Capella - Rewards - with_slashed_validators_leak [Preset: minimal] OK + EF - Capella - Slots - double_empty_epoch [Preset: minimal] OK + EF - Capella - Slots - empty_epoch [Preset: minimal] OK ++ EF - Capella - Slots - historical_accumulator [Preset: minimal] OK + EF - Capella - Slots - over_epoch_boundary [Preset: minimal] OK + EF - Capella - Slots - slots_1 [Preset: minimal] OK + EF - Capella - Slots - slots_2 [Preset: minimal] OK @@ -288,6 +291,7 @@ ConsensusSpecPreset-minimal + EF - EIP4844 - Rewards - with_slashed_validators_leak [Preset: minimal] OK + EF - EIP4844 - Slots - double_empty_epoch [Preset: minimal] OK + EF - EIP4844 - Slots - empty_epoch [Preset: minimal] OK ++ EF - EIP4844 - Slots - historical_accumulator [Preset: minimal] OK + EF - EIP4844 - Slots - over_epoch_boundary [Preset: minimal] OK + EF - EIP4844 - Slots - slots_1 [Preset: minimal] OK + EF - EIP4844 - Slots - slots_2 [Preset: minimal] OK @@ -367,6 +371,7 @@ ConsensusSpecPreset-minimal + EF - Phase 0 - Rewards - with_slashed_validators_leak [Preset: minimal] OK + EF - Phase 0 - Slots - double_empty_epoch [Preset: minimal] OK + EF - Phase 0 - Slots - empty_epoch [Preset: minimal] OK ++ EF - Phase 0 - Slots - historical_accumulator [Preset: minimal] OK + EF - Phase 0 - Slots - over_epoch_boundary [Preset: minimal] OK + EF - Phase 0 - Slots - slots_1 [Preset: minimal] OK + EF - Phase 0 - Slots - slots_2 [Preset: minimal] OK @@ -575,6 +580,7 @@ ConsensusSpecPreset-minimal + [Invalid] EF - Capella - Sanity - Blocks - slash_and_exit_same_index [Preset: minimal] OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block OK ++ [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_bls_changes_same_block [Prese OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: m OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pr OK @@ -587,6 +593,8 @@ ConsensusSpecPreset-minimal + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: min OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_same_slot_block_transition [Preset: min OK + [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [ OK ++ [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_two_bls_changes_of_different_addresses_ OK ++ [Invalid] EF - EIP4844 - Sanity - Blocks - invalid_withdrawal_fail_second_block_payload_is OK + [Invalid] EF - EIP4844 - Sanity - Blocks - slash_and_exit_same_index [Preset: minimal] OK + [Invalid] EF - Phase 0 - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK + [Invalid] EF - Phase 0 - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block OK @@ -830,22 +838,27 @@ ConsensusSpecPreset-minimal + [Valid] EF - EIP4844 - Sanity - Blocks - full_random_operations_1 [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - full_random_operations_2 [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - full_random_operations_3 [Preset: minimal] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - full_withdrawal_in_epoch_transition [Preset: mi OK + [Valid] EF - EIP4844 - Sanity - Blocks - high_proposer_index [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - historical_batch [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - inactivity_scores_full_participation_leaking [P OK + [Valid] EF - EIP4844 - Sanity - Blocks - inactivity_scores_leaking [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - is_execution_enabled_false [Preset: minimal] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - many_partial_withdrawals_in_epoch_transition [P OK + [Valid] EF - EIP4844 - Sanity - Blocks - max_blobs [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: OK + [Valid] EF - EIP4844 - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pr OK + [Valid] EF - EIP4844 - Sanity - Blocks - multiple_different_proposer_slashings_same_bloc OK + [Valid] EF - EIP4844 - Sanity - Blocks - multiple_different_validator_exits_same_block [ OK + [Valid] EF - EIP4844 - Sanity - Blocks - one_blob [Preset: minimal] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - partial_withdrawal_in_epoch_transition [Preset: OK + [Valid] EF - EIP4844 - Sanity - Blocks - proposer_after_inactive_index [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - proposer_self_slashing [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - proposer_slashing [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - skipped_slots [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - success_bls_change [Preset: minimal] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - success_exit_and_bls_change [Preset: minimal] OK + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee__empty [Preset: minima OK + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee__full [Preset: minimal OK + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee__half [Preset: minimal OK @@ -853,6 +866,7 @@ ConsensusSpecPreset-minimal + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: OK + [Valid] EF - EIP4844 - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK + [Valid] EF - EIP4844 - Sanity - Blocks - voluntary_exit [Preset: minimal] OK ++ [Valid] EF - EIP4844 - Sanity - Blocks - withdrawal_success_two_blocks [Preset: minimal] OK + [Valid] EF - Phase 0 - Finality - finality_no_updates_at_genesis [Preset: minimal] OK + [Valid] EF - Phase 0 - Finality - finality_rule_1 [Preset: minimal] OK + [Valid] EF - Phase 0 - Finality - finality_rule_2 [Preset: minimal] OK @@ -904,7 +918,7 @@ ConsensusSpecPreset-minimal + [Valid] EF - Phase 0 - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK + [Valid] EF - Phase 0 - Sanity - Blocks - voluntary_exit [Preset: minimal] OK ``` -OK: 892/901 Fail: 0/901 Skip: 9/901 +OK: 906/915 Fail: 0/915 Skip: 9/915 ## Attestation ```diff + [Invalid] EF - Altair - Operations - Attestation - invalid_after_epoch_slots OK @@ -1264,15 +1278,24 @@ OK: 150/150 Fail: 0/150 Skip: 0/150 + [Invalid] EF - Capella - Operations - BLS to execution change - invalid_bad_signature OK + [Invalid] EF - Capella - Operations - BLS to execution change - invalid_incorrect_from_bls OK + [Invalid] EF - Capella - Operations - BLS to execution change - invalid_val_index_out_of_r OK ++ [Invalid] EF - EIP4844 - Operations - BLS to execution change - invalid_already_0x01 OK ++ [Invalid] EF - EIP4844 - Operations - BLS to execution change - invalid_bad_signature OK ++ [Invalid] EF - EIP4844 - Operations - BLS to execution change - invalid_incorrect_from_bls OK ++ [Invalid] EF - EIP4844 - Operations - BLS to execution change - invalid_val_index_out_of_r OK + [Valid] EF - Capella - Operations - BLS to execution change - success OK + [Valid] EF - Capella - Operations - BLS to execution change - success_exited OK + [Valid] EF - Capella - Operations - BLS to execution change - success_in_activation_queu OK + [Valid] EF - Capella - Operations - BLS to execution change - success_in_exit_queue OK + [Valid] EF - Capella - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Capella - Operations - BLS to execution change - success_withdrawable OK -+ [Valid] EF - EIP4844 - Operations - BLS to execution change - no_op OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_exited OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_in_activation_queu OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_in_exit_queue OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_not_activated OK ++ [Valid] EF - EIP4844 - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 +OK: 20/20 Fail: 0/20 Skip: 0/20 ## Block Header ```diff + [Invalid] EF - Altair - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -1388,6 +1411,7 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - EIP4844 - Operations - Deposit - new_deposit_non_versioned_withdrawal_crede OK + [Valid] EF - EIP4844 - Operations - Deposit - new_deposit_over_max OK + [Valid] EF - EIP4844 - Operations - Deposit - new_deposit_under_max OK ++ [Valid] EF - EIP4844 - Operations - Deposit - success_top_up_to_withdrawn_validator OK + [Valid] EF - EIP4844 - Operations - Deposit - top_up__less_effective_balance OK + [Valid] EF - EIP4844 - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - EIP4844 - Operations - Deposit - top_up__zero_balance OK @@ -1407,7 +1431,7 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Phase 0 - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Phase 0 - Operations - Deposit - top_up__zero_balance OK ``` -OK: 97/97 Fail: 0/97 Skip: 0/97 +OK: 98/98 Fail: 0/98 Skip: 0/98 ## EF - Altair - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK @@ -1784,9 +1808,9 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` OK: 2/2 Fail: 0/2 Skip: 0/2 -## EF - Capella - Epoch Processing - Historical roots update [Preset: minimal] +## EF - Capella - Epoch Processing - Historical summaries update [Preset: minimal] ```diff -+ Historical roots update - historical_root_accumulator [Preset: minimal] OK ++ Historical summaries update - historical_summaries_accumulator [Preset: minimal] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Inactivity [Preset: minimal] @@ -1931,6 +1955,7 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Testing Fork OK + Testing ForkData OK + Testing HistoricalBatch OK ++ Testing HistoricalSummary OK + Testing IndexedAttestation OK + Testing LightClientBootstrap OK + Testing LightClientFinalityUpdate OK @@ -1955,7 +1980,7 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 44/44 Fail: 0/44 Skip: 0/44 +OK: 45/45 Fail: 0/45 Skip: 0/45 ## EF - EIP4844 - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK @@ -1967,9 +1992,9 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` OK: 2/2 Fail: 0/2 Skip: 0/2 -## EF - EIP4844 - Epoch Processing - Historical roots update [Preset: minimal] +## EF - EIP4844 - Epoch Processing - Historical summaries update [Preset: minimal] ```diff -+ Historical roots update - historical_root_accumulator [Preset: minimal] OK ++ Historical summaries update - historical_summaries_accumulator [Preset: minimal] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - EIP4844 - Epoch Processing - Inactivity [Preset: minimal] @@ -2115,6 +2140,7 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Testing Fork OK + Testing ForkData OK + Testing HistoricalBatch OK ++ Testing HistoricalSummary OK + Testing IndexedAttestation OK + Testing LightClientBootstrap OK + Testing LightClientFinalityUpdate OK @@ -2140,7 +2166,7 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 46/46 Fail: 0/46 Skip: 0/46 +OK: 47/47 Fail: 0/47 Skip: 0/47 ## EF - Phase 0 - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK @@ -2622,6 +2648,25 @@ OK: 68/68 Fail: 0/68 Skip: 0/68 + [Invalid] EF - Capella - Operations - Withdrawals - invalid_one_of_many_incorrectly_full OK + [Invalid] EF - Capella - Operations - Withdrawals - invalid_one_of_many_incorrectly_partia OK + [Invalid] EF - Capella - Operations - Withdrawals - invalid_two_expected_partial_withdrawa OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_f OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_a_lot_mixed_withdrawable_in_qu OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_a_lot_partially_withdrawable_t OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_address_full OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_address_partial OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_amount_full OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_amount_partial OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_incorrect_withdrawal_index OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_many_incorrectly_full OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_many_incorrectly_partial OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_max_per_slot_full_withdrawals_ OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_max_per_slot_partial_withdrawa OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_non_withdrawable_non_empty_wit OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_expected_full_withdrawal_a OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_expected_full_withdrawal_a OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_expected_partial_withdrawa OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_of_many_incorrectly_full OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_one_of_many_incorrectly_partia OK ++ [Invalid] EF - EIP4844 - Operations - Withdrawals - invalid_two_expected_partial_withdrawa OK + [Valid] EF - Capella - Operations - Withdrawals - all_withdrawal OK + [Valid] EF - Capella - Operations - Withdrawals - no_withdrawals_but_some_next_epoch OK + [Valid] EF - Capella - Operations - Withdrawals - random_0 OK @@ -2654,9 +2699,40 @@ OK: 68/68 Fail: 0/68 Skip: 0/68 + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_balance OK + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK -+ [Valid] EF - EIP4844 - Operations - Withdrawals - no_op OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - all_withdrawal OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - no_withdrawals_but_some_next_epoch OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_0 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_full_withdrawals_0 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_full_withdrawals_1 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_full_withdrawals_2 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_full_withdrawals_3 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_1 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_2 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_3 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_4 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - random_partial_withdrawals_5 OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_all_fully_withdrawable OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_all_partially_withdrawable OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_excess_balance_but_no_max_effe OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_max_partial_withdrawable OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_max_per_slot OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_max_plus_one_withdrawable OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_no_excess_balance OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_no_max_effective_balance OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_full_withdrawal OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_activ OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_exite OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_exite OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_in_ex OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawable_not_y OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_one_partial_withdrawal OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_two_partial_withdrawable OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - success_zero_expected_withdrawals OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - withdrawable_epoch_but_0_balance OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ++ [Valid] EF - EIP4844 - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ``` -OK: 52/52 Fail: 0/52 Skip: 0/52 +OK: 102/102 Fail: 0/102 Skip: 0/102 ---TOTAL--- -OK: 2348/2357 Fail: 0/2357 Skip: 9/2357 +OK: 2424/2433 Fail: 0/2433 Skip: 9/2433 diff --git a/beacon_chain/beacon_chain_db_immutable.nim b/beacon_chain/beacon_chain_db_immutable.nim index bc13d884c..55cdb7000 100644 --- a/beacon_chain/beacon_chain_db_immutable.nim +++ b/beacon_chain/beacon_chain_db_immutable.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2021-2022 Status Research & Development GmbH +# Copyright (c) 2021-2023 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). @@ -14,7 +14,8 @@ import ./spec/datatypes/[base, altair, bellatrix], ./spec/[eth2_ssz_serialization, eth2_merkleization] -from ./spec/datatypes/capella import ExecutionPayloadHeader, Withdrawal +from ./spec/datatypes/capella import + ExecutionPayloadHeader, HistoricalSummary, Withdrawal from ./spec/datatypes/eip4844 import ExecutionPayloadHeader type @@ -252,6 +253,11 @@ type next_withdrawal_index*: WithdrawalIndex # [New in Capella] next_withdrawal_validator_index*: uint64 # [New in Capella] + # Deep history valid from Capella onwards + historical_summaries*: + HashList[HistoricalSummary, + Limit HISTORICAL_ROOTS_LIMIT] # [New in Capella] + # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.1/specs/capella/beacon-chain.md#beaconstate # with indirect changes via ExecutionPayloadHeader # Memory-representation-equivalent to a Capella BeaconState for in-place SSZ @@ -317,3 +323,7 @@ type # Withdrawals next_withdrawal_index*: WithdrawalIndex next_withdrawal_validator_index*: uint64 + + # Deep history valid from Capella onwards + historical_summaries*: + HashList[HistoricalSummary, Limit HISTORICAL_ROOTS_LIMIT] diff --git a/beacon_chain/spec/beaconstate.nim b/beacon_chain/spec/beaconstate.nim index 047cd50a6..4f1e94e22 100644 --- a/beacon_chain/spec/beaconstate.nim +++ b/beacon_chain/spec/beaconstate.nim @@ -842,7 +842,8 @@ func is_partially_withdrawable_validator( has_max_effective_balance and has_excess_balance # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/capella/beacon-chain.md#new-get_expected_withdrawals -func get_expected_withdrawals*(state: capella.BeaconState): seq[Withdrawal] = +func get_expected_withdrawals*( + state: capella.BeaconState | eip4844.BeaconState): seq[Withdrawal] = let epoch = get_current_epoch(state) num_validators = lenu64(state.validators) @@ -876,16 +877,6 @@ func get_expected_withdrawals*(state: capella.BeaconState): seq[Withdrawal] = validator_index = (validator_index + 1) mod num_validators withdrawals -# https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/eip4844/beacon-chain.md#disabling-withdrawals -func get_expected_withdrawals*(state: eip4844.BeaconState): seq[Withdrawal] = - # During testing we avoid Capella-specific updates to the state transition. - # - # ... - # - # The `get_expected_withdrawals` function is also modified to return an empty - # withdrawals list. - @[] - # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/altair/beacon-chain.md#get_next_sync_committee func get_next_sync_committee*( state: altair.BeaconState | bellatrix.BeaconState | capella.BeaconState | diff --git a/beacon_chain/spec/datatypes/base.nim b/beacon_chain/spec/datatypes/base.nim index 1b44f5c45..a347460de 100644 --- a/beacon_chain/spec/datatypes/base.nim +++ b/beacon_chain/spec/datatypes/base.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2018-2022 Status Research & Development GmbH +# Copyright (c) 2018-2023 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). @@ -77,7 +77,7 @@ export tables, results, json_serialization, timer, sszTypes, beacon_time, crypto, digest, presets -const SPEC_VERSION* = "1.3.0-alpha.2" +const SPEC_VERSION* = "1.3.0-rc.0" ## Spec version we're aiming to be compatible with, right now const diff --git a/beacon_chain/spec/datatypes/capella.nim b/beacon_chain/spec/datatypes/capella.nim index 335f3b1f4..d0883c4db 100644 --- a/beacon_chain/spec/datatypes/capella.nim +++ b/beacon_chain/spec/datatypes/capella.nim @@ -48,6 +48,13 @@ type message*: BLSToExecutionChange signature*: ValidatorSig + # https://github.com/ethereum/consensus-specs/blob/v1.3.0-rc.0/specs/capella/beacon-chain.md#historicalsummary + HistoricalSummary* = object + # `HistoricalSummary` matches the components of the phase0 + # `HistoricalBatch` making the two hash_tree_root-compatible. + block_summary_root*: Eth2Digest + state_summary_root*: Eth2Digest + # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.1/specs/capella/beacon-chain.md#executionpayload ExecutionPayload* = object parent_hash*: Eth2Digest @@ -107,7 +114,8 @@ type ## Needed to process attestations, older to newer state_roots*: HashArray[Limit SLOTS_PER_HISTORICAL_ROOT, Eth2Digest] - historical_roots*: HashList[Eth2Digest, Limit HISTORICAL_ROOTS_LIMIT] + historical_roots*: HashList[Eth2Digest, Limit HISTORICAL_ROOTS_LIMIT] # \ + # Frozen in Capella, replaced by historical_summaries # Eth1 eth1_data*: Eth1Data @@ -153,6 +161,11 @@ type next_withdrawal_index*: WithdrawalIndex # [New in Capella] next_withdrawal_validator_index*: uint64 # [New in Capella] + # Deep history valid from Capella onwards + historical_summaries*: + HashList[HistoricalSummary, + Limit HISTORICAL_ROOTS_LIMIT] # [New in Capella] + # TODO Careful, not nil analysis is broken / incomplete and the semantics will # likely change in future versions of the language: # https://github.com/nim-lang/RFCs/issues/250 diff --git a/beacon_chain/spec/datatypes/eip4844.nim b/beacon_chain/spec/datatypes/eip4844.nim index 9b1cd2cc2..7da447ced 100644 --- a/beacon_chain/spec/datatypes/eip4844.nim +++ b/beacon_chain/spec/datatypes/eip4844.nim @@ -165,8 +165,12 @@ type latest_execution_payload_header*: ExecutionPayloadHeader # Withdrawals - next_withdrawal_index*: WithdrawalIndex # [New in Capella] - next_withdrawal_validator_index*: uint64 # [New in Capella] + next_withdrawal_index*: WithdrawalIndex + next_withdrawal_validator_index*: uint64 + + # Deep history valid from Capella onwards + historical_summaries*: + HashList[HistoricalSummary, Limit HISTORICAL_ROOTS_LIMIT] # TODO Careful, not nil analysis is broken / incomplete and the semantics will # likely change in future versions of the language: diff --git a/beacon_chain/spec/state_transition_block.nim b/beacon_chain/spec/state_transition_block.nim index 969d1fdd6..0b3c187d6 100644 --- a/beacon_chain/spec/state_transition_block.nim +++ b/beacon_chain/spec/state_transition_block.nim @@ -395,7 +395,7 @@ proc process_voluntary_exit*( # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.1/specs/capella/beacon-chain.md#new-process_bls_to_execution_change proc process_bls_to_execution_change*( - state: var capella.BeaconState, + state: var (capella.BeaconState | eip4844.BeaconState), signed_address_change: SignedBLSToExecutionChange): Result[void, cstring] = let address_change = signed_address_change.message @@ -427,16 +427,6 @@ proc process_bls_to_execution_change*( ok() -# https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.1/specs/eip4844/beacon-chain.md#disabling-withdrawals -proc process_bls_to_execution_change*( - state: var eip4844.BeaconState, - signed_address_change: SignedBLSToExecutionChange): Result[void, cstring] = - # During testing we avoid Capella-specific updates to the state transition. - # We do this by replacing the following functions with a no-op - # implementation: - # `process_bls_to_execution_change` - ok() - # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/phase0/beacon-chain.md#operations # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.1/specs/capella/beacon-chain.md#modified-process_operations proc process_operations(cfg: RuntimeConfig, @@ -675,8 +665,8 @@ proc process_execution_payload*( # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.1/specs/capella/beacon-chain.md#new-process_withdrawals func process_withdrawals*( - state: var capella.BeaconState, - payload: capella.ExecutionPayload): + state: var (capella.BeaconState | eip4844.BeaconState), + payload: capella.ExecutionPayload | eip4844.ExecutionPayload): Result[void, cstring] = let expected_withdrawals = get_expected_withdrawals(state) @@ -715,17 +705,6 @@ func process_withdrawals*( ok() -# https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.1/specs/eip4844/beacon-chain.md#disabling-withdrawals -func process_withdrawals*( - state: var eip4844.BeaconState, - payload: eip4844.ExecutionPayload): - Result[void, cstring] = - # During testing we avoid Capella-specific updates to the state transition. - # We do this by replacing the following functions with a no-op - # implementation: - # `process_withdrawals` - ok() - # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.1/specs/eip4844/beacon-chain.md#tx_peek_blob_versioned_hashes func tx_peek_blob_versioned_hashes(opaque_tx: Transaction): Result[seq[VersionedHash], cstring] = diff --git a/beacon_chain/spec/state_transition_epoch.nim b/beacon_chain/spec/state_transition_epoch.nim index c8ef96e88..0f768e504 100644 --- a/beacon_chain/spec/state_transition_epoch.nim +++ b/beacon_chain/spec/state_transition_epoch.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2018-2022 Status Research & Development GmbH +# Copyright (c) 2018-2023 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). @@ -31,7 +31,8 @@ import from std/algorithm import sort from std/math import sum, `^` -from ./datatypes/capella import BeaconState, Withdrawal, WithdrawalIndex +from ./datatypes/capella import + BeaconState, HistoricalSummary, Withdrawal, WithdrawalIndex export extras, phase0, altair @@ -1057,6 +1058,22 @@ func process_inactivity_updates*( if pre_inactivity_score != inactivity_score: state.inactivity_scores[index] = inactivity_score +# https://github.com/ethereum/consensus-specs/blob/v1.3.0-rc.0/specs/capella/beacon-chain.md#historical-summaries-updates +func process_historical_summaries_update*( + state: var (capella.BeaconState | eip4844.BeaconState)): + Result[void, cstring] = + # Set historical block root accumulator. + let next_epoch = get_current_epoch(state) + 1 + if next_epoch mod (SLOTS_PER_HISTORICAL_ROOT div SLOTS_PER_EPOCH) == 0: + let historical_summary = HistoricalSummary( + block_summary_root: hash_tree_root(state.block_roots), + state_summary_root: hash_tree_root(state.state_roots), + ) + if not state.historical_summaries.add(historical_summary): + return err("process_historical_summaries_update: state.historical_summaries full") + + ok() + # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/phase0/beacon-chain.md#epoch-processing proc process_epoch*( cfg: RuntimeConfig, state: var phase0.BeaconState, flags: UpdateFlags, @@ -1119,8 +1136,7 @@ func init*( # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/altair/beacon-chain.md#epoch-processing proc process_epoch*( cfg: RuntimeConfig, - state: var (altair.BeaconState | bellatrix.BeaconState | - capella.BeaconState | eip4844.BeaconState), + state: var (altair.BeaconState | bellatrix.BeaconState), flags: UpdateFlags, cache: var StateCache, info: var altair.EpochInfo): Result[void, cstring] = let currentEpoch = get_current_epoch(state) @@ -1162,3 +1178,49 @@ proc process_epoch*( process_sync_committee_updates(state) ok() + +# https://github.com/ethereum/consensus-specs/blob/v1.3.0-rc.0/specs/capella/beacon-chain.md#epoch-processing +proc process_epoch*( + cfg: RuntimeConfig, + state: var (capella.BeaconState | eip4844.BeaconState), + flags: UpdateFlags, cache: var StateCache, info: var altair.EpochInfo): + Result[void, cstring] = + let currentEpoch = get_current_epoch(state) + trace "process_epoch", + current_epoch = currentEpoch + + info.init(state) + + # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/phase0/beacon-chain.md#justification-and-finalization + process_justification_and_finalization(state, info.balances, flags) + + # state.slot hasn't been incremented yet. + if strictVerification in flags and currentEpoch >= 2: + doAssert state.current_justified_checkpoint.epoch + 2 >= currentEpoch + + if strictVerification in flags and currentEpoch >= 3: + # Rule 2/3/4 finalization results in the most pessimal case. The other + # three finalization rules finalize more quickly as long as the any of + # the finalization rules triggered. + doAssert state.finalized_checkpoint.epoch + 3 >= currentEpoch + + process_inactivity_updates(cfg, state, info) + + # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/phase0/beacon-chain.md#process_rewards_and_penalties + process_rewards_and_penalties(cfg, state, info) + + # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/phase0/beacon-chain.md#registry-updates + ? process_registry_updates(cfg, state, cache) + + # https://github.com/ethereum/consensus-specs/blob/v1.3.0-alpha.2/specs/phase0/beacon-chain.md#slashings + process_slashings(state, info.balances.current_epoch) + + process_eth1_data_reset(state) + process_effective_balance_updates(state) + process_slashings_reset(state) + process_randao_mixes_reset(state) + ? process_historical_summaries_update(state) + process_participation_flag_updates(state) + process_sync_committee_updates(state) + + ok() diff --git a/tests/consensus_spec/capella/test_fixture_ssz_consensus_objects.nim b/tests/consensus_spec/capella/test_fixture_ssz_consensus_objects.nim index 72dbbe5be..3a55166e5 100644 --- a/tests/consensus_spec/capella/test_fixture_ssz_consensus_objects.nim +++ b/tests/consensus_spec/capella/test_fixture_ssz_consensus_objects.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2022 Status Research & Development GmbH +# Copyright (c) 2022-2023 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). @@ -119,6 +119,7 @@ suite "EF - Capella - SSZ consensus objects " & preset(): of "Fork": checkSSZ(Fork, path, hash) of "ForkData": checkSSZ(ForkData, path, hash) of "HistoricalBatch": checkSSZ(HistoricalBatch, path, hash) + of "HistoricalSummary": checkSSZ(HistoricalSummary, path, hash) of "IndexedAttestation": checkSSZ(IndexedAttestation, path, hash) of "LightClientBootstrap": checkSSZ(LightClientBootstrap, path, hash) diff --git a/tests/consensus_spec/capella/test_fixture_state_transition_epoch.nim b/tests/consensus_spec/capella/test_fixture_state_transition_epoch.nim index 05829a00b..4fae43668 100644 --- a/tests/consensus_spec/capella/test_fixture_state_transition_epoch.nim +++ b/tests/consensus_spec/capella/test_fixture_state_transition_epoch.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2018-2022 Status Research & Development GmbH +# Copyright (c) 2018-2023 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). @@ -35,18 +35,18 @@ const EffectiveBalanceUpdatesDir = RootDir/"effective_balance_updates" SlashingsResetDir = RootDir/"slashings_reset" RandaoMixesResetDir = RootDir/"randao_mixes_reset" - HistoricalRootsUpdateDir = RootDir/"historical_roots_update" ParticipationFlagDir = RootDir/"participation_flag_updates" SyncCommitteeDir = RootDir/"sync_committee_updates" RewardsAndPenaltiesDir = RootDir/"rewards_and_penalties" + HistoricalSummariesUpdateDir = RootDir/"historical_summaries_update" doAssert (toHashSet(mapIt(toSeq(walkDir(RootDir, relative = false)), it.path)) - toHashSet([SyncCommitteeDir])) == toHashSet([ JustificationFinalizationDir, InactivityDir, RegistryUpdatesDir, SlashingsDir, Eth1DataResetDir, EffectiveBalanceUpdatesDir, - SlashingsResetDir, RandaoMixesResetDir, HistoricalRootsUpdateDir, - ParticipationFlagDir, RewardsAndPenaltiesDir]) + SlashingsResetDir, RandaoMixesResetDir, ParticipationFlagDir, + RewardsAndPenaltiesDir, HistoricalSummariesUpdateDir]) template runSuite( suiteDir, testName: string, transitionProc: untyped): untyped = @@ -129,11 +129,10 @@ runSuite(RandaoMixesResetDir, "RANDAO mixes reset"): process_randao_mixes_reset(state) Result[void, cstring].ok() -# Historical roots update +# Historical summaries update # --------------------------------------------------------------- -runSuite(HistoricalRootsUpdateDir, "Historical roots update"): - process_historical_roots_update(state) - Result[void, cstring].ok() +runSuite(HistoricalSummariesUpdateDir, "Historical summaries update"): + process_historical_summaries_update(state) # Participation flag updates # --------------------------------------------------------------- diff --git a/tests/consensus_spec/eip4844/test_fixture_ssz_consensus_objects.nim b/tests/consensus_spec/eip4844/test_fixture_ssz_consensus_objects.nim index b34d8c9d5..a1d399317 100644 --- a/tests/consensus_spec/eip4844/test_fixture_ssz_consensus_objects.nim +++ b/tests/consensus_spec/eip4844/test_fixture_ssz_consensus_objects.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2022 Status Research & Development GmbH +# Copyright (c) 2022-2023 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). @@ -22,7 +22,8 @@ import from ../../beacon_chain/spec/datatypes/bellatrix import PowBlock from ../../beacon_chain/spec/datatypes/capella import - BLSToExecutionChange, SignedBLSToExecutionChange, Withdrawal + BLSToExecutionChange, SignedBLSToExecutionChange, HistoricalSummary, + Withdrawal # SSZ tests of consensus objects (minimal/mainnet preset specific) @@ -122,6 +123,7 @@ suite "EF - EIP4844 - SSZ consensus objects " & preset(): of "Fork": checkSSZ(Fork, path, hash) of "ForkData": checkSSZ(ForkData, path, hash) of "HistoricalBatch": checkSSZ(HistoricalBatch, path, hash) + of "HistoricalSummary": checkSSZ(HistoricalSummary, path, hash) of "IndexedAttestation": checkSSZ(IndexedAttestation, path, hash) of "LightClientBootstrap": checkSSZ(LightClientBootstrap, path, hash) diff --git a/tests/consensus_spec/eip4844/test_fixture_state_transition_epoch.nim b/tests/consensus_spec/eip4844/test_fixture_state_transition_epoch.nim index c761cbb91..ed47e25a3 100644 --- a/tests/consensus_spec/eip4844/test_fixture_state_transition_epoch.nim +++ b/tests/consensus_spec/eip4844/test_fixture_state_transition_epoch.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2022 Status Research & Development GmbH +# Copyright (c) 2022-2023 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). @@ -35,18 +35,18 @@ const EffectiveBalanceUpdatesDir = RootDir/"effective_balance_updates" SlashingsResetDir = RootDir/"slashings_reset" RandaoMixesResetDir = RootDir/"randao_mixes_reset" - HistoricalRootsUpdateDir = RootDir/"historical_roots_update" ParticipationFlagDir = RootDir/"participation_flag_updates" SyncCommitteeDir = RootDir/"sync_committee_updates" RewardsAndPenaltiesDir = RootDir/"rewards_and_penalties" + HistoricalSummariesUpdateDir = RootDir/"historical_summaries_update" doAssert (toHashSet(mapIt(toSeq(walkDir(RootDir, relative = false)), it.path)) - toHashSet([SyncCommitteeDir])) == toHashSet([ JustificationFinalizationDir, InactivityDir, RegistryUpdatesDir, SlashingsDir, Eth1DataResetDir, EffectiveBalanceUpdatesDir, - SlashingsResetDir, RandaoMixesResetDir, HistoricalRootsUpdateDir, - ParticipationFlagDir, RewardsAndPenaltiesDir]) + SlashingsResetDir, RandaoMixesResetDir, ParticipationFlagDir, + RewardsAndPenaltiesDir, HistoricalSummariesUpdateDir]) template runSuite( suiteDir, testName: string, transitionProc: untyped): untyped = @@ -131,9 +131,8 @@ runSuite(RandaoMixesResetDir, "RANDAO mixes reset"): # Historical roots update # --------------------------------------------------------------- -runSuite(HistoricalRootsUpdateDir, "Historical roots update"): - process_historical_roots_update(state) - Result[void, cstring].ok() +runSuite(HistoricalSummariesUpdateDir, "Historical summaries update"): + process_historical_summaries_update(state) # Participation flag updates # --------------------------------------------------------------- diff --git a/vendor/nim-eth2-scenarios b/vendor/nim-eth2-scenarios index 9a1398ab6..fbcd29aa6 160000 --- a/vendor/nim-eth2-scenarios +++ b/vendor/nim-eth2-scenarios @@ -1 +1 @@ -Subproject commit 9a1398ab6409e8bceebdd9aeec659e7e8d1a3538 +Subproject commit fbcd29aa678fa80bface275f1cae0cc5a247f411