mirror of
https://github.com/status-im/nimbus-eth2.git
synced 2025-01-11 14:54:12 +00:00
refactor EF operations fixtures (#2998)
* refactor EF operations fixtures * for phase0/altair, check completeness of operations directories
This commit is contained in:
parent
df3fc9525f
commit
a6ddb80779
@ -145,8 +145,6 @@ ConsensusSpecPreset-mainnet
|
||||
+ Slots - over_epoch_boundary OK
|
||||
+ Slots - slots_1 OK
|
||||
+ Slots - slots_2 OK
|
||||
+ [Invalid] bad_merkle_proof OK
|
||||
+ [Invalid] wrong_deposit_for_deposit_count OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - double_same_proposer_slashings_ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - double_similar_proposer_slashin OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - double_validator_exit_same_bloc OK
|
||||
@ -190,20 +188,6 @@ ConsensusSpecPreset-mainnet
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - same_slot_block_transition [Pr OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - slash_and_exit_same_index [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - zero_block_sig [Preset: mainne OK
|
||||
+ [Invalid] after_epoch_slots OK
|
||||
+ [Invalid] all_empty_indices OK
|
||||
+ [Invalid] att1_bad_extra_index OK
|
||||
+ [Invalid] att1_bad_replaced_index OK
|
||||
+ [Invalid] att1_duplicate_index_double_signed OK
|
||||
+ [Invalid] att1_duplicate_index_normal_signed OK
|
||||
+ [Invalid] att1_empty_indices OK
|
||||
+ [Invalid] att1_high_index OK
|
||||
+ [Invalid] att2_bad_extra_index OK
|
||||
+ [Invalid] att2_bad_replaced_index OK
|
||||
+ [Invalid] att2_duplicate_index_double_signed OK
|
||||
+ [Invalid] att2_duplicate_index_normal_signed OK
|
||||
+ [Invalid] att2_empty_indices OK
|
||||
+ [Invalid] att2_high_index OK
|
||||
+ [Invalid] bad_everything_regular_payload OK
|
||||
+ [Invalid] bad_execution_first_payload OK
|
||||
+ [Invalid] bad_execution_regular_payload OK
|
||||
@ -211,79 +195,12 @@ ConsensusSpecPreset-mainnet
|
||||
+ [Invalid] bad_parent_hash_regular_payload OK
|
||||
+ [Invalid] bad_random_first_payload OK
|
||||
+ [Invalid] bad_random_regular_payload OK
|
||||
+ [Invalid] bad_source_root OK
|
||||
+ [Invalid] bad_timestamp_first_payload OK
|
||||
+ [Invalid] bad_timestamp_regular_payload OK
|
||||
+ [Invalid] before_inclusion_delay OK
|
||||
+ [Invalid] correct_after_epoch_delay OK
|
||||
+ [Invalid] empty_participants_seemingly_valid_sig OK
|
||||
+ [Invalid] empty_participants_zeroes_sig OK
|
||||
+ [Invalid] epochs_are_different OK
|
||||
+ [Invalid] future_target_epoch OK
|
||||
+ [Invalid] gaslimit_lower_minus_regular_payload OK
|
||||
+ [Invalid] gaslimit_minimum_minus_regular_payload OK
|
||||
+ [Invalid] gaslimit_upper_plus_regular_payload OK
|
||||
+ [Invalid] gasused_gaslimit_plus_regular_payload OK
|
||||
+ [Invalid] headers_are_same_sigs_are_different OK
|
||||
+ [Invalid] headers_are_same_sigs_are_same OK
|
||||
+ [Invalid] incorrect_head_after_epoch_delay OK
|
||||
+ [Invalid] incorrect_head_and_target_after_epoch_delay OK
|
||||
+ [Invalid] incorrect_target_after_epoch_delay OK
|
||||
+ [Invalid] invalid_attestation_signature OK
|
||||
+ [Invalid] invalid_current_source_root OK
|
||||
+ [Invalid] invalid_different_proposer_indices OK
|
||||
+ [Invalid] invalid_index OK
|
||||
+ [Invalid] invalid_multiple_blocks_single_slot OK
|
||||
+ [Invalid] invalid_parent_root OK
|
||||
+ [Invalid] invalid_proposer_index OK
|
||||
+ [Invalid] invalid_sig_1 OK
|
||||
+ [Invalid] invalid_sig_1_and_2 OK
|
||||
+ [Invalid] invalid_sig_1_and_2_swap OK
|
||||
+ [Invalid] invalid_sig_2 OK
|
||||
+ [Invalid] invalid_signature OK
|
||||
+ [Invalid] invalid_signature_bad_domain OK
|
||||
+ [Invalid] invalid_signature_extra_participant OK
|
||||
+ [Invalid] invalid_signature_infinite_signature_with_all_participants OK
|
||||
+ [Invalid] invalid_signature_infinite_signature_with_single_participant OK
|
||||
+ [Invalid] invalid_signature_missing_participant OK
|
||||
+ [Invalid] invalid_signature_no_participants OK
|
||||
+ [Invalid] invalid_signature_past_block OK
|
||||
+ [Invalid] invalid_slot_block_header OK
|
||||
+ [Invalid] mismatched_target_and_slot OK
|
||||
+ [Invalid] new_source_epoch OK
|
||||
+ [Invalid] no_double_or_surround OK
|
||||
+ [Invalid] old_source_epoch OK
|
||||
+ [Invalid] old_target_epoch OK
|
||||
+ [Invalid] participants_already_slashed OK
|
||||
+ [Invalid] proposer_is_not_activated OK
|
||||
+ [Invalid] proposer_is_slashed OK
|
||||
+ [Invalid] proposer_is_withdrawn OK
|
||||
+ [Invalid] proposer_slashed OK
|
||||
+ [Invalid] same_data OK
|
||||
+ [Invalid] source_root_is_target_root OK
|
||||
+ [Invalid] too_few_aggregation_bits OK
|
||||
+ [Invalid] too_many_aggregation_bits OK
|
||||
+ [Invalid] unsorted_att_1 OK
|
||||
+ [Invalid] unsorted_att_2 OK
|
||||
+ [Invalid] validator_already_exited OK
|
||||
+ [Invalid] validator_exit_in_future OK
|
||||
+ [Invalid] validator_invalid_validator_index OK
|
||||
+ [Invalid] validator_not_active OK
|
||||
+ [Invalid] validator_not_active_long_enough OK
|
||||
+ [Invalid] wrong_index_for_committee_signature OK
|
||||
+ [Invalid] wrong_index_for_slot_0 OK
|
||||
+ [Invalid] wrong_index_for_slot_1 OK
|
||||
+ [Valid] invalid_sig_new_deposit OK
|
||||
+ [Valid] invalid_sig_other_version OK
|
||||
+ [Valid] invalid_sig_top_up OK
|
||||
+ [Valid] invalid_withdrawal_credentials_top_up OK
|
||||
+ [Valid] new_deposit_eth1_withdrawal_credentials OK
|
||||
+ [Valid] new_deposit_max OK
|
||||
+ [Valid] new_deposit_non_versioned_withdrawal_credentials OK
|
||||
+ [Valid] new_deposit_over_max OK
|
||||
+ [Valid] new_deposit_under_max OK
|
||||
+ [Valid] success_top_up OK
|
||||
+ [Valid] valid_sig_but_forked_state OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_no_updates_at_genesis [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_rule_1 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_rule_2 [Preset: mainnet] OK
|
||||
@ -417,60 +334,16 @@ ConsensusSpecPreset-mainnet
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - skipped_slots [Preset: mainnet OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - slash_and_exit_diff_index [Pre OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - voluntary_exit [Preset: mainne OK
|
||||
+ [Valid] correct_epoch_delay OK
|
||||
+ [Valid] correct_min_inclusion_delay OK
|
||||
+ [Valid] correct_sqrt_epoch_delay OK
|
||||
+ [Valid] default_exit_epoch_subsequent_exit OK
|
||||
+ [Valid] gaslimit_lower_regular_payload OK
|
||||
+ [Valid] gaslimit_max_first_payload OK
|
||||
+ [Valid] gaslimit_minimum_regular_payload OK
|
||||
+ [Valid] gaslimit_upper_regular_payload OK
|
||||
+ [Valid] gaslimit_zero_first_payload OK
|
||||
+ [Valid] gasused_gaslimit_regular_payload OK
|
||||
+ [Valid] incorrect_head_and_target_epoch_delay OK
|
||||
+ [Valid] incorrect_head_and_target_min_inclusion_delay OK
|
||||
+ [Valid] incorrect_head_and_target_sqrt_epoch_delay OK
|
||||
+ [Valid] incorrect_head_epoch_delay OK
|
||||
+ [Valid] incorrect_head_min_inclusion_delay OK
|
||||
+ [Valid] incorrect_head_sqrt_epoch_delay OK
|
||||
+ [Valid] incorrect_target_epoch_delay OK
|
||||
+ [Valid] incorrect_target_min_inclusion_delay OK
|
||||
+ [Valid] incorrect_target_sqrt_epoch_delay OK
|
||||
+ [Valid] random_all_but_one_participating_with_duplicates OK
|
||||
+ [Valid] random_high_participation_with_duplicates OK
|
||||
+ [Valid] random_low_participation_with_duplicates OK
|
||||
+ [Valid] random_misc_balances_and_half_participation_with_duplicates OK
|
||||
+ [Valid] random_only_one_participant_with_duplicates OK
|
||||
+ [Valid] random_with_exits_with_duplicates OK
|
||||
+ [Valid] success OK
|
||||
+ [Valid] success_already_exited_long_ago OK
|
||||
+ [Valid] success_already_exited_recent OK
|
||||
+ [Valid] success_attestation_from_future OK
|
||||
+ [Valid] success_block_header OK
|
||||
+ [Valid] success_block_header_from_future OK
|
||||
+ [Valid] success_double OK
|
||||
+ [Valid] success_exit_queue__min_churn OK
|
||||
+ [Valid] success_first_payload OK
|
||||
+ [Valid] success_first_payload_with_gap_slot OK
|
||||
+ [Valid] success_low_balances OK
|
||||
+ [Valid] success_misc_balances OK
|
||||
+ [Valid] success_multi_proposer_index_iterations OK
|
||||
+ [Valid] success_previous_epoch OK
|
||||
+ [Valid] success_proposer_index_slashed OK
|
||||
+ [Valid] success_regular_payload OK
|
||||
+ [Valid] success_regular_payload_with_gap_slot OK
|
||||
+ [Valid] success_slashed_and_proposer_index_the_same OK
|
||||
+ [Valid] success_surround OK
|
||||
+ [Valid] success_with_effective_balance_disparity OK
|
||||
+ [Valid] sync_committee_rewards_duplicate_committee_full_participation OK
|
||||
+ [Valid] sync_committee_rewards_duplicate_committee_half_participation OK
|
||||
+ [Valid] sync_committee_rewards_duplicate_committee_no_participation OK
|
||||
+ [Valid] sync_committee_rewards_empty_participants OK
|
||||
+ [Valid] sync_committee_rewards_not_full_participants OK
|
||||
+ [Valid] sync_committee_with_nonparticipating_exited_member OK
|
||||
+ [Valid] sync_committee_with_nonparticipating_withdrawable_member OK
|
||||
+ [Valid] sync_committee_with_participating_exited_member OK
|
||||
+ [Valid] sync_committee_with_participating_withdrawable_member OK
|
||||
+ altair_fork_random_0 OK
|
||||
+ altair_fork_random_1 OK
|
||||
+ altair_fork_random_2 OK
|
||||
@ -488,7 +361,284 @@ ConsensusSpecPreset-mainnet
|
||||
+ fork_random_misc_balances OK
|
||||
+ next_sync_committee_merkle_proof OK
|
||||
```
|
||||
OK: 485/485 Fail: 0/485 Skip: 0/485
|
||||
OK: 358/358 Fail: 0/358 Skip: 0/358
|
||||
## Attestation
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - after_epoch_slots OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - bad_source_root OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - before_inclusion_delay OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - correct_after_epoch_de OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - empty_participants_see OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - empty_participants_zer OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - future_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_after_e OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_and_tar OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_target_after OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - invalid_attestation_si OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - invalid_current_source OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - invalid_index OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - mismatched_target_and_ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - new_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - old_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - old_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - source_root_is_target_ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - too_few_aggregation_bi OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - too_many_aggregation_b OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - wrong_index_for_commit OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - wrong_index_for_slot_0 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - wrong_index_for_slot_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - after_epoch_slots OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - bad_source_root OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - before_inclusion_delay OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - correct_after_epoch_del OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - empty_participants_seem OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - empty_participants_zero OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - future_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_after_ep OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_and_targ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_target_after_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - invalid_attestation_sig OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - invalid_current_source_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - invalid_index OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - mismatched_target_and_s OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - new_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - old_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - old_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - source_root_is_target_r OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - too_few_aggregation_bit OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - too_many_aggregation_bi OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - wrong_index_for_committ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - wrong_index_for_slot_0 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - wrong_index_for_slot_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - after_epoch_slots OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - bad_source_root OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - before_inclusion_dela OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - correct_after_epoch_d OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - empty_participants_se OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - empty_participants_ze OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - future_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_after_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_and_ta OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_target_afte OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - invalid_attestation_s OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - invalid_current_sourc OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - invalid_index OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - mismatched_target_and OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - new_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - old_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - old_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - source_root_is_target OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - too_few_aggregation_b OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - too_many_aggregation_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - wrong_index_for_commi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - wrong_index_for_slot_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - wrong_index_for_slot_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - correct_epoch_delay OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - correct_min_inclusion_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - correct_sqrt_epoch_del OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_and_tar OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_and_tar OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_and_tar OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_epoch_d OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_min_inc OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_sqrt_ep OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_target_epoch OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_target_min_i OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_target_sqrt_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - success OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - success_multi_proposer OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - success_previous_epoch OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - correct_epoch_delay OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - correct_min_inclusion_d OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - correct_sqrt_epoch_dela OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_and_targ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_and_targ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_and_targ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_epoch_de OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_min_incl OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_sqrt_epo OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_target_epoch_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_target_min_in OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_target_sqrt_e OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - success OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - success_multi_proposer_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - success_previous_epoch OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - correct_epoch_delay OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - correct_min_inclusion OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - correct_sqrt_epoch_de OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_and_ta OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_and_ta OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_and_ta OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_epoch_ OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_min_in OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_sqrt_e OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_target_epoc OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_target_min_ OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_target_sqrt OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - success OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - success_multi_propose OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - success_previous_epoc OK
|
||||
```
|
||||
OK: 114/114 Fail: 0/114 Skip: 0/114
|
||||
## Attester Slashing
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - all_empty_indice OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_bad_extra_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_bad_replace OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_duplicate_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_duplicate_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_empty_indic OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_bad_extra_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_bad_replace OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_duplicate_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_duplicate_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_empty_indic OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - invalid_sig_1_an OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - no_double_or_sur OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - participants_alr OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - same_data OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - unsorted_att_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - unsorted_att_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - all_empty_indices OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_bad_extra_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_bad_replaced OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_duplicate_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_duplicate_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_empty_indice OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_bad_extra_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_bad_replaced OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_duplicate_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_duplicate_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_empty_indice OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - invalid_sig_1_and OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - no_double_or_surr OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - participants_alre OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - same_data OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - unsorted_att_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - unsorted_att_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - all_empty_indic OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_bad_extra_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_bad_replac OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_duplicate_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_duplicate_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_empty_indi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_bad_extra_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_bad_replac OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_duplicate_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_duplicate_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_empty_indi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - invalid_sig_1_a OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - no_double_or_su OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - participants_al OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - same_data OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - unsorted_att_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - unsorted_att_2 OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_already_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_already_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_attestat OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_double OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_low_bala OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_misc_bal OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_proposer OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_surround OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_with_eff OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_already_e OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_already_e OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_attestati OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_double OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_low_balan OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_misc_bala OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_proposer_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_surround OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_with_effe OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_already OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_already OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_attesta OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_double OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_low_bal OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_misc_ba OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_propose OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_surroun OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_with_ef OK
|
||||
```
|
||||
OK: 90/90 Fail: 0/90 Skip: 0/90
|
||||
## Block Header
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - invalid_multiple_bloc OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - invalid_parent_root OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - invalid_proposer_inde OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - invalid_slot_block_he OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - proposer_slashed OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - invalid_multiple_block OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - invalid_parent_root OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - invalid_proposer_index OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - invalid_slot_block_hea OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - proposer_slashed OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - invalid_multiple_blo OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - invalid_parent_root OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - invalid_proposer_ind OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - invalid_slot_block_h OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - proposer_slashed OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Block Header - success_block_header OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Block Header - success_block_header OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Block Header - success_block_header OK
|
||||
```
|
||||
OK: 18/18 Fail: 0/18 Skip: 0/18
|
||||
## Deposit
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Deposit - bad_merkle_proof OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Deposit - wrong_deposit_for_deposit_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Deposit - bad_merkle_proof OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Deposit - wrong_deposit_for_deposit_c OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Deposit - bad_merkle_proof OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Deposit - wrong_deposit_for_deposit OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - invalid_sig_new_deposit OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - invalid_sig_other_version OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - invalid_sig_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - invalid_withdrawal_credent OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_eth1_withdrawa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_max OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_non_versioned_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_over_max OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_under_max OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - success_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - valid_sig_but_forked_state OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - invalid_sig_new_deposit OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - invalid_sig_other_version OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - invalid_sig_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - invalid_withdrawal_credenti OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_eth1_withdrawal OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_max OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_non_versioned_w OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_over_max OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_under_max OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - success_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - valid_sig_but_forked_state OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - invalid_sig_new_deposit OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - invalid_sig_other_version OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - invalid_sig_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - invalid_withdrawal_creden OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_eth1_withdraw OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_max OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_non_versioned OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_over_max OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_under_max OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - success_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - valid_sig_but_forked_stat OK
|
||||
```
|
||||
OK: 39/39 Fail: 0/39 Skip: 0/39
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Effective balance updates [Preset: mainnet]
|
||||
```diff
|
||||
+ Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK
|
||||
@ -878,6 +1028,134 @@ OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
+ Testing VoluntaryExit OK
|
||||
```
|
||||
OK: 27/27 Fail: 0/27 Skip: 0/27
|
||||
## Proposer Slashing
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - epochs_are_diffe OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - headers_are_same OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - headers_are_same OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_differen OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_proposer OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_sig_1_an OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_sig_1_an OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - proposer_is_not_ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - proposer_is_slas OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - proposer_is_with OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - epochs_are_differ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - headers_are_same_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - headers_are_same_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_different OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_proposer_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_sig_1_and OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_sig_1_and OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - proposer_is_not_a OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - proposer_is_slash OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - proposer_is_withd OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - epochs_are_diff OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - headers_are_sam OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - headers_are_sam OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_differe OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_propose OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_sig_1_a OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_sig_1_a OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - proposer_is_not OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - proposer_is_sla OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - proposer_is_wit OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Proposer Slashing - success OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Proposer Slashing - success_block_he OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Proposer Slashing - success_slashed_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Proposer Slashing - success OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Proposer Slashing - success_block_hea OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Proposer Slashing - success_slashed_a OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - success OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - success_block_h OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - success_slashed OK
|
||||
```
|
||||
OK: 45/45 Fail: 0/45 Skip: 0/45
|
||||
## Sync Aggregate
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_b OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_e OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_m OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_n OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_p OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_ba OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_ex OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_mi OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_no OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_pa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_all_but_one_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_high_partici OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_low_particip OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_misc_balance OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_only_one_par OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_with_exits_w OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_rewa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_rewa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_rewa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_rewa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_rewa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_with OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_with OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_with OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_with OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_all_but_one_p OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_high_particip OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_low_participa OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_misc_balances OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_only_one_part OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_with_exits_wi OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_rewar OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_rewar OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_rewar OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_rewar OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_rewar OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_with_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_with_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_with_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_with_ OK
|
||||
```
|
||||
OK: 44/44 Fail: 0/44 Skip: 0/44
|
||||
## Voluntary Exit
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - invalid_signature OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_already_e OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_exit_in_f OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_invalid_v OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_not_activ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_not_activ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - invalid_signature OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_already_ex OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_exit_in_fu OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_invalid_va OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_not_active OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_not_active OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - invalid_signature OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_already_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_exit_in_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_invalid_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_not_acti OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_not_acti OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Voluntary Exit - default_exit_epoch_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Voluntary Exit - success OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Voluntary Exit - success_exit_queue_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Voluntary Exit - default_exit_epoch_s OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Voluntary Exit - success OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Voluntary Exit - success_exit_queue__ OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - default_exit_epoch OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - success OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - success_exit_queue OK
|
||||
```
|
||||
OK: 27/27 Fail: 0/27 Skip: 0/27
|
||||
|
||||
---TOTAL---
|
||||
OK: 742/742 Fail: 0/742 Skip: 0/742
|
||||
OK: 992/992 Fail: 0/992 Skip: 0/992
|
||||
|
@ -147,8 +147,6 @@ ConsensusSpecPreset-minimal
|
||||
+ Slots - over_epoch_boundary OK
|
||||
+ Slots - slots_1 OK
|
||||
+ Slots - slots_2 OK
|
||||
+ [Invalid] bad_merkle_proof OK
|
||||
+ [Invalid] wrong_deposit_for_deposit_count OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - double_same_proposer_slashings_ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - double_similar_proposer_slashin OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - double_validator_exit_same_bloc OK
|
||||
@ -192,20 +190,6 @@ ConsensusSpecPreset-minimal
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - same_slot_block_transition [Pr OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - slash_and_exit_same_index [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - zero_block_sig [Preset: minima OK
|
||||
+ [Invalid] after_epoch_slots OK
|
||||
+ [Invalid] all_empty_indices OK
|
||||
+ [Invalid] att1_bad_extra_index OK
|
||||
+ [Invalid] att1_bad_replaced_index OK
|
||||
+ [Invalid] att1_duplicate_index_double_signed OK
|
||||
+ [Invalid] att1_duplicate_index_normal_signed OK
|
||||
+ [Invalid] att1_empty_indices OK
|
||||
+ [Invalid] att1_high_index OK
|
||||
+ [Invalid] att2_bad_extra_index OK
|
||||
+ [Invalid] att2_bad_replaced_index OK
|
||||
+ [Invalid] att2_duplicate_index_double_signed OK
|
||||
+ [Invalid] att2_duplicate_index_normal_signed OK
|
||||
+ [Invalid] att2_empty_indices OK
|
||||
+ [Invalid] att2_high_index OK
|
||||
+ [Invalid] bad_everything_regular_payload OK
|
||||
+ [Invalid] bad_execution_first_payload OK
|
||||
+ [Invalid] bad_execution_regular_payload OK
|
||||
@ -213,80 +197,12 @@ ConsensusSpecPreset-minimal
|
||||
+ [Invalid] bad_parent_hash_regular_payload OK
|
||||
+ [Invalid] bad_random_first_payload OK
|
||||
+ [Invalid] bad_random_regular_payload OK
|
||||
+ [Invalid] bad_source_root OK
|
||||
+ [Invalid] bad_timestamp_first_payload OK
|
||||
+ [Invalid] bad_timestamp_regular_payload OK
|
||||
+ [Invalid] before_inclusion_delay OK
|
||||
+ [Invalid] correct_after_epoch_delay OK
|
||||
+ [Invalid] empty_participants_seemingly_valid_sig OK
|
||||
+ [Invalid] empty_participants_zeroes_sig OK
|
||||
+ [Invalid] epochs_are_different OK
|
||||
+ [Invalid] future_target_epoch OK
|
||||
+ [Invalid] gaslimit_lower_minus_regular_payload OK
|
||||
+ [Invalid] gaslimit_minimum_minus_regular_payload OK
|
||||
+ [Invalid] gaslimit_upper_plus_regular_payload OK
|
||||
+ [Invalid] gasused_gaslimit_plus_regular_payload OK
|
||||
+ [Invalid] headers_are_same_sigs_are_different OK
|
||||
+ [Invalid] headers_are_same_sigs_are_same OK
|
||||
+ [Invalid] incorrect_head_after_epoch_delay OK
|
||||
+ [Invalid] incorrect_head_and_target_after_epoch_delay OK
|
||||
+ [Invalid] incorrect_target_after_epoch_delay OK
|
||||
+ [Invalid] invalid_attestation_signature OK
|
||||
+ [Invalid] invalid_current_source_root OK
|
||||
+ [Invalid] invalid_different_proposer_indices OK
|
||||
+ [Invalid] invalid_index OK
|
||||
+ [Invalid] invalid_multiple_blocks_single_slot OK
|
||||
+ [Invalid] invalid_parent_root OK
|
||||
+ [Invalid] invalid_proposer_index OK
|
||||
+ [Invalid] invalid_sig_1 OK
|
||||
+ [Invalid] invalid_sig_1_and_2 OK
|
||||
+ [Invalid] invalid_sig_1_and_2_swap OK
|
||||
+ [Invalid] invalid_sig_2 OK
|
||||
+ [Invalid] invalid_signature OK
|
||||
+ [Invalid] invalid_signature_bad_domain OK
|
||||
+ [Invalid] invalid_signature_extra_participant OK
|
||||
+ [Invalid] invalid_signature_infinite_signature_with_all_participants OK
|
||||
+ [Invalid] invalid_signature_infinite_signature_with_single_participant OK
|
||||
+ [Invalid] invalid_signature_missing_participant OK
|
||||
+ [Invalid] invalid_signature_no_participants OK
|
||||
+ [Invalid] invalid_signature_past_block OK
|
||||
+ [Invalid] invalid_signature_previous_committee OK
|
||||
+ [Invalid] invalid_slot_block_header OK
|
||||
+ [Invalid] mismatched_target_and_slot OK
|
||||
+ [Invalid] new_source_epoch OK
|
||||
+ [Invalid] no_double_or_surround OK
|
||||
+ [Invalid] old_source_epoch OK
|
||||
+ [Invalid] old_target_epoch OK
|
||||
+ [Invalid] participants_already_slashed OK
|
||||
+ [Invalid] proposer_is_not_activated OK
|
||||
+ [Invalid] proposer_is_slashed OK
|
||||
+ [Invalid] proposer_is_withdrawn OK
|
||||
+ [Invalid] proposer_slashed OK
|
||||
+ [Invalid] same_data OK
|
||||
+ [Invalid] source_root_is_target_root OK
|
||||
+ [Invalid] too_few_aggregation_bits OK
|
||||
+ [Invalid] too_many_aggregation_bits OK
|
||||
+ [Invalid] unsorted_att_1 OK
|
||||
+ [Invalid] unsorted_att_2 OK
|
||||
+ [Invalid] validator_already_exited OK
|
||||
+ [Invalid] validator_exit_in_future OK
|
||||
+ [Invalid] validator_invalid_validator_index OK
|
||||
+ [Invalid] validator_not_active OK
|
||||
+ [Invalid] validator_not_active_long_enough OK
|
||||
+ [Invalid] wrong_index_for_committee_signature OK
|
||||
+ [Invalid] wrong_index_for_slot_0 OK
|
||||
+ [Invalid] wrong_index_for_slot_1 OK
|
||||
+ [Valid] invalid_sig_new_deposit OK
|
||||
+ [Valid] invalid_sig_other_version OK
|
||||
+ [Valid] invalid_sig_top_up OK
|
||||
+ [Valid] invalid_withdrawal_credentials_top_up OK
|
||||
+ [Valid] new_deposit_eth1_withdrawal_credentials OK
|
||||
+ [Valid] new_deposit_max OK
|
||||
+ [Valid] new_deposit_non_versioned_withdrawal_credentials OK
|
||||
+ [Valid] new_deposit_over_max OK
|
||||
+ [Valid] new_deposit_under_max OK
|
||||
+ [Valid] success_top_up OK
|
||||
+ [Valid] valid_sig_but_forked_state OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_no_updates_at_genesis [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_rule_1 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_rule_2 [Preset: minimal] OK
|
||||
@ -435,66 +351,297 @@ ConsensusSpecPreset-minimal
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - skipped_slots [Preset: minimal OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - slash_and_exit_diff_index [Pre OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - voluntary_exit [Preset: minima OK
|
||||
+ [Valid] correct_epoch_delay OK
|
||||
+ [Valid] correct_min_inclusion_delay OK
|
||||
+ [Valid] correct_sqrt_epoch_delay OK
|
||||
+ [Valid] default_exit_epoch_subsequent_exit OK
|
||||
+ [Valid] gaslimit_lower_regular_payload OK
|
||||
+ [Valid] gaslimit_max_first_payload OK
|
||||
+ [Valid] gaslimit_minimum_regular_payload OK
|
||||
+ [Valid] gaslimit_upper_regular_payload OK
|
||||
+ [Valid] gaslimit_zero_first_payload OK
|
||||
+ [Valid] gasused_gaslimit_regular_payload OK
|
||||
+ [Valid] incorrect_head_and_target_epoch_delay OK
|
||||
+ [Valid] incorrect_head_and_target_min_inclusion_delay OK
|
||||
+ [Valid] incorrect_head_and_target_sqrt_epoch_delay OK
|
||||
+ [Valid] incorrect_head_epoch_delay OK
|
||||
+ [Valid] incorrect_head_min_inclusion_delay OK
|
||||
+ [Valid] incorrect_head_sqrt_epoch_delay OK
|
||||
+ [Valid] incorrect_target_epoch_delay OK
|
||||
+ [Valid] incorrect_target_min_inclusion_delay OK
|
||||
+ [Valid] incorrect_target_sqrt_epoch_delay OK
|
||||
+ [Valid] proposer_in_committee_with_participation OK
|
||||
+ [Valid] proposer_in_committee_without_participation OK
|
||||
+ [Valid] random_all_but_one_participating_without_duplicates OK
|
||||
+ [Valid] random_high_participation_without_duplicates OK
|
||||
+ [Valid] random_low_participation_without_duplicates OK
|
||||
+ [Valid] random_misc_balances_and_half_participation_without_duplicates OK
|
||||
+ [Valid] random_only_one_participant_without_duplicates OK
|
||||
+ [Valid] random_with_exits_without_duplicates OK
|
||||
+ [Valid] success OK
|
||||
+ [Valid] success_already_exited_long_ago OK
|
||||
+ [Valid] success_already_exited_recent OK
|
||||
+ [Valid] success_attestation_from_future OK
|
||||
+ [Valid] success_block_header OK
|
||||
+ [Valid] success_block_header_from_future OK
|
||||
+ [Valid] success_double OK
|
||||
+ [Valid] success_exit_queue__min_churn OK
|
||||
+ [Valid] success_exit_queue__scaled_churn OK
|
||||
+ [Valid] success_first_payload OK
|
||||
+ [Valid] success_first_payload_with_gap_slot OK
|
||||
+ [Valid] success_low_balances OK
|
||||
+ [Valid] success_misc_balances OK
|
||||
+ [Valid] success_multi_proposer_index_iterations OK
|
||||
+ [Valid] success_previous_epoch OK
|
||||
+ [Valid] success_proposer_index_slashed OK
|
||||
+ [Valid] success_regular_payload OK
|
||||
+ [Valid] success_regular_payload_with_gap_slot OK
|
||||
+ [Valid] success_slashed_and_proposer_index_the_same OK
|
||||
+ [Valid] success_surround OK
|
||||
+ [Valid] success_with_effective_balance_disparity OK
|
||||
+ [Valid] sync_committee_rewards_empty_participants OK
|
||||
+ [Valid] sync_committee_rewards_nonduplicate_committee OK
|
||||
+ [Valid] sync_committee_rewards_not_full_participants OK
|
||||
+ [Valid] sync_committee_with_nonparticipating_exited_member OK
|
||||
+ [Valid] sync_committee_with_nonparticipating_withdrawable_member OK
|
||||
+ [Valid] sync_committee_with_participating_exited_member OK
|
||||
+ [Valid] sync_committee_with_participating_withdrawable_member OK
|
||||
+ [Valid] valid_signature_future_committee OK
|
||||
+ finality_root_merkle_proof OK
|
||||
+ next_sync_committee_merkle_proof OK
|
||||
```
|
||||
OK: 491/491 Fail: 0/491 Skip: 0/491
|
||||
OK: 361/361 Fail: 0/361 Skip: 0/361
|
||||
## Attestation
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - after_epoch_slots OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - bad_source_root OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - before_inclusion_delay OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - correct_after_epoch_de OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - empty_participants_see OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - empty_participants_zer OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - future_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_after_e OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_and_tar OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_target_after OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - invalid_attestation_si OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - invalid_current_source OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - invalid_index OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - mismatched_target_and_ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - new_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - old_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - old_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - source_root_is_target_ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - too_few_aggregation_bi OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - too_many_aggregation_b OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - wrong_index_for_commit OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - wrong_index_for_slot_0 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attestation - wrong_index_for_slot_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - after_epoch_slots OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - bad_source_root OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - before_inclusion_delay OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - correct_after_epoch_del OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - empty_participants_seem OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - empty_participants_zero OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - future_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_after_ep OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_and_targ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_target_after_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - invalid_attestation_sig OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - invalid_current_source_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - invalid_index OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - mismatched_target_and_s OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - new_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - old_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - old_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - source_root_is_target_r OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - too_few_aggregation_bit OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - too_many_aggregation_bi OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - wrong_index_for_committ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - wrong_index_for_slot_0 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attestation - wrong_index_for_slot_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - after_epoch_slots OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - bad_source_root OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - before_inclusion_dela OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - correct_after_epoch_d OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - empty_participants_se OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - empty_participants_ze OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - future_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_after_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_and_ta OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_target_afte OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - invalid_attestation_s OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - invalid_current_sourc OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - invalid_index OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - mismatched_target_and OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - new_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - old_source_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - old_target_epoch OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - source_root_is_target OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - too_few_aggregation_b OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - too_many_aggregation_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - wrong_index_for_commi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - wrong_index_for_slot_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attestation - wrong_index_for_slot_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - correct_epoch_delay OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - correct_min_inclusion_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - correct_sqrt_epoch_del OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_and_tar OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_and_tar OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_and_tar OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_epoch_d OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_min_inc OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_head_sqrt_ep OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_target_epoch OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_target_min_i OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - incorrect_target_sqrt_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - success OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - success_multi_proposer OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attestation - success_previous_epoch OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - correct_epoch_delay OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - correct_min_inclusion_d OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - correct_sqrt_epoch_dela OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_and_targ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_and_targ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_and_targ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_epoch_de OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_min_incl OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_head_sqrt_epo OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_target_epoch_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_target_min_in OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - incorrect_target_sqrt_e OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - success OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - success_multi_proposer_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attestation - success_previous_epoch OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - correct_epoch_delay OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - correct_min_inclusion OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - correct_sqrt_epoch_de OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_and_ta OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_and_ta OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_and_ta OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_epoch_ OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_min_in OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_head_sqrt_e OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_target_epoc OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_target_min_ OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - incorrect_target_sqrt OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - success OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - success_multi_propose OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attestation - success_previous_epoc OK
|
||||
```
|
||||
OK: 114/114 Fail: 0/114 Skip: 0/114
|
||||
## Attester Slashing
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - all_empty_indice OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_bad_extra_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_bad_replace OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_duplicate_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_duplicate_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_empty_indic OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att1_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_bad_extra_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_bad_replace OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_duplicate_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_duplicate_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_empty_indic OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - att2_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - invalid_sig_1_an OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - no_double_or_sur OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - participants_alr OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - same_data OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - unsorted_att_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Attester Slashing - unsorted_att_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - all_empty_indices OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_bad_extra_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_bad_replaced OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_duplicate_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_duplicate_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_empty_indice OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att1_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_bad_extra_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_bad_replaced OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_duplicate_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_duplicate_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_empty_indice OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - att2_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - invalid_sig_1_and OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - no_double_or_surr OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - participants_alre OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - same_data OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - unsorted_att_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Attester Slashing - unsorted_att_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - all_empty_indic OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_bad_extra_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_bad_replac OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_duplicate_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_duplicate_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_empty_indi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att1_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_bad_extra_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_bad_replac OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_duplicate_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_duplicate_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_empty_indi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - att2_high_index OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - invalid_sig_1_a OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - no_double_or_su OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - participants_al OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - same_data OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - unsorted_att_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - unsorted_att_2 OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_already_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_already_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_attestat OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_double OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_low_bala OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_misc_bal OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_proposer OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_surround OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Attester Slashing - success_with_eff OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_already_e OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_already_e OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_attestati OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_double OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_low_balan OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_misc_bala OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_proposer_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_surround OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Attester Slashing - success_with_effe OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_already OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_already OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_attesta OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_double OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_low_bal OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_misc_ba OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_propose OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_surroun OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Attester Slashing - success_with_ef OK
|
||||
```
|
||||
OK: 90/90 Fail: 0/90 Skip: 0/90
|
||||
## Block Header
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - invalid_multiple_bloc OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - invalid_parent_root OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - invalid_proposer_inde OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - invalid_slot_block_he OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Block Header - proposer_slashed OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - invalid_multiple_block OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - invalid_parent_root OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - invalid_proposer_index OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - invalid_slot_block_hea OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Block Header - proposer_slashed OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - invalid_multiple_blo OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - invalid_parent_root OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - invalid_proposer_ind OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - invalid_slot_block_h OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Block Header - proposer_slashed OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Block Header - success_block_header OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Block Header - success_block_header OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Block Header - success_block_header OK
|
||||
```
|
||||
OK: 18/18 Fail: 0/18 Skip: 0/18
|
||||
## Deposit
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Deposit - bad_merkle_proof OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Deposit - wrong_deposit_for_deposit_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Deposit - bad_merkle_proof OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Deposit - wrong_deposit_for_deposit_c OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Deposit - bad_merkle_proof OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Deposit - wrong_deposit_for_deposit OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - invalid_sig_new_deposit OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - invalid_sig_other_version OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - invalid_sig_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - invalid_withdrawal_credent OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_eth1_withdrawa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_max OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_non_versioned_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_over_max OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - new_deposit_under_max OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - success_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Deposit - valid_sig_but_forked_state OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - invalid_sig_new_deposit OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - invalid_sig_other_version OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - invalid_sig_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - invalid_withdrawal_credenti OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_eth1_withdrawal OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_max OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_non_versioned_w OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_over_max OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - new_deposit_under_max OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - success_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Deposit - valid_sig_but_forked_state OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - invalid_sig_new_deposit OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - invalid_sig_other_version OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - invalid_sig_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - invalid_withdrawal_creden OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_eth1_withdraw OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_max OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_non_versioned OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_over_max OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - new_deposit_under_max OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - success_top_up OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Deposit - valid_sig_but_forked_stat OK
|
||||
```
|
||||
OK: 39/39 Fail: 0/39 Skip: 0/39
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Effective balance updates [Preset: minimal]
|
||||
```diff
|
||||
+ Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK
|
||||
@ -918,6 +1065,141 @@ OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
+ Testing VoluntaryExit OK
|
||||
```
|
||||
OK: 27/27 Fail: 0/27 Skip: 0/27
|
||||
## Proposer Slashing
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - epochs_are_diffe OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - headers_are_same OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - headers_are_same OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_differen OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_proposer OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_sig_1_an OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_sig_1_an OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - proposer_is_not_ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - proposer_is_slas OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Proposer Slashing - proposer_is_with OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - epochs_are_differ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - headers_are_same_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - headers_are_same_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_different OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_proposer_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_sig_1_and OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_sig_1_and OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - proposer_is_not_a OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - proposer_is_slash OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Proposer Slashing - proposer_is_withd OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - epochs_are_diff OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - headers_are_sam OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - headers_are_sam OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_differe OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_propose OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_sig_1 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_sig_1_a OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_sig_1_a OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - invalid_sig_2 OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - proposer_is_not OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - proposer_is_sla OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - proposer_is_wit OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Proposer Slashing - success OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Proposer Slashing - success_block_he OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Proposer Slashing - success_slashed_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Proposer Slashing - success OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Proposer Slashing - success_block_hea OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Proposer Slashing - success_slashed_a OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - success OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - success_block_h OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Proposer Slashing - success_slashed OK
|
||||
```
|
||||
OK: 45/45 Fail: 0/45 Skip: 0/45
|
||||
## Sync Aggregate
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_b OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_e OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_i OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_m OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_n OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_p OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Sync Aggregate - invalid_signature_p OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_ba OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_ex OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_in OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_mi OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_no OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_pa OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Sync Aggregate - invalid_signature_pr OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - proposer_in_committ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - proposer_in_committ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_all_but_one_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_high_partici OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_low_particip OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_misc_balance OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_only_one_par OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - random_with_exits_w OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_rewa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_rewa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_rewa OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_with OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_with OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_with OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - sync_committee_with OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Sync Aggregate - valid_signature_fut OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - proposer_in_committe OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - proposer_in_committe OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_all_but_one_p OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_high_particip OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_low_participa OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_misc_balances OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_only_one_part OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - random_with_exits_wi OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_rewar OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_rewar OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_rewar OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_with_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_with_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_with_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - sync_committee_with_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Sync Aggregate - valid_signature_futu OK
|
||||
```
|
||||
OK: 48/48 Fail: 0/48 Skip: 0/48
|
||||
## Voluntary Exit
|
||||
```diff
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - invalid_signature OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_already_e OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_exit_in_f OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_invalid_v OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_not_activ OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Operations - Voluntary Exit - validator_not_activ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - invalid_signature OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_already_ex OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_exit_in_fu OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_invalid_va OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_not_active OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Operations - Voluntary Exit - validator_not_active OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - invalid_signature OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_already_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_exit_in_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_invalid_ OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_not_acti OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - validator_not_acti OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Voluntary Exit - default_exit_epoch_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Voluntary Exit - success OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Voluntary Exit - success_exit_queue_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Operations - Voluntary Exit - success_exit_queue_ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Voluntary Exit - default_exit_epoch_s OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Voluntary Exit - success OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Voluntary Exit - success_exit_queue__ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Operations - Voluntary Exit - success_exit_queue__ OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - default_exit_epoch OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - success OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - success_exit_queue OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Operations - Voluntary Exit - success_exit_queue OK
|
||||
```
|
||||
OK: 30/30 Fail: 0/30 Skip: 0/30
|
||||
|
||||
---TOTAL---
|
||||
OK: 774/774 Fail: 0/774 Skip: 0/774
|
||||
OK: 1028/1028 Fail: 0/1028 Skip: 0/1028
|
||||
|
@ -424,11 +424,6 @@ type
|
||||
next_fork_version*: Version
|
||||
next_fork_epoch*: Epoch
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/tree/v1.1.3/tests/formats/rewards#rewards-tests
|
||||
Deltas* = object
|
||||
rewards*: List[uint64, Limit VALIDATOR_REGISTRY_LIMIT]
|
||||
penalties*: List[uint64, Limit VALIDATOR_REGISTRY_LIMIT]
|
||||
|
||||
BeaconStateDiff* = object
|
||||
# Small and/or static; always include
|
||||
slot*: Slot
|
||||
|
@ -13,13 +13,7 @@ import
|
||||
import
|
||||
./test_fixture_fork,
|
||||
./test_fixture_merkle_single_proof,
|
||||
./test_fixture_operations_attestations,
|
||||
./test_fixture_operations_attester_slashings,
|
||||
./test_fixture_operations_block_header,
|
||||
./test_fixture_operations_deposits,
|
||||
./test_fixture_operations_proposer_slashings,
|
||||
./test_fixture_operations_sync_aggregate,
|
||||
./test_fixture_operations_voluntary_exit,
|
||||
./test_fixture_operations,
|
||||
./test_fixture_sanity_blocks,
|
||||
./test_fixture_sanity_slots,
|
||||
./test_fixture_ssz_consensus_objects,
|
||||
|
161
tests/consensus_spec/altair/test_fixture_operations.nim
Normal file
161
tests/consensus_spec/altair/test_fixture_operations.nim
Normal file
@ -0,0 +1,161 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os, sequtils, sets,
|
||||
# Utilities
|
||||
chronicles,
|
||||
unittest2,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[beaconstate, state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const
|
||||
OpDir = SszTestsDir/const_preset/"altair"/"operations"
|
||||
OpAttestationsDir = OpDir/"attestation"
|
||||
OpAttSlashingDir = OpDir/"attester_slashing"
|
||||
OpBlockHeaderDir = OpDir/"block_header"
|
||||
OpDepositsDir = OpDir/"deposit"
|
||||
OpProposerSlashingDir = OpDir/"proposer_slashing"
|
||||
OpSyncAggregateDir = OpDir/"sync_aggregate"
|
||||
OpVoluntaryExitDir = OpDir/"voluntary_exit"
|
||||
|
||||
baseDescription = "Ethereum Foundation - Altair - Operations - "
|
||||
|
||||
doAssert toHashSet(mapIt(toSeq(walkDir(OpDir, relative = false)), it.path)) ==
|
||||
toHashSet([OpAttestationsDir, OpAttSlashingDir, OpBlockHeaderDir,
|
||||
OpDepositsDir, OpProposerSlashingDir, OpSyncAggregateDir,
|
||||
OpVoluntaryExitDir])
|
||||
|
||||
proc runTest[T, U](
|
||||
testSuiteDir: string, testSuiteName: string, applyFile: string,
|
||||
applyProc: U, identifier: string) =
|
||||
let testDir = testSuiteDir / "pyspec_tests" / identifier
|
||||
|
||||
proc testImpl() =
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & baseDescription & testSuiteName & " - " & identifier:
|
||||
var preState = newClone(
|
||||
parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
let done = applyProc(
|
||||
preState[], parseTest(testDir/(applyFile & ".ssz_snappy"), SSZ, T))
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
testImpl()
|
||||
|
||||
suite baseDescription & "Attestation " & preset():
|
||||
proc applyAttestation(
|
||||
preState: var altair.BeaconState, attestation: Attestation):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
let
|
||||
total_active_balance = get_total_active_balance(preState, cache)
|
||||
base_reward_per_increment =
|
||||
get_base_reward_per_increment(total_active_balance)
|
||||
|
||||
process_attestation(
|
||||
preState, attestation, {}, base_reward_per_increment, cache)
|
||||
|
||||
for path in walkTests(OpAttestationsDir):
|
||||
runTest[Attestation, typeof applyAttestation](
|
||||
OpAttestationsDir, "Attestation", "attestation", applyAttestation, path)
|
||||
|
||||
suite baseDescription & "Attester Slashing " & preset():
|
||||
proc applyAttesterSlashing(
|
||||
preState: var altair.BeaconState, attesterSlashing: AttesterSlashing):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_attester_slashing(
|
||||
defaultRuntimeConfig, preState, attesterSlashing, {}, cache)
|
||||
|
||||
for path in walkTests(OpAttSlashingDir):
|
||||
runTest[AttesterSlashing, typeof applyAttesterSlashing](
|
||||
OpAttSlashingDir, "Attester Slashing", "attester_slashing",
|
||||
applyAttesterSlashing, path)
|
||||
|
||||
suite baseDescription & "Block Header " & preset():
|
||||
func applyBlockHeader(
|
||||
preState: var altair.BeaconState, blck: altair.BeaconBlock):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_block_header(preState, blck, {}, cache)
|
||||
|
||||
for path in walkTests(OpBlockHeaderDir):
|
||||
runTest[altair.BeaconBlock, typeof applyBlockHeader](
|
||||
OpBlockHeaderDir, "Block Header", "block", applyBlockHeader, path)
|
||||
|
||||
suite baseDescription & "Deposit " & preset():
|
||||
proc applyDeposit(
|
||||
preState: var altair.BeaconState, deposit: Deposit):
|
||||
Result[void, cstring] =
|
||||
process_deposit(defaultRuntimeConfig, preState, deposit, {})
|
||||
|
||||
for path in walkTests(OpDepositsDir):
|
||||
runTest[Deposit, typeof applyDeposit](
|
||||
OpDepositsDir, "Deposit", "deposit", applyDeposit, path)
|
||||
|
||||
suite baseDescription & "Proposer Slashing " & preset():
|
||||
proc applyProposerSlashing(
|
||||
preState: var altair.BeaconState, proposerSlashing: ProposerSlashing):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState, proposerSlashing, {}, cache)
|
||||
|
||||
for path in walkTests(OpProposerSlashingDir):
|
||||
runTest[ProposerSlashing, typeof applyProposerSlashing](
|
||||
OpProposerSlashingDir, "Proposer Slashing", "proposer_slashing",
|
||||
applyProposerSlashing, path)
|
||||
|
||||
suite baseDescription & "Sync Aggregate " & preset():
|
||||
proc applySyncAggregate(
|
||||
preState: var altair.BeaconState, syncAggregate: SyncAggregate):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_sync_aggregate(
|
||||
preState, syncAggregate, get_total_active_balance(preState, cache), cache)
|
||||
|
||||
for path in walkTests(OpSyncAggregateDir):
|
||||
runTest[SyncAggregate, typeof applySyncAggregate](
|
||||
OpSyncAggregateDir, "Sync Aggregate", "sync_aggregate",
|
||||
applySyncAggregate, path)
|
||||
|
||||
suite baseDescription & "Voluntary Exit " & preset():
|
||||
proc applyVoluntaryExit(
|
||||
preState: var altair.BeaconState, voluntaryExit: SignedVoluntaryExit):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_voluntary_exit(
|
||||
defaultRuntimeConfig, preState, voluntaryExit, {}, cache)
|
||||
|
||||
for path in walkTests(OpVoluntaryExitDir):
|
||||
runTest[SignedVoluntaryExit, typeof applyVoluntaryExit](
|
||||
OpVoluntaryExitDir, "Voluntary Exit", "voluntary_exit",
|
||||
applyVoluntaryExit, path)
|
@ -1,71 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
unittest2,
|
||||
chronicles,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/beaconstate,
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OperationsAttestationsDir = SszTestsDir/const_preset/"altair"/"operations"/"attestation"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OperationsAttestationsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attestations _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
let
|
||||
attestation = parseTest(
|
||||
testDir/"attestation.ssz_snappy", SSZ, Attestation)
|
||||
|
||||
total_active_balance = get_total_active_balance(preState[], cache)
|
||||
base_reward_per_increment =
|
||||
get_base_reward_per_increment(total_active_balance)
|
||||
|
||||
done = process_attestation(
|
||||
preState[], attestation, {}, base_reward_per_increment, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attestations _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Altair - Operations - Attestations " & preset():
|
||||
for kind, path in walkDir(
|
||||
OperationsAttestationsDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,64 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpAttSlashingDir = SszTestsDir/const_preset/"altair"/"operations"/"attester_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpAttSlashingDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attester_slashing _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
let
|
||||
attesterSlashing = parseTest(
|
||||
testDir/"attester_slashing.ssz_snappy", SSZ, AttesterSlashing)
|
||||
done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attester_slashing _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Altair - Operations - Attester slashing " & preset():
|
||||
for kind, path in walkDir(OpAttSlashingDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,60 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpBlockHeaderDir = SszTestsDir/const_preset/"altair"/"operations"/"block_header"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpBlockHeaderDir / identifier
|
||||
|
||||
proc `testImpl _ blockheader _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
let
|
||||
blck = parseTest(testDir/"block.ssz_snappy", SSZ, altair.BeaconBlock)
|
||||
done = process_block_header(preState[], blck, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ blockheader _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Altair - Operations - Block header " & preset():
|
||||
for kind, path in walkDir(OpBlockHeaderDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,61 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[beaconstate, presets, state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OperationsDepositsDir = SszTestsDir/const_preset/"altair"/"operations"/"deposit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OperationsDepositsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_deposits _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & " " & identifier:
|
||||
var
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
let
|
||||
deposit = parseTest(testDir/"deposit.ssz_snappy", SSZ, Deposit)
|
||||
done = process_deposit(defaultRuntimeConfig, preState[], deposit, {})
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_deposits _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Altair - Operations - Deposits " & preset():
|
||||
for kind, path in walkDir(
|
||||
OperationsDepositsDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,67 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
when isMainModule:
|
||||
import chronicles # or some random compile error happens...
|
||||
|
||||
const OpProposerSlashingDir = SszTestsDir/const_preset/"altair"/"operations"/"proposer_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpProposerSlashingDir / identifier
|
||||
|
||||
proc `testImpl_proposer_slashing _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
let
|
||||
proposerSlashing = parseTest(
|
||||
testDir/"proposer_slashing.ssz_snappy", SSZ, ProposerSlashing)
|
||||
done = process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState[], proposerSlashing, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl_proposer_slashing _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Altair - Operations - Proposer slashing " & preset():
|
||||
for kind, path in walkDir(
|
||||
OpProposerSlashingDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,66 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[beaconstate, state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpSyncAggregateDir = SszTestsDir/const_preset/"altair"/"operations"/"sync_aggregate"/"pyspec_tests"
|
||||
|
||||
proc runTest(dir, identifier: string) =
|
||||
let testDir = dir / identifier
|
||||
|
||||
proc `testImpl_sync_committee _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
let
|
||||
syncAggregate = parseTest(
|
||||
testDir/"sync_aggregate.ssz_snappy", SSZ, SyncAggregate)
|
||||
total_active_balance = get_total_active_balance(preState[], cache)
|
||||
done = process_sync_aggregate(
|
||||
preState[], syncAggregate, total_active_balance, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl_sync_committee _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Altair - Operations - Sync Aggregate" & preset():
|
||||
for kind, path in walkDir(
|
||||
OpSyncAggregateDir, relative = true, checkDir = true):
|
||||
runTest(OpSyncAggregateDir, path)
|
@ -1,65 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpVoluntaryExitDir = SszTestsDir/const_preset/"altair"/"operations"/"voluntary_exit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpVoluntaryExitDir / identifier
|
||||
|
||||
proc `testImpl _ voluntary_exit _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
let
|
||||
voluntaryExit = parseTest(
|
||||
testDir/"voluntary_exit.ssz_snappy", SSZ, SignedVoluntaryExit)
|
||||
done = process_voluntary_exit(
|
||||
defaultRuntimeConfig, preState[], voluntaryExit, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ voluntary_exit _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Altair - Operations - Voluntary exit " & preset():
|
||||
for kind, path in walkDir(
|
||||
OpVoluntaryExitDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -35,6 +35,11 @@ type
|
||||
UnconsumedInput* = object of CatchableError
|
||||
TestSizeError* = object of ValueError
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/tree/v1.1.3/tests/formats/rewards#rewards-tests
|
||||
Deltas* = object
|
||||
rewards*: List[uint64, Limit VALIDATOR_REGISTRY_LIMIT]
|
||||
penalties*: List[uint64, Limit VALIDATOR_REGISTRY_LIMIT]
|
||||
|
||||
const
|
||||
FixturesDir* =
|
||||
currentSourcePath.rsplit(DirSep, 1)[0] / ".." / ".." / "vendor" / "nim-eth2-scenarios"
|
||||
@ -62,6 +67,11 @@ proc sszDecodeEntireInput*(input: openArray[byte], Decoded: type): Decoded =
|
||||
if stream.readable:
|
||||
raise newException(UnconsumedInput, "Remaining bytes in the input")
|
||||
|
||||
iterator walkTests*(dir: static string): string =
|
||||
for kind, path in walkDir(
|
||||
dir/"pyspec_tests", relative = true, checkDir = true):
|
||||
yield path
|
||||
|
||||
proc parseTest*(path: string, Format: typedesc[SSZ], T: typedesc): T =
|
||||
try:
|
||||
# debugEcho " [Debug] Loading file: \"", path, '\"'
|
||||
|
@ -8,13 +8,8 @@
|
||||
{.used.}
|
||||
|
||||
import
|
||||
./test_fixture_operations_attestations,
|
||||
./test_fixture_operations_attester_slashings,
|
||||
./test_fixture_operations_block_header,
|
||||
./test_fixture_operations_deposits,
|
||||
./test_fixture_operations,
|
||||
./test_fixture_operations_execution_payload,
|
||||
./test_fixture_operations_proposer_slashings,
|
||||
./test_fixture_operations_voluntary_exit,
|
||||
./test_fixture_sanity_blocks,
|
||||
./test_fixture_sanity_slots,
|
||||
./test_fixture_ssz_consensus_objects,
|
||||
|
156
tests/consensus_spec/merge/test_fixture_operations.nim
Normal file
156
tests/consensus_spec/merge/test_fixture_operations.nim
Normal file
@ -0,0 +1,156 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
chronicles,
|
||||
unittest2,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[beaconstate, state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/merge,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const
|
||||
OpDir = SszTestsDir/const_preset/"merge"/"operations"
|
||||
OpAttestationsDir = OpDir/"attestation"
|
||||
OpAttSlashingDir = OpDir/"attester_slashing"
|
||||
OpBlockHeaderDir = OpDir/"block_header"
|
||||
OpDepositsDir = OpDir/"deposit"
|
||||
OpProposerSlashingDir = OpDir/"proposer_slashing"
|
||||
OpSyncAggregateDir = OpDir/"sync_aggregate"
|
||||
OpVoluntaryExitDir = OpDir/"voluntary_exit"
|
||||
|
||||
baseDescription = "Ethereum Foundation - Merge - Operations - "
|
||||
|
||||
proc runTest[T, U](
|
||||
testSuiteDir: string, testSuiteName: string, applyFile: string,
|
||||
applyProc: U, identifier: string) =
|
||||
let testDir = testSuiteDir / "pyspec_tests" / identifier
|
||||
|
||||
proc testImpl() =
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & baseDescription & testSuiteName & " - " & identifier:
|
||||
var preState = newClone(
|
||||
parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
let done = applyProc(
|
||||
preState[], parseTest(testDir/(applyFile & ".ssz_snappy"), SSZ, T))
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
testImpl()
|
||||
|
||||
suite baseDescription & "Attestation " & preset():
|
||||
proc applyAttestation(
|
||||
preState: var merge.BeaconState, attestation: Attestation):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
let
|
||||
total_active_balance = get_total_active_balance(preState, cache)
|
||||
base_reward_per_increment =
|
||||
get_base_reward_per_increment(total_active_balance)
|
||||
|
||||
process_attestation(
|
||||
preState, attestation, {}, base_reward_per_increment, cache)
|
||||
|
||||
for path in walkTests(OpAttestationsDir):
|
||||
runTest[Attestation, typeof applyAttestation](
|
||||
OpAttestationsDir, "Attestation", "attestation", applyAttestation, path)
|
||||
|
||||
suite baseDescription & "Attester Slashing " & preset():
|
||||
proc applyAttesterSlashing(
|
||||
preState: var merge.BeaconState, attesterSlashing: AttesterSlashing):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_attester_slashing(
|
||||
defaultRuntimeConfig, preState, attesterSlashing, {}, cache)
|
||||
|
||||
for path in walkTests(OpAttSlashingDir):
|
||||
runTest[AttesterSlashing, typeof applyAttesterSlashing](
|
||||
OpAttSlashingDir, "Attester Slashing", "attester_slashing",
|
||||
applyAttesterSlashing, path)
|
||||
|
||||
suite baseDescription & "Block Header " & preset():
|
||||
func applyBlockHeader(
|
||||
preState: var merge.BeaconState, blck: merge.BeaconBlock):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_block_header(preState, blck, {}, cache)
|
||||
|
||||
for path in walkTests(OpBlockHeaderDir):
|
||||
runTest[merge.BeaconBlock, typeof applyBlockHeader](
|
||||
OpBlockHeaderDir, "Block Header", "block", applyBlockHeader, path)
|
||||
|
||||
suite baseDescription & "Deposit " & preset():
|
||||
proc applyDeposit(
|
||||
preState: var merge.BeaconState, deposit: Deposit):
|
||||
Result[void, cstring] =
|
||||
process_deposit(defaultRuntimeConfig, preState, deposit, {})
|
||||
|
||||
for path in walkTests(OpDepositsDir):
|
||||
runTest[Deposit, typeof applyDeposit](
|
||||
OpDepositsDir, "Deposit", "deposit", applyDeposit, path)
|
||||
|
||||
suite baseDescription & "Proposer Slashing " & preset():
|
||||
proc applyProposerSlashing(
|
||||
preState: var merge.BeaconState, proposerSlashing: ProposerSlashing):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState, proposerSlashing, {}, cache)
|
||||
|
||||
for path in walkTests(OpProposerSlashingDir):
|
||||
runTest[ProposerSlashing, typeof applyProposerSlashing](
|
||||
OpProposerSlashingDir, "Proposer Slashing", "proposer_slashing",
|
||||
applyProposerSlashing, path)
|
||||
|
||||
suite baseDescription & "Sync Aggregate " & preset():
|
||||
proc applySyncAggregate(
|
||||
preState: var merge.BeaconState, syncAggregate: SyncAggregate):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_sync_aggregate(
|
||||
preState, syncAggregate, get_total_active_balance(preState, cache), cache)
|
||||
|
||||
for path in walkTests(OpSyncAggregateDir):
|
||||
runTest[SyncAggregate, typeof applySyncAggregate](
|
||||
OpSyncAggregateDir, "Sync Aggregate", "sync_aggregate",
|
||||
applySyncAggregate, path)
|
||||
|
||||
suite baseDescription & "Voluntary Exit " & preset():
|
||||
proc applyVoluntaryExit(
|
||||
preState: var merge.BeaconState, voluntaryExit: SignedVoluntaryExit):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_voluntary_exit(
|
||||
defaultRuntimeConfig, preState, voluntaryExit, {}, cache)
|
||||
|
||||
for path in walkTests(OpVoluntaryExitDir):
|
||||
runTest[SignedVoluntaryExit, typeof applyVoluntaryExit](
|
||||
OpVoluntaryExitDir, "Voluntary Exit", "voluntary_exit",
|
||||
applyVoluntaryExit, path)
|
@ -1,67 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
std/os,
|
||||
# Utilities
|
||||
chronicles,
|
||||
unittest2,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/beaconstate,
|
||||
../../../beacon_chain/spec/datatypes/merge,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OperationsAttestationsDir = SszTestsDir/const_preset/"merge"/"operations"/"attestation"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OperationsAttestationsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attestations _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
let
|
||||
attestation = parseTest(
|
||||
testDir/"attestation.ssz_snappy", SSZ, Attestation)
|
||||
done = process_attestation(
|
||||
preState[], attestation, {}, get_base_reward_per_increment(
|
||||
get_total_active_balance(preState[], cache)), cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attestations _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Merge - Operations - Attestations " & preset():
|
||||
for kind, path in walkDir(
|
||||
OperationsAttestationsDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,63 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
std/os,
|
||||
# Utilities
|
||||
chronicles,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/merge,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpAttSlashingDir = SszTestsDir/const_preset/"merge"/"operations"/"attester_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpAttSlashingDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attester_slashing _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
let
|
||||
attesterSlashing = parseTest(
|
||||
testDir/"attester_slashing.ssz_snappy", SSZ, AttesterSlashing)
|
||||
done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attester_slashing _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Merge - Operations - Attester slashing " & preset():
|
||||
for kind, path in walkDir(OpAttSlashingDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,61 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/merge,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpBlockHeaderDir = SszTestsDir/const_preset/"merge"/"operations"/"block_header"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpBlockHeaderDir / identifier
|
||||
|
||||
proc `testImpl _ blockheader _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
let
|
||||
blck = parseTest(testDir/"block.ssz_snappy", SSZ, merge.BeaconBlock)
|
||||
done = process_block_header(preState[], blck, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ blockheader _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Merge - Operations - Block header " & preset():
|
||||
for kind, path in walkDir(OpBlockHeaderDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,61 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
chronicles,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[beaconstate, presets, state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/merge,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OperationsDepositsDir = SszTestsDir/const_preset/"merge"/"operations"/"deposit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OperationsDepositsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_deposits _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & " " & identifier:
|
||||
var
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
let
|
||||
deposit = parseTest(testDir/"deposit.ssz_snappy", SSZ, Deposit)
|
||||
done = process_deposit(defaultRuntimeConfig, preState[], deposit, {})
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_deposits _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Merge - Operations - Deposits " & preset():
|
||||
for kind, path in walkDir(
|
||||
OperationsDepositsDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,67 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/merge,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
when isMainModule:
|
||||
import chronicles # or some random compile error happens...
|
||||
|
||||
const OpProposerSlashingDir = SszTestsDir/const_preset/"merge"/"operations"/"proposer_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpProposerSlashingDir / identifier
|
||||
|
||||
proc `testImpl_proposer_slashing _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
let
|
||||
proposerSlashing = parseTest(
|
||||
testDir/"proposer_slashing.ssz_snappy", SSZ, ProposerSlashing)
|
||||
done = process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState[], proposerSlashing, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl_proposer_slashing _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Merge - Operations - Proposer slashing " & preset():
|
||||
for kind, path in walkDir(
|
||||
OpProposerSlashingDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,64 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
std/os,
|
||||
# Utilities
|
||||
chronicles,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/merge,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpVoluntaryExitDir = SszTestsDir/const_preset/"merge"/"operations"/"voluntary_exit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpVoluntaryExitDir / identifier
|
||||
|
||||
proc `testImpl _ voluntary_exit _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
let
|
||||
voluntaryExit = parseTest(
|
||||
testDir/"voluntary_exit.ssz_snappy", SSZ, SignedVoluntaryExit)
|
||||
done = process_voluntary_exit(
|
||||
defaultRuntimeConfig, preState[], voluntaryExit, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ voluntary_exit _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Merge - Operations - Voluntary exit " & preset():
|
||||
for kind, path in walkDir(
|
||||
OpVoluntaryExitDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -8,12 +8,7 @@
|
||||
{.used.}
|
||||
|
||||
import
|
||||
./test_fixture_operations_attestations,
|
||||
./test_fixture_operations_attester_slashings,
|
||||
./test_fixture_operations_block_header,
|
||||
./test_fixture_operations_deposits,
|
||||
./test_fixture_operations_proposer_slashings,
|
||||
./test_fixture_operations_voluntary_exit,
|
||||
./test_fixture_operations,
|
||||
./test_fixture_sanity_blocks,
|
||||
./test_fixture_sanity_slots,
|
||||
./test_fixture_ssz_consensus_objects,
|
||||
|
140
tests/consensus_spec/phase0/test_fixture_operations.nim
Normal file
140
tests/consensus_spec/phase0/test_fixture_operations.nim
Normal file
@ -0,0 +1,140 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os, sequtils, sets,
|
||||
# Utilities
|
||||
chronicles,
|
||||
unittest2,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[beaconstate, state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const
|
||||
OpDir = SszTestsDir/const_preset/"phase0"/"operations"
|
||||
OpAttestationsDir = OpDir/"attestation"
|
||||
OpAttSlashingDir = OpDir/"attester_slashing"
|
||||
OpBlockHeaderDir = OpDir/"block_header"
|
||||
OpDepositsDir = OpDir/"deposit"
|
||||
OpProposerSlashingDir = OpDir/"proposer_slashing"
|
||||
OpVoluntaryExitDir = OpDir/"voluntary_exit"
|
||||
|
||||
baseDescription = "Ethereum Foundation - Phase 0 - Operations - "
|
||||
|
||||
doAssert toHashSet(mapIt(toSeq(walkDir(OpDir, relative = false)), it.path)) ==
|
||||
toHashSet([OpAttestationsDir, OpAttSlashingDir, OpBlockHeaderDir,
|
||||
OpDepositsDir, OpProposerSlashingDir, OpVoluntaryExitDir])
|
||||
|
||||
proc runTest[T, U](
|
||||
testSuiteDir: string, testSuiteName: string, applyFile: string,
|
||||
applyProc: U, identifier: string) =
|
||||
let testDir = testSuiteDir / "pyspec_tests" / identifier
|
||||
|
||||
proc testImpl() =
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & baseDescription & testSuiteName & " - " & identifier:
|
||||
var preState = newClone(
|
||||
parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
let done = applyProc(
|
||||
preState[], parseTest(testDir/(applyFile & ".ssz_snappy"), SSZ, T))
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
testImpl()
|
||||
|
||||
suite baseDescription & "Attestation " & preset():
|
||||
proc applyAttestation(
|
||||
preState: var phase0.BeaconState, attestation: Attestation):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_attestation(preState, attestation, {}, 0.Gwei, cache)
|
||||
|
||||
for path in walkTests(OpAttestationsDir):
|
||||
runTest[Attestation, typeof applyAttestation](
|
||||
OpAttestationsDir, "Attestation", "attestation", applyAttestation, path)
|
||||
|
||||
suite baseDescription & "Attester Slashing " & preset():
|
||||
proc applyAttesterSlashing(
|
||||
preState: var phase0.BeaconState, attesterSlashing: AttesterSlashing):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_attester_slashing(
|
||||
defaultRuntimeConfig, preState, attesterSlashing, {}, cache)
|
||||
|
||||
for path in walkTests(OpAttSlashingDir):
|
||||
runTest[AttesterSlashing, typeof applyAttesterSlashing](
|
||||
OpAttSlashingDir, "Attester Slashing", "attester_slashing",
|
||||
applyAttesterSlashing, path)
|
||||
|
||||
suite baseDescription & "Block Header " & preset():
|
||||
func applyBlockHeader(
|
||||
preState: var phase0.BeaconState, blck: phase0.BeaconBlock):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_block_header(preState, blck, {}, cache)
|
||||
|
||||
for path in walkTests(OpBlockHeaderDir):
|
||||
runTest[phase0.BeaconBlock, typeof applyBlockHeader](
|
||||
OpBlockHeaderDir, "Block Header", "block", applyBlockHeader, path)
|
||||
|
||||
suite baseDescription & "Deposit " & preset():
|
||||
proc applyDeposit(
|
||||
preState: var phase0.BeaconState, deposit: Deposit):
|
||||
Result[void, cstring] =
|
||||
process_deposit(defaultRuntimeConfig, preState, deposit, {})
|
||||
|
||||
for path in walkTests(OpDepositsDir):
|
||||
runTest[Deposit, typeof applyDeposit](
|
||||
OpDepositsDir, "Deposit", "deposit", applyDeposit, path)
|
||||
|
||||
suite baseDescription & "Proposer Slashing " & preset():
|
||||
proc applyProposerSlashing(
|
||||
preState: var phase0.BeaconState, proposerSlashing: ProposerSlashing):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState, proposerSlashing, {}, cache)
|
||||
|
||||
for path in walkTests(OpProposerSlashingDir):
|
||||
runTest[ProposerSlashing, typeof applyProposerSlashing](
|
||||
OpProposerSlashingDir, "Proposer Slashing", "proposer_slashing",
|
||||
applyProposerSlashing, path)
|
||||
|
||||
suite baseDescription & "Voluntary Exit " & preset():
|
||||
proc applyVoluntaryExit(
|
||||
preState: var phase0.BeaconState, voluntaryExit: SignedVoluntaryExit):
|
||||
Result[void, cstring] =
|
||||
var cache = StateCache()
|
||||
process_voluntary_exit(
|
||||
defaultRuntimeConfig, preState, voluntaryExit, {}, cache)
|
||||
|
||||
for path in walkTests(OpVoluntaryExitDir):
|
||||
runTest[SignedVoluntaryExit, typeof applyVoluntaryExit](
|
||||
OpVoluntaryExitDir, "Voluntary Exit", "voluntary_exit",
|
||||
applyVoluntaryExit, path)
|
@ -1,66 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
chronicles,
|
||||
unittest2,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/beaconstate,
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OperationsAttestationsDir = SszTestsDir/const_preset/"phase0"/"operations"/"attestation"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OperationsAttestationsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attestations _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
let
|
||||
attestation = parseTest(
|
||||
testDir/"attestation.ssz_snappy", SSZ, Attestation)
|
||||
done = process_attestation(
|
||||
preState[], attestation, {}, 0.Gwei, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attestations _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Phase 0 - Operations - Attestations " & preset():
|
||||
for kind, path in walkDir(
|
||||
OperationsAttestationsDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,64 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpAttSlashingDir = SszTestsDir/const_preset/"phase0"/"operations"/"attester_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpAttSlashingDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attester_slashing _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
let
|
||||
attesterSlashing = parseTest(
|
||||
testDir/"attester_slashing.ssz_snappy", SSZ, AttesterSlashing)
|
||||
done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attester_slashing _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Phase 0 - Operations - Attester slashing " & preset():
|
||||
for kind, path in walkDir(OpAttSlashingDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,61 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpBlockHeaderDir = SszTestsDir/const_preset/"phase0"/"operations"/"block_header"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpBlockHeaderDir / identifier
|
||||
|
||||
proc `testImpl _ blockheader _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
let
|
||||
blck = parseTest(testDir/"block.ssz_snappy", SSZ, phase0.BeaconBlock)
|
||||
done = process_block_header(preState[], blck, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ blockheader _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Phase 0 - Operations - Block header " & preset():
|
||||
for kind, path in walkDir(OpBlockHeaderDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,62 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[state_transition_block, presets],
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OperationsDepositsDir = SszTestsDir/const_preset/"phase0"/"operations"/"deposit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OperationsDepositsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_deposits _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & " " & identifier:
|
||||
var
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
let
|
||||
deposit = parseTest(testDir/"deposit.ssz_snappy", SSZ, Deposit)
|
||||
done = process_deposit(defaultRuntimeConfig, preState[], deposit, {})
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_deposits _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Phase 0 - Operations - Deposits " & preset():
|
||||
for kind, path in walkDir(
|
||||
OperationsDepositsDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,67 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
when isMainModule:
|
||||
import chronicles # or some random compile error happens...
|
||||
|
||||
const OpProposerSlashingDir = SszTestsDir/const_preset/"phase0"/"operations"/"proposer_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpProposerSlashingDir / identifier
|
||||
|
||||
proc `testImpl_proposer_slashing _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
let
|
||||
proposerSlashing = parseTest(
|
||||
testDir/"proposer_slashing.ssz_snappy", SSZ, ProposerSlashing)
|
||||
done = process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState[], proposerSlashing, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl_proposer_slashing _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Phase 0 - Operations - Proposer slashing " & preset():
|
||||
for kind, path in walkDir(
|
||||
OpProposerSlashingDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
@ -1,65 +0,0 @@
|
||||
# beacon_chain
|
||||
# Copyright (c) 2018-2021 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).
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../../helpers/debug_state
|
||||
|
||||
const OpVoluntaryExitDir = SszTestsDir/const_preset/"phase0"/"operations"/"voluntary_exit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
let testDir = OpVoluntaryExitDir / identifier
|
||||
|
||||
proc `testImpl _ voluntary_exit _ identifier`() =
|
||||
|
||||
let prefix =
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
"[Valid] "
|
||||
else:
|
||||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
let
|
||||
voluntaryExit = parseTest(
|
||||
testDir/"voluntary_exit.ssz_snappy", SSZ, SignedVoluntaryExit)
|
||||
done = process_voluntary_exit(
|
||||
defaultRuntimeConfig, preState[], voluntaryExit, {}, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ voluntary_exit _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Phase 0 - Operations - Voluntary exit " & preset():
|
||||
for kind, path in walkDir(
|
||||
OpVoluntaryExitDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
Loading…
x
Reference in New Issue
Block a user