test fixture cleanups (#2976)
* "official" -> "scenarios", like the submodule * fewer test binaries - various compile hacks have been improved over time, test suite should follow * remove obsolete bls tests - there are better test vectors in nim-blscurve * remove obsolete mentions of `ssz_testing` * remove obsolete comments about proc vs globals, unittest2 already uses proc's
This commit is contained in:
parent
2ad1b7366a
commit
0c4bfb1911
|
@ -24,8 +24,8 @@ install:
|
|||
- IF "%PLATFORM%" == "x86" SET PATH=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin;%PATH%
|
||||
- IF "%PLATFORM%" == "x64" SET PATH=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;%PATH%
|
||||
|
||||
# official test fixtures
|
||||
- bash scripts\setup_official_tests.sh jsonTestsCache
|
||||
# spec test fixtures
|
||||
- bash scripts\setup_scenarios.sh jsonTestsCache
|
||||
|
||||
build_script:
|
||||
# the 32-bit build is done on a 64-bit image, so we need to override the architecture
|
||||
|
|
|
@ -264,7 +264,7 @@ jobs:
|
|||
shell: bash
|
||||
working-directory: nimbus-eth2
|
||||
run: |
|
||||
scripts/setup_official_tests.sh fixturesCache
|
||||
scripts/setup_scenarios.sh fixturesCache
|
||||
|
||||
- name: Smoke test the Beacon Node and Validator Client with all tracing enabled
|
||||
if: matrix.target.TEST_KIND == 'unit-tests'
|
||||
|
|
|
@ -178,7 +178,7 @@ jobs:
|
|||
|
||||
- name: Get the Ethereum Foundation fixtures
|
||||
run: |
|
||||
scripts/setup_official_tests.sh fixturesCache
|
||||
scripts/setup_scenarios.sh fixturesCache
|
||||
|
||||
- name: Build all tools
|
||||
run: |
|
||||
|
|
|
@ -48,8 +48,8 @@ matrix:
|
|||
|
||||
|
||||
install:
|
||||
# official test fixtures
|
||||
- scripts/setup_official_tests.sh jsonTestsCache
|
||||
# spec test fixtures
|
||||
- scripts/setup_scenarios.sh jsonTestsCache
|
||||
|
||||
script:
|
||||
- set -e # fail fast
|
||||
|
|
|
@ -1,5 +1,34 @@
|
|||
AllTests-mainnet
|
||||
===
|
||||
##
|
||||
```diff
|
||||
+ Slashing test: duplicate_pubkey_not_slashable.json OK
|
||||
+ Slashing test: multiple_interchanges_single_validator_single_message_gap.json OK
|
||||
+ Slashing test: multiple_interchanges_single_validator_single_message_out_of_order.json OK
|
||||
+ Slashing test: multiple_validators_multiple_blocks_and_attestations.json OK
|
||||
+ Slashing test: multiple_validators_same_slot_blocks.json OK
|
||||
+ Slashing test: single_validator_genesis_attestation.json OK
|
||||
+ Slashing test: single_validator_import_only.json OK
|
||||
+ Slashing test: single_validator_multiple_block_attempts.json OK
|
||||
+ Slashing test: single_validator_multiple_blocks_and_attestations.json OK
|
||||
+ Slashing test: single_validator_out_of_order_attestations.json OK
|
||||
+ Slashing test: single_validator_out_of_order_blocks.json OK
|
||||
+ Slashing test: single_validator_resign_attestation.json OK
|
||||
+ Slashing test: single_validator_resign_block.json OK
|
||||
+ Slashing test: single_validator_single_attestation.json OK
|
||||
+ Slashing test: single_validator_single_block.json OK
|
||||
+ Slashing test: single_validator_single_block_and_attestation.json OK
|
||||
+ Slashing test: single_validator_single_block_and_attestation_signing_root.json OK
|
||||
+ Slashing test: single_validator_slashable_attestations_double_vote.json OK
|
||||
+ Slashing test: single_validator_slashable_attestations_surrounded_by_existing.json OK
|
||||
+ Slashing test: single_validator_slashable_attestations_surrounds_existing.json OK
|
||||
+ Slashing test: single_validator_slashable_blocks.json OK
|
||||
+ Slashing test: single_validator_slashable_blocks_no_root.json OK
|
||||
+ Slashing test: single_validator_source_greater_than_target.json OK
|
||||
+ Slashing test: single_validator_two_blocks_no_signing_root.json OK
|
||||
+ Slashing test: wrong_genesis_validators_root.json OK
|
||||
```
|
||||
OK: 25/25 Fail: 0/25 Skip: 0/25
|
||||
## Attestation pool processing [Preset: mainnet]
|
||||
```diff
|
||||
+ Attestations may arrive in any order [Preset: mainnet] OK
|
||||
|
@ -91,6 +120,22 @@ OK: 1/1 Fail: 0/1 Skip: 0/1
|
|||
+ Subnet query after ENR update OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## Ethereum Foundation - SSZ generic types
|
||||
```diff
|
||||
Testing basic_vector inputs - invalid Skip
|
||||
+ Testing basic_vector inputs - valid OK
|
||||
+ Testing bitlist inputs - invalid OK
|
||||
+ Testing bitlist inputs - valid OK
|
||||
Testing bitvector inputs - invalid Skip
|
||||
+ Testing bitvector inputs - valid OK
|
||||
+ Testing boolean inputs - invalid OK
|
||||
+ Testing boolean inputs - valid OK
|
||||
+ Testing containers inputs - invalid - skipping BitsStruct OK
|
||||
+ Testing containers inputs - valid - skipping BitsStruct OK
|
||||
+ Testing uints inputs - invalid OK
|
||||
+ Testing uints inputs - valid OK
|
||||
```
|
||||
OK: 10/12 Fail: 0/12 Skip: 2/12
|
||||
## Exit pool testing suite
|
||||
```diff
|
||||
+ addExitMessage/getAttesterSlashingMessage OK
|
||||
|
@ -138,6 +183,19 @@ OK: 3/3 Fail: 0/3 Skip: 0/3
|
|||
+ Mocked start private key OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## KeyStorage testing suite
|
||||
```diff
|
||||
+ Pbkdf2 errors OK
|
||||
+ [PBKDF2] Keystore decryption OK
|
||||
+ [PBKDF2] Keystore encryption OK
|
||||
+ [PBKDF2] Network Keystore decryption OK
|
||||
+ [PBKDF2] Network Keystore encryption OK
|
||||
+ [SCRYPT] Keystore decryption OK
|
||||
+ [SCRYPT] Keystore encryption OK
|
||||
+ [SCRYPT] Network Keystore decryption OK
|
||||
+ [SCRYPT] Network Keystore encryption OK
|
||||
```
|
||||
OK: 9/9 Fail: 0/9 Skip: 0/9
|
||||
## Message signatures
|
||||
```diff
|
||||
+ Aggregate and proof signatures OK
|
||||
|
@ -305,6 +363,12 @@ OK: 8/8 Fail: 0/8 Skip: 0/8
|
|||
+ prune heads on finalization [Preset: mainnet] OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## eth2.0-deposits-cli compatibility
|
||||
```diff
|
||||
+ restoring mnemonic with password OK
|
||||
+ restoring mnemonic without password OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## hash
|
||||
```diff
|
||||
+ HashArray OK
|
||||
|
@ -379,4 +443,4 @@ OK: 1/1 Fail: 0/1 Skip: 0/1
|
|||
OK: 42/56 Fail: 0/56 Skip: 14/56
|
||||
|
||||
---TOTAL---
|
||||
OK: 207/221 Fail: 0/221 Skip: 14/221
|
||||
OK: 253/269 Fail: 0/269 Skip: 16/269
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
FixtureAll-mainnet
|
||||
ConsensusSpecPreset-mainnet
|
||||
===
|
||||
##
|
||||
```diff
|
|
@ -1,4 +1,4 @@
|
|||
FixtureAll-minimal
|
||||
ConsensusSpecPreset-minimal
|
||||
===
|
||||
##
|
||||
```diff
|
|
@ -1,702 +0,0 @@
|
|||
FixtureSSZConsensus-mainnet
|
||||
===
|
||||
##
|
||||
```diff
|
||||
+ Ethereum Foundation - Altair - Transition - normal_transition [Preset: mainnet] OK
|
||||
+ Ethereum Foundation - Altair - Transition - transition_missing_first_post_block [Preset: m OK
|
||||
+ Ethereum Foundation - Altair - Transition - transition_missing_last_pre_fork_block [Preset OK
|
||||
+ Ethereum Foundation - Altair - Transition - transition_only_blocks_post_fork [Preset: main OK
|
||||
+ Ethereum Foundation - Altair - Transition - transition_with_finality [Preset: mainnet] OK
|
||||
+ Ethereum Foundation - Altair - Transition - transition_with_no_attestations_until_after_fo OK
|
||||
+ Ethereum Foundation - Altair - Transition - transition_with_random_half_participation [Pre OK
|
||||
+ Ethereum Foundation - Altair - Transition - transition_with_random_three_quarters_particip OK
|
||||
+ Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK
|
||||
+ Rewards - duplicate_attestations_at_later_slots [Preset: mainnet] OK
|
||||
+ Rewards - empty [Preset: mainnet] OK
|
||||
+ Rewards - empty_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_all_correct [Preset: mainnet] OK
|
||||
+ Rewards - full_but_partial_participation [Preset: mainnet] OK
|
||||
+ Rewards - full_but_partial_participation_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_correct_target_incorrect_head [Preset: mainnet] OK
|
||||
+ Rewards - full_correct_target_incorrect_head_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_delay_max_slots [Preset: mainnet] OK
|
||||
+ Rewards - full_delay_one_slot [Preset: mainnet] OK
|
||||
+ Rewards - full_half_correct_target_incorrect_head [Preset: mainnet] OK
|
||||
+ Rewards - full_half_correct_target_incorrect_head_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_half_incorrect_target_correct_head [Preset: mainnet] OK
|
||||
+ Rewards - full_half_incorrect_target_correct_head_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_half_incorrect_target_incorrect_head [Preset: mainnet] OK
|
||||
+ Rewards - full_half_incorrect_target_incorrect_head_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_mixed_delay [Preset: mainnet] OK
|
||||
+ Rewards - full_random_0 [Preset: mainnet] OK
|
||||
+ Rewards - full_random_1 [Preset: mainnet] OK
|
||||
+ Rewards - full_random_2 [Preset: mainnet] OK
|
||||
+ Rewards - full_random_3 [Preset: mainnet] OK
|
||||
+ Rewards - full_random_4 [Preset: mainnet] OK
|
||||
+ Rewards - full_random_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_random_low_balances_0 [Preset: mainnet] OK
|
||||
+ Rewards - full_random_low_balances_1 [Preset: mainnet] OK
|
||||
+ Rewards - full_random_misc_balances [Preset: mainnet] OK
|
||||
+ Rewards - full_random_seven_epoch_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_random_ten_epoch_leak [Preset: mainnet] OK
|
||||
+ Rewards - full_random_without_leak_0 [Preset: mainnet] OK
|
||||
+ Rewards - full_random_without_leak_and_current_exit_0 [Preset: mainnet] OK
|
||||
+ Rewards - half_full [Preset: mainnet] OK
|
||||
+ Rewards - half_full_leak [Preset: mainnet] OK
|
||||
+ Rewards - one_attestation_one_correct [Preset: mainnet] OK
|
||||
+ Rewards - one_attestation_one_correct_leak [Preset: mainnet] OK
|
||||
+ Rewards - proposer_not_in_attestations [Preset: mainnet] OK
|
||||
+ Rewards - quarter_full [Preset: mainnet] OK
|
||||
+ Rewards - quarter_full_leak [Preset: mainnet] OK
|
||||
+ Rewards - some_very_low_effective_balances_that_attested [Preset: mainnet] OK
|
||||
+ Rewards - some_very_low_effective_balances_that_attested_leak [Preset: mainnet] OK
|
||||
+ Rewards - some_very_low_effective_balances_that_did_not_attest [Preset: mainnet] OK
|
||||
+ Rewards - some_very_low_effective_balances_that_did_not_attest_leak [Preset: mainnet] OK
|
||||
+ Rewards - with_exited_validators [Preset: mainnet] OK
|
||||
+ Rewards - with_exited_validators_leak [Preset: mainnet] OK
|
||||
+ Rewards - with_not_yet_activated_validators [Preset: mainnet] OK
|
||||
+ Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
||||
+ Rewards - with_slashed_validators [Preset: mainnet] OK
|
||||
+ Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
||||
+ Slots - double_empty_epoch OK
|
||||
+ Slots - empty_epoch OK
|
||||
+ 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
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - duplicate_attester_slashing [Pr OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - expected_deposit_in_block [Pres OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - invalid_block_sig [Preset: main OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - invalid_proposer_index_sig_from OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - invalid_proposer_index_sig_from OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - invalid_state_root [Preset: mai OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - parent_from_same_slot [Preset: OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - prev_slot_block_transition [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - same_slot_block_transition [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - slash_and_exit_same_index [Pres OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - zero_block_sig [Preset: mainnet OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - double_same_proposer_slashings_s OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - double_similar_proposer_slashing OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - double_validator_exit_same_block OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - duplicate_attester_slashing [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - expected_deposit_in_block [Prese OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - invalid_block_sig [Preset: mainn OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - invalid_proposer_index_sig_from_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - invalid_proposer_index_sig_from_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - invalid_state_root [Preset: main OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - parent_from_same_slot [Preset: m OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - prev_slot_block_transition [Pres OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - same_slot_block_transition [Pres OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - slash_and_exit_same_index [Prese OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - zero_block_sig [Preset: mainnet] OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - double_same_proposer_slashings OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - double_similar_proposer_slashi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - double_validator_exit_same_blo OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - duplicate_attester_slashing [P OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - expected_deposit_in_block [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - invalid_block_sig [Preset: mai OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - invalid_proposer_index_sig_fro OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - invalid_proposer_index_sig_fro OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - invalid_state_root [Preset: ma OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - parent_from_same_slot [Preset: OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - prev_slot_block_transition [Pr OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - proposal_for_genesis_slot [Pre OK
|
||||
+ [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
|
||||
+ [Invalid] bad_number_regular_payload OK
|
||||
+ [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
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_rule_3 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_rule_4 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_0 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_1 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_10 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_11 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_12 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_13 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_14 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_15 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_2 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_3 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_4 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_5 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_6 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_7 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_8 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_9 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - attestation [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - attester_slashing [Preset: main OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - balance_driven_status_transitio OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - deposit_in_block [Preset: mainn OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - deposit_top_up [Preset: mainnet OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_block_transition [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_epoch_transition [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_sync_committee_committee OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_sync_committee_committee_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_random_operations_0 [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_random_operations_1 [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_random_operations_2 [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_random_operations_3 [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_sync_committee_committee [ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_sync_committee_committee_g OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - half_sync_committee_committee [ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - half_sync_committee_committee_g OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - high_proposer_index [Preset: ma OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - historical_batch [Preset: mainn OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - inactivity_scores_full_particip OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - inactivity_scores_leaking [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - multiple_attester_slashings_no_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - multiple_attester_slashings_par OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - multiple_different_proposer_sla OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - multiple_different_validator_ex OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - proposer_after_inactive_index [ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - proposer_self_slashing [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - proposer_slashing [Preset: main OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - skipped_slots [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - slash_and_exit_diff_index [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - voluntary_exit [Preset: mainnet OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_no_updates_at_genesis [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_rule_1 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_rule_2 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_rule_3 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_rule_4 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - attestation [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - attester_slashing [Preset: mainn OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - balance_driven_status_transition OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - deposit_in_block [Preset: mainne OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - deposit_top_up [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_block_transition [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_block_transition_no_tx [Pr OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_epoch_transition [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_sync_committee_committee [ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_sync_committee_committee_g OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_random_operations_0 [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_random_operations_1 [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_random_operations_2 [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_random_operations_3 [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_sync_committee_committee [P OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_sync_committee_committee_ge OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - half_sync_committee_committee [P OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - half_sync_committee_committee_ge OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - high_proposer_index [Preset: mai OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - historical_batch [Preset: mainne OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - inactivity_scores_full_participa OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - inactivity_scores_leaking [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - multiple_attester_slashings_no_o OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - multiple_attester_slashings_part OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - multiple_different_proposer_slas OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - multiple_different_validator_exi OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - proposer_after_inactive_index [P OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - proposer_self_slashing [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - proposer_slashing [Preset: mainn OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - skipped_slots [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - slash_and_exit_diff_index [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_no_updates_at_genesis [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_rule_1 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_rule_2 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_rule_3 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_rule_4 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_0 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_1 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_10 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_11 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_12 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_13 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_14 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_15 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_2 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_3 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_4 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_5 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_6 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_7 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_8 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_9 [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - attestation [Preset: mainnet] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - attester_slashing [Preset: mai OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - balance_driven_status_transiti OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - deposit_in_block [Preset: main OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - deposit_top_up [Preset: mainne OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - empty_block_transition [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - empty_epoch_transition [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - full_random_operations_0 [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - full_random_operations_1 [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - full_random_operations_2 [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - full_random_operations_3 [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - high_proposer_index [Preset: m OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - historical_batch [Preset: main OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - multiple_attester_slashings_no OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - multiple_attester_slashings_pa OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - multiple_different_proposer_sl OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - multiple_different_validator_e OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - proposer_after_inactive_index OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - proposer_self_slashing [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - proposer_slashing [Preset: mai OK
|
||||
+ [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
|
||||
+ altair_fork_random_3 OK
|
||||
+ altair_fork_random_duplicate_attestations OK
|
||||
+ altair_fork_random_low_balances OK
|
||||
+ altair_fork_random_misc_balances OK
|
||||
+ altair_fork_random_mismatched_attestations OK
|
||||
+ finality_root_merkle_proof OK
|
||||
+ fork_base_state OK
|
||||
+ fork_many_next_epoch OK
|
||||
+ fork_next_epoch OK
|
||||
+ fork_next_epoch_with_block OK
|
||||
+ fork_random_low_balances OK
|
||||
+ fork_random_misc_balances OK
|
||||
+ next_sync_committee_merkle_proof OK
|
||||
```
|
||||
OK: 404/404 Fail: 0/404 Skip: 0/404
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Effective balance updates [Preset: mainnet]
|
||||
```diff
|
||||
+ Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Eth1 data reset [Preset: mainnet]
|
||||
```diff
|
||||
+ Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK
|
||||
+ Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Historical roots update [Preset: mainnet]
|
||||
```diff
|
||||
+ Historical roots update - historical_root_accumulator [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Inactivity [Preset: mainnet]
|
||||
```diff
|
||||
+ Inactivity - all_zero_inactivity_scores_empty_participation [Preset: mainnet] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_empty_participation_leaking [Preset: mainnet] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_full_participation [Preset: mainnet] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_full_participation_leaking [Preset: mainnet] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_random_participation [Preset: mainnet] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_random_participation_leaking [Preset: mainnet] OK
|
||||
+ Inactivity - genesis [Preset: mainnet] OK
|
||||
+ Inactivity - genesis_random_scores [Preset: mainnet] OK
|
||||
+ Inactivity - random_inactivity_scores_empty_participation [Preset: mainnet] OK
|
||||
+ Inactivity - random_inactivity_scores_empty_participation_leaking [Preset: mainnet] OK
|
||||
+ Inactivity - random_inactivity_scores_full_participation [Preset: mainnet] OK
|
||||
+ Inactivity - random_inactivity_scores_full_participation_leaking [Preset: mainnet] OK
|
||||
+ Inactivity - random_inactivity_scores_random_participation [Preset: mainnet] OK
|
||||
+ Inactivity - random_inactivity_scores_random_participation_leaking [Preset: mainnet] OK
|
||||
+ Inactivity - some_exited_full_random_leaking [Preset: mainnet] OK
|
||||
+ Inactivity - some_slashed_full_random [Preset: mainnet] OK
|
||||
+ Inactivity - some_slashed_full_random_leaking [Preset: mainnet] OK
|
||||
+ Inactivity - some_slashed_zero_scores_full_participation [Preset: mainnet] OK
|
||||
+ Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: mainnet] OK
|
||||
```
|
||||
OK: 19/19 Fail: 0/19 Skip: 0/19
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Justification & Finalization [Preset: mainnet]
|
||||
```diff
|
||||
+ Justification & Finalization - 123_ok_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 123_poor_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 12_ok_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 12_ok_support_messed_target [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 12_poor_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 234_ok_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 234_poor_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 23_ok_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 23_poor_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK
|
||||
```
|
||||
OK: 10/10 Fail: 0/10 Skip: 0/10
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Participation flag updates [Preset: mainnet]
|
||||
```diff
|
||||
+ Participation flag updates - all_zeroed [Preset: mainnet] OK
|
||||
+ Participation flag updates - current_epoch_zeroed [Preset: mainnet] OK
|
||||
+ Participation flag updates - current_filled [Preset: mainnet] OK
|
||||
+ Participation flag updates - filled [Preset: mainnet] OK
|
||||
+ Participation flag updates - previous_epoch_zeroed [Preset: mainnet] OK
|
||||
+ Participation flag updates - previous_filled [Preset: mainnet] OK
|
||||
+ Participation flag updates - random_0 [Preset: mainnet] OK
|
||||
+ Participation flag updates - random_1 [Preset: mainnet] OK
|
||||
+ Participation flag updates - random_2 [Preset: mainnet] OK
|
||||
+ Participation flag updates - random_genesis [Preset: mainnet] OK
|
||||
```
|
||||
OK: 10/10 Fail: 0/10 Skip: 0/10
|
||||
## Ethereum Foundation - Altair - Epoch Processing - RANDAO mixes reset [Preset: mainnet]
|
||||
```diff
|
||||
+ RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Registry updates [Preset: mainnet]
|
||||
```diff
|
||||
+ Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__churn_limit [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__exceed_churn_limit [Preset: m OK
|
||||
+ Registry updates - activation_queue_efficiency_min [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_no_activation_no_finality [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_sorting [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_to_activated_if_finalized [Preset: mainnet] OK
|
||||
+ Registry updates - add_to_activation_queue [Preset: mainnet] OK
|
||||
+ Registry updates - ejection [Preset: mainnet] OK
|
||||
+ Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK
|
||||
```
|
||||
OK: 10/10 Fail: 0/10 Skip: 0/10
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Slashings [Preset: mainnet]
|
||||
```diff
|
||||
+ Slashings - low_penalty [Preset: mainnet] OK
|
||||
+ Slashings - max_penalties [Preset: mainnet] OK
|
||||
+ Slashings - minimal_penalty [Preset: mainnet] OK
|
||||
+ Slashings - scaled_penalties [Preset: mainnet] OK
|
||||
+ Slashings - slashings_with_random_state [Preset: mainnet] OK
|
||||
```
|
||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Slashings reset [Preset: mainnet]
|
||||
```diff
|
||||
+ Slashings reset - flush_slashings [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Altair - SSZ consensus objects [Preset: mainnet]
|
||||
```diff
|
||||
+ Testing AggregateAndProof OK
|
||||
+ Testing Attestation OK
|
||||
+ Testing AttestationData OK
|
||||
+ Testing AttesterSlashing OK
|
||||
+ Testing BeaconBlock OK
|
||||
+ Testing BeaconBlockBody OK
|
||||
+ Testing BeaconBlockHeader OK
|
||||
+ Testing BeaconState OK
|
||||
+ Testing Checkpoint OK
|
||||
+ Testing ContributionAndProof OK
|
||||
+ Testing Deposit OK
|
||||
+ Testing DepositData OK
|
||||
+ Testing DepositMessage OK
|
||||
+ Testing Eth1Block OK
|
||||
+ Testing Eth1Data OK
|
||||
+ Testing Fork OK
|
||||
+ Testing ForkData OK
|
||||
+ Testing HistoricalBatch OK
|
||||
+ Testing IndexedAttestation OK
|
||||
+ Testing LightClientSnapshot OK
|
||||
+ Testing LightClientUpdate OK
|
||||
+ Testing PendingAttestation OK
|
||||
+ Testing ProposerSlashing OK
|
||||
+ Testing SignedAggregateAndProof OK
|
||||
+ Testing SignedBeaconBlock OK
|
||||
+ Testing SignedBeaconBlockHeader OK
|
||||
+ Testing SignedContributionAndProof OK
|
||||
+ Testing SignedVoluntaryExit OK
|
||||
+ Testing SigningData OK
|
||||
+ Testing SyncAggregate OK
|
||||
+ Testing SyncAggregatorSelectionData OK
|
||||
+ Testing SyncCommittee OK
|
||||
+ Testing SyncCommitteeContribution OK
|
||||
+ Testing SyncCommitteeMessage OK
|
||||
+ Testing Validator OK
|
||||
+ Testing VoluntaryExit OK
|
||||
```
|
||||
OK: 36/36 Fail: 0/36 Skip: 0/36
|
||||
## Ethereum Foundation - Altair - Unittests - Sync protocol [Preset: mainnet]
|
||||
```diff
|
||||
+ process_light_client_update_finality_updated OK
|
||||
+ process_light_client_update_not_updated OK
|
||||
+ process_light_client_update_timeout OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## Ethereum Foundation - Merge - SSZ consensus objects [Preset: mainnet]
|
||||
```diff
|
||||
+ Testing AggregateAndProof OK
|
||||
+ Testing Attestation OK
|
||||
+ Testing AttestationData OK
|
||||
+ Testing AttesterSlashing OK
|
||||
+ Testing BeaconBlock OK
|
||||
+ Testing BeaconBlockBody OK
|
||||
+ Testing BeaconBlockHeader OK
|
||||
+ Testing BeaconState OK
|
||||
+ Testing Checkpoint OK
|
||||
+ Testing ContributionAndProof OK
|
||||
+ Testing Deposit OK
|
||||
+ Testing DepositData OK
|
||||
+ Testing DepositMessage OK
|
||||
+ Testing Eth1Block OK
|
||||
+ Testing Eth1Data OK
|
||||
+ Testing ExecutionPayload OK
|
||||
+ Testing ExecutionPayloadHeader OK
|
||||
+ Testing Fork OK
|
||||
+ Testing ForkData OK
|
||||
+ Testing HistoricalBatch OK
|
||||
+ Testing IndexedAttestation OK
|
||||
+ Testing LightClientSnapshot OK
|
||||
+ Testing LightClientUpdate OK
|
||||
+ Testing PendingAttestation OK
|
||||
+ Testing PowBlock OK
|
||||
+ Testing ProposerSlashing OK
|
||||
+ Testing SignedAggregateAndProof OK
|
||||
+ Testing SignedBeaconBlock OK
|
||||
+ Testing SignedBeaconBlockHeader OK
|
||||
+ Testing SignedContributionAndProof OK
|
||||
+ Testing SignedVoluntaryExit OK
|
||||
+ Testing SigningData OK
|
||||
+ Testing SyncAggregate OK
|
||||
+ Testing SyncAggregatorSelectionData OK
|
||||
+ Testing SyncCommittee OK
|
||||
+ Testing SyncCommitteeContribution OK
|
||||
+ Testing SyncCommitteeMessage OK
|
||||
+ Testing Validator OK
|
||||
+ Testing VoluntaryExit OK
|
||||
```
|
||||
OK: 39/39 Fail: 0/39 Skip: 0/39
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Effective balance updates [Preset: mainnet]
|
||||
```diff
|
||||
+ Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Eth1 data reset [Preset: mainnet]
|
||||
```diff
|
||||
+ Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK
|
||||
+ Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Historical roots update [Preset: mainnet]
|
||||
```diff
|
||||
+ Historical roots update - historical_root_accumulator [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Justification & Finalization [Preset: mainnet]
|
||||
```diff
|
||||
+ Justification & Finalization - 123_ok_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 123_poor_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 12_ok_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 12_ok_support_messed_target [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 12_poor_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 234_ok_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 234_poor_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 23_ok_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - 23_poor_support [Preset: mainnet] OK
|
||||
+ Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK
|
||||
```
|
||||
OK: 10/10 Fail: 0/10 Skip: 0/10
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Participation record updates [Preset: mainnet]
|
||||
```diff
|
||||
+ Participation record updates - updated_participation_record [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - RANDAO mixes reset [Preset: mainnet]
|
||||
```diff
|
||||
+ RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Registry updates [Preset: mainnet]
|
||||
```diff
|
||||
+ Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__churn_limit [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__exceed_churn_limit [Preset: m OK
|
||||
+ Registry updates - activation_queue_efficiency_min [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_no_activation_no_finality [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_sorting [Preset: mainnet] OK
|
||||
+ Registry updates - activation_queue_to_activated_if_finalized [Preset: mainnet] OK
|
||||
+ Registry updates - add_to_activation_queue [Preset: mainnet] OK
|
||||
+ Registry updates - ejection [Preset: mainnet] OK
|
||||
+ Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK
|
||||
```
|
||||
OK: 10/10 Fail: 0/10 Skip: 0/10
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Slashings [Preset: mainnet]
|
||||
```diff
|
||||
+ Slashings - low_penalty [Preset: mainnet] OK
|
||||
+ Slashings - max_penalties [Preset: mainnet] OK
|
||||
+ Slashings - minimal_penalty [Preset: mainnet] OK
|
||||
+ Slashings - scaled_penalties [Preset: mainnet] OK
|
||||
+ Slashings - slashings_with_random_state [Preset: mainnet] OK
|
||||
```
|
||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Slashings reset [Preset: mainnet]
|
||||
```diff
|
||||
+ Slashings reset - flush_slashings [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - SSZ consensus objects [Preset: mainnet]
|
||||
```diff
|
||||
+ Testing AggregateAndProof OK
|
||||
+ Testing Attestation OK
|
||||
+ Testing AttestationData OK
|
||||
+ Testing AttesterSlashing OK
|
||||
+ Testing BeaconBlock OK
|
||||
+ Testing BeaconBlockBody OK
|
||||
+ Testing BeaconBlockHeader OK
|
||||
+ Testing BeaconState OK
|
||||
+ Testing Checkpoint OK
|
||||
+ Testing Deposit OK
|
||||
+ Testing DepositData OK
|
||||
+ Testing DepositMessage OK
|
||||
+ Testing Eth1Block OK
|
||||
+ Testing Eth1Data OK
|
||||
+ Testing Fork OK
|
||||
+ Testing ForkData OK
|
||||
+ Testing HistoricalBatch OK
|
||||
+ Testing IndexedAttestation OK
|
||||
+ Testing PendingAttestation OK
|
||||
+ Testing ProposerSlashing OK
|
||||
+ Testing SignedAggregateAndProof OK
|
||||
+ Testing SignedBeaconBlock OK
|
||||
+ Testing SignedBeaconBlockHeader OK
|
||||
+ Testing SignedVoluntaryExit OK
|
||||
+ Testing SigningData OK
|
||||
+ Testing Validator OK
|
||||
+ Testing VoluntaryExit OK
|
||||
```
|
||||
OK: 27/27 Fail: 0/27 Skip: 0/27
|
||||
|
||||
---TOTAL---
|
||||
OK: 601/601 Fail: 0/601 Skip: 0/601
|
|
@ -1,717 +0,0 @@
|
|||
FixtureSSZConsensus-minimal
|
||||
===
|
||||
##
|
||||
```diff
|
||||
+ Rewards - all_balances_too_low_for_reward [Preset: minimal] OK
|
||||
+ Rewards - duplicate_attestations_at_later_slots [Preset: minimal] OK
|
||||
+ Rewards - empty [Preset: minimal] OK
|
||||
+ Rewards - empty_leak [Preset: minimal] OK
|
||||
+ Rewards - full_all_correct [Preset: minimal] OK
|
||||
+ Rewards - full_but_partial_participation [Preset: minimal] OK
|
||||
+ Rewards - full_but_partial_participation_leak [Preset: minimal] OK
|
||||
+ Rewards - full_correct_target_incorrect_head [Preset: minimal] OK
|
||||
+ Rewards - full_correct_target_incorrect_head_leak [Preset: minimal] OK
|
||||
+ Rewards - full_delay_max_slots [Preset: minimal] OK
|
||||
+ Rewards - full_delay_one_slot [Preset: minimal] OK
|
||||
+ Rewards - full_half_correct_target_incorrect_head [Preset: minimal] OK
|
||||
+ Rewards - full_half_correct_target_incorrect_head_leak [Preset: minimal] OK
|
||||
+ Rewards - full_half_incorrect_target_correct_head [Preset: minimal] OK
|
||||
+ Rewards - full_half_incorrect_target_correct_head_leak [Preset: minimal] OK
|
||||
+ Rewards - full_half_incorrect_target_incorrect_head [Preset: minimal] OK
|
||||
+ Rewards - full_half_incorrect_target_incorrect_head_leak [Preset: minimal] OK
|
||||
+ Rewards - full_leak [Preset: minimal] OK
|
||||
+ Rewards - full_mixed_delay [Preset: minimal] OK
|
||||
+ Rewards - full_random_0 [Preset: minimal] OK
|
||||
+ Rewards - full_random_1 [Preset: minimal] OK
|
||||
+ Rewards - full_random_2 [Preset: minimal] OK
|
||||
+ Rewards - full_random_3 [Preset: minimal] OK
|
||||
+ Rewards - full_random_4 [Preset: minimal] OK
|
||||
+ Rewards - full_random_leak [Preset: minimal] OK
|
||||
+ Rewards - full_random_low_balances_0 [Preset: minimal] OK
|
||||
+ Rewards - full_random_low_balances_1 [Preset: minimal] OK
|
||||
+ Rewards - full_random_misc_balances [Preset: minimal] OK
|
||||
+ Rewards - full_random_seven_epoch_leak [Preset: minimal] OK
|
||||
+ Rewards - full_random_ten_epoch_leak [Preset: minimal] OK
|
||||
+ Rewards - full_random_without_leak_0 [Preset: minimal] OK
|
||||
+ Rewards - full_random_without_leak_and_current_exit_0 [Preset: minimal] OK
|
||||
+ Rewards - half_full [Preset: minimal] OK
|
||||
+ Rewards - half_full_leak [Preset: minimal] OK
|
||||
+ Rewards - one_attestation_one_correct [Preset: minimal] OK
|
||||
+ Rewards - one_attestation_one_correct_leak [Preset: minimal] OK
|
||||
+ Rewards - proposer_not_in_attestations [Preset: minimal] OK
|
||||
+ Rewards - quarter_full [Preset: minimal] OK
|
||||
+ Rewards - quarter_full_leak [Preset: minimal] OK
|
||||
+ Rewards - some_very_low_effective_balances_that_attested [Preset: minimal] OK
|
||||
+ Rewards - some_very_low_effective_balances_that_attested_leak [Preset: minimal] OK
|
||||
+ Rewards - some_very_low_effective_balances_that_did_not_attest [Preset: minimal] OK
|
||||
+ Rewards - some_very_low_effective_balances_that_did_not_attest_leak [Preset: minimal] OK
|
||||
+ Rewards - with_exited_validators [Preset: minimal] OK
|
||||
+ Rewards - with_exited_validators_leak [Preset: minimal] OK
|
||||
+ Rewards - with_not_yet_activated_validators [Preset: minimal] OK
|
||||
+ Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
||||
+ Rewards - with_slashed_validators [Preset: minimal] OK
|
||||
+ Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
||||
+ Slots - double_empty_epoch OK
|
||||
+ Slots - empty_epoch OK
|
||||
+ 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
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - duplicate_attester_slashing [Pr OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - expected_deposit_in_block [Pres OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - invalid_block_sig [Preset: mini OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - invalid_proposer_index_sig_from OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - invalid_proposer_index_sig_from OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - invalid_state_root [Preset: min OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - parent_from_same_slot [Preset: OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - prev_slot_block_transition [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - same_slot_block_transition [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - slash_and_exit_same_index [Pres OK
|
||||
+ [Invalid] Ethereum Foundation - Altair - Sanity - Blocks - zero_block_sig [Preset: minimal OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - double_same_proposer_slashings_s OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - double_similar_proposer_slashing OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - double_validator_exit_same_block OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - duplicate_attester_slashing [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - expected_deposit_in_block [Prese OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - invalid_block_sig [Preset: minim OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - invalid_proposer_index_sig_from_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - invalid_proposer_index_sig_from_ OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - invalid_state_root [Preset: mini OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - parent_from_same_slot [Preset: m OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - prev_slot_block_transition [Pres OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - same_slot_block_transition [Pres OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - slash_and_exit_same_index [Prese OK
|
||||
+ [Invalid] Ethereum Foundation - Merge - Sanity - Blocks - zero_block_sig [Preset: minimal] OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - double_same_proposer_slashings OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - double_similar_proposer_slashi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - double_validator_exit_same_blo OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - duplicate_attester_slashing [P OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - expected_deposit_in_block [Pre OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - invalid_block_sig [Preset: min OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - invalid_proposer_index_sig_fro OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - invalid_proposer_index_sig_fro OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - invalid_state_root [Preset: mi OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - parent_from_same_slot [Preset: OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - prev_slot_block_transition [Pr OK
|
||||
+ [Invalid] Ethereum Foundation - Phase 0 - Sanity - Blocks - proposal_for_genesis_slot [Pre OK
|
||||
+ [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
|
||||
+ [Invalid] bad_number_regular_payload OK
|
||||
+ [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
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_rule_3 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Finality - finality_rule_4 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_0 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_1 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_10 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_11 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_12 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_13 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_14 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_15 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_2 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_3 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_4 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_5 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_6 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_7 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_8 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Random - randomized_9 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - attestation [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - attester_slashing [Preset: mini OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - balance_driven_status_transitio OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - deposit_in_block [Preset: minim OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - deposit_top_up [Preset: minimal OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_block_transition [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_block_transition_large_va OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_epoch_transition [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_epoch_transition_large_va OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_epoch_transition_not_fina OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_sync_committee_committee OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - empty_sync_committee_committee_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - eth1_data_votes_consensus [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - eth1_data_votes_no_consensus [P OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_random_operations_0 [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_random_operations_1 [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_random_operations_2 [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_random_operations_3 [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_sync_committee_committee [ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - full_sync_committee_committee_g OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - half_sync_committee_committee [ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - half_sync_committee_committee_g OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - high_proposer_index [Preset: mi OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - historical_batch [Preset: minim OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - inactivity_scores_full_particip OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - inactivity_scores_leaking [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - multiple_attester_slashings_no_ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - multiple_attester_slashings_par OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - multiple_different_proposer_sla OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - multiple_different_validator_ex OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - proposer_after_inactive_index [ OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - proposer_self_slashing [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - proposer_slashing [Preset: mini OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - skipped_slots [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - slash_and_exit_diff_index [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Altair - Sanity - Blocks - voluntary_exit [Preset: minimal OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_no_updates_at_genesis [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_rule_1 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_rule_2 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_rule_3 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Finality - finality_rule_4 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - attestation [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - attester_slashing [Preset: minim OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - balance_driven_status_transition OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - deposit_in_block [Preset: minima OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - deposit_top_up [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_block_transition [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_block_transition_large_val OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_block_transition_no_tx [Pr OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_epoch_transition [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_epoch_transition_large_val OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_epoch_transition_not_final OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_sync_committee_committee [ OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - empty_sync_committee_committee_g OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - eth1_data_votes_consensus [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - eth1_data_votes_no_consensus [Pr OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_random_operations_0 [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_random_operations_1 [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_random_operations_2 [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_random_operations_3 [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_sync_committee_committee [P OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - full_sync_committee_committee_ge OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - half_sync_committee_committee [P OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - half_sync_committee_committee_ge OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - high_proposer_index [Preset: min OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - historical_batch [Preset: minima OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - inactivity_scores_full_participa OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - inactivity_scores_leaking [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - multiple_attester_slashings_no_o OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - multiple_attester_slashings_part OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - multiple_different_proposer_slas OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - multiple_different_validator_exi OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - proposer_after_inactive_index [P OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - proposer_self_slashing [Preset: OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - proposer_slashing [Preset: minim OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - skipped_slots [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - slash_and_exit_diff_index [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Merge - Sanity - Blocks - voluntary_exit [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_no_updates_at_genesis [Prese OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_rule_1 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_rule_2 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_rule_3 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Finality - finality_rule_4 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_0 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_1 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_10 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_11 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_12 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_13 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_14 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_15 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_2 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_3 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_4 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_5 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_6 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_7 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_8 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Random - randomized_9 [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - attestation [Preset: minimal] OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - attester_slashing [Preset: min OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - balance_driven_status_transiti OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - deposit_in_block [Preset: mini OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - deposit_top_up [Preset: minima OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - empty_block_transition [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - empty_block_transition_large_v OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - empty_epoch_transition [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - empty_epoch_transition_large_v OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - empty_epoch_transition_not_fin OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - eth1_data_votes_consensus [Pre OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - eth1_data_votes_no_consensus [ OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - full_random_operations_0 [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - full_random_operations_1 [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - full_random_operations_2 [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - full_random_operations_3 [Pres OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - high_proposer_index [Preset: m OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - historical_batch [Preset: mini OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - multiple_attester_slashings_no OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - multiple_attester_slashings_pa OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - multiple_different_proposer_sl OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - multiple_different_validator_e OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - proposer_after_inactive_index OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - proposer_self_slashing [Preset OK
|
||||
+ [Valid] Ethereum Foundation - Phase 0 - Sanity - Blocks - proposer_slashing [Preset: min OK
|
||||
+ [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: 400/400 Fail: 0/400 Skip: 0/400
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Effective balance updates [Preset: minimal]
|
||||
```diff
|
||||
+ Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Eth1 data reset [Preset: minimal]
|
||||
```diff
|
||||
+ Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK
|
||||
+ Eth1 data reset - eth1_vote_reset [Preset: minimal] OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Historical roots update [Preset: minimal]
|
||||
```diff
|
||||
+ Historical roots update - historical_root_accumulator [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Inactivity [Preset: minimal]
|
||||
```diff
|
||||
+ Inactivity - all_zero_inactivity_scores_empty_participation [Preset: minimal] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_empty_participation_leaking [Preset: minimal] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_full_participation [Preset: minimal] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_full_participation_leaking [Preset: minimal] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_random_participation [Preset: minimal] OK
|
||||
+ Inactivity - all_zero_inactivity_scores_random_participation_leaking [Preset: minimal] OK
|
||||
+ Inactivity - genesis [Preset: minimal] OK
|
||||
+ Inactivity - genesis_random_scores [Preset: minimal] OK
|
||||
+ Inactivity - random_inactivity_scores_empty_participation [Preset: minimal] OK
|
||||
+ Inactivity - random_inactivity_scores_empty_participation_leaking [Preset: minimal] OK
|
||||
+ Inactivity - random_inactivity_scores_full_participation [Preset: minimal] OK
|
||||
+ Inactivity - random_inactivity_scores_full_participation_leaking [Preset: minimal] OK
|
||||
+ Inactivity - random_inactivity_scores_random_participation [Preset: minimal] OK
|
||||
+ Inactivity - random_inactivity_scores_random_participation_leaking [Preset: minimal] OK
|
||||
+ Inactivity - some_exited_full_random_leaking [Preset: minimal] OK
|
||||
+ Inactivity - some_slashed_full_random [Preset: minimal] OK
|
||||
+ Inactivity - some_slashed_full_random_leaking [Preset: minimal] OK
|
||||
+ Inactivity - some_slashed_zero_scores_full_participation [Preset: minimal] OK
|
||||
+ Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: minimal] OK
|
||||
```
|
||||
OK: 19/19 Fail: 0/19 Skip: 0/19
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Justification & Finalization [Preset: minimal]
|
||||
```diff
|
||||
+ Justification & Finalization - 123_ok_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 123_poor_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 12_ok_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 12_ok_support_messed_target [Preset: minimal] OK
|
||||
+ Justification & Finalization - 12_poor_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 234_ok_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 234_poor_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 23_ok_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 23_poor_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK
|
||||
```
|
||||
OK: 10/10 Fail: 0/10 Skip: 0/10
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Participation flag updates [Preset: minimal]
|
||||
```diff
|
||||
+ Participation flag updates - all_zeroed [Preset: minimal] OK
|
||||
+ Participation flag updates - current_epoch_zeroed [Preset: minimal] OK
|
||||
+ Participation flag updates - current_filled [Preset: minimal] OK
|
||||
+ Participation flag updates - filled [Preset: minimal] OK
|
||||
+ Participation flag updates - large_random [Preset: minimal] OK
|
||||
+ Participation flag updates - previous_epoch_zeroed [Preset: minimal] OK
|
||||
+ Participation flag updates - previous_filled [Preset: minimal] OK
|
||||
+ Participation flag updates - random_0 [Preset: minimal] OK
|
||||
+ Participation flag updates - random_1 [Preset: minimal] OK
|
||||
+ Participation flag updates - random_2 [Preset: minimal] OK
|
||||
+ Participation flag updates - random_genesis [Preset: minimal] OK
|
||||
+ Participation flag updates - slightly_larger_random [Preset: minimal] OK
|
||||
```
|
||||
OK: 12/12 Fail: 0/12 Skip: 0/12
|
||||
## Ethereum Foundation - Altair - Epoch Processing - RANDAO mixes reset [Preset: minimal]
|
||||
```diff
|
||||
+ RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Registry updates [Preset: minimal]
|
||||
```diff
|
||||
+ Registry updates - activation_queue_activation_and_ejection__1 [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__churn_limit [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__exceed_churn_limit [Preset: m OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__exceed_scaled_churn_limit [Pr OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__scaled_churn_limit [Preset: m OK
|
||||
+ Registry updates - activation_queue_efficiency_min [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_efficiency_scaled [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_no_activation_no_finality [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_sorting [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_to_activated_if_finalized [Preset: minimal] OK
|
||||
+ Registry updates - add_to_activation_queue [Preset: minimal] OK
|
||||
+ Registry updates - ejection [Preset: minimal] OK
|
||||
+ Registry updates - ejection_past_churn_limit_min [Preset: minimal] OK
|
||||
+ Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK
|
||||
```
|
||||
OK: 14/14 Fail: 0/14 Skip: 0/14
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Slashings [Preset: minimal]
|
||||
```diff
|
||||
+ Slashings - low_penalty [Preset: minimal] OK
|
||||
+ Slashings - max_penalties [Preset: minimal] OK
|
||||
+ Slashings - minimal_penalty [Preset: minimal] OK
|
||||
+ Slashings - scaled_penalties [Preset: minimal] OK
|
||||
+ Slashings - slashings_with_random_state [Preset: minimal] OK
|
||||
```
|
||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Slashings reset [Preset: minimal]
|
||||
```diff
|
||||
+ Slashings reset - flush_slashings [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Altair - Epoch Processing - Sync committee updates [Preset: minimal]
|
||||
```diff
|
||||
+ Sync committee updates - sync_committees_no_progress_not_boundary [Preset: minimal] OK
|
||||
+ Sync committee updates - sync_committees_progress_genesis [Preset: minimal] OK
|
||||
+ Sync committee updates - sync_committees_progress_misc_balances_genesis [Preset: minimal] OK
|
||||
+ Sync committee updates - sync_committees_progress_misc_balances_not_genesis [Preset: minim OK
|
||||
+ Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK
|
||||
```
|
||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||
## Ethereum Foundation - Altair - SSZ consensus objects [Preset: minimal]
|
||||
```diff
|
||||
+ Testing AggregateAndProof OK
|
||||
+ Testing Attestation OK
|
||||
+ Testing AttestationData OK
|
||||
+ Testing AttesterSlashing OK
|
||||
+ Testing BeaconBlock OK
|
||||
+ Testing BeaconBlockBody OK
|
||||
+ Testing BeaconBlockHeader OK
|
||||
+ Testing BeaconState OK
|
||||
+ Testing Checkpoint OK
|
||||
+ Testing ContributionAndProof OK
|
||||
+ Testing Deposit OK
|
||||
+ Testing DepositData OK
|
||||
+ Testing DepositMessage OK
|
||||
+ Testing Eth1Block OK
|
||||
+ Testing Eth1Data OK
|
||||
+ Testing Fork OK
|
||||
+ Testing ForkData OK
|
||||
+ Testing HistoricalBatch OK
|
||||
+ Testing IndexedAttestation OK
|
||||
+ Testing LightClientSnapshot OK
|
||||
+ Testing LightClientUpdate OK
|
||||
+ Testing PendingAttestation OK
|
||||
+ Testing ProposerSlashing OK
|
||||
+ Testing SignedAggregateAndProof OK
|
||||
+ Testing SignedBeaconBlock OK
|
||||
+ Testing SignedBeaconBlockHeader OK
|
||||
+ Testing SignedContributionAndProof OK
|
||||
+ Testing SignedVoluntaryExit OK
|
||||
+ Testing SigningData OK
|
||||
+ Testing SyncAggregate OK
|
||||
+ Testing SyncAggregatorSelectionData OK
|
||||
+ Testing SyncCommittee OK
|
||||
+ Testing SyncCommitteeContribution OK
|
||||
+ Testing SyncCommitteeMessage OK
|
||||
+ Testing Validator OK
|
||||
+ Testing VoluntaryExit OK
|
||||
```
|
||||
OK: 36/36 Fail: 0/36 Skip: 0/36
|
||||
## Ethereum Foundation - Altair - Unittests - Sync protocol [Preset: minimal]
|
||||
```diff
|
||||
+ process_light_client_update_finality_updated OK
|
||||
+ process_light_client_update_not_updated OK
|
||||
+ process_light_client_update_timeout OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## Ethereum Foundation - Merge - SSZ consensus objects [Preset: minimal]
|
||||
```diff
|
||||
+ Testing AggregateAndProof OK
|
||||
+ Testing Attestation OK
|
||||
+ Testing AttestationData OK
|
||||
+ Testing AttesterSlashing OK
|
||||
+ Testing BeaconBlock OK
|
||||
+ Testing BeaconBlockBody OK
|
||||
+ Testing BeaconBlockHeader OK
|
||||
+ Testing BeaconState OK
|
||||
+ Testing Checkpoint OK
|
||||
+ Testing ContributionAndProof OK
|
||||
+ Testing Deposit OK
|
||||
+ Testing DepositData OK
|
||||
+ Testing DepositMessage OK
|
||||
+ Testing Eth1Block OK
|
||||
+ Testing Eth1Data OK
|
||||
+ Testing ExecutionPayload OK
|
||||
+ Testing ExecutionPayloadHeader OK
|
||||
+ Testing Fork OK
|
||||
+ Testing ForkData OK
|
||||
+ Testing HistoricalBatch OK
|
||||
+ Testing IndexedAttestation OK
|
||||
+ Testing LightClientSnapshot OK
|
||||
+ Testing LightClientUpdate OK
|
||||
+ Testing PendingAttestation OK
|
||||
+ Testing PowBlock OK
|
||||
+ Testing ProposerSlashing OK
|
||||
+ Testing SignedAggregateAndProof OK
|
||||
+ Testing SignedBeaconBlock OK
|
||||
+ Testing SignedBeaconBlockHeader OK
|
||||
+ Testing SignedContributionAndProof OK
|
||||
+ Testing SignedVoluntaryExit OK
|
||||
+ Testing SigningData OK
|
||||
+ Testing SyncAggregate OK
|
||||
+ Testing SyncAggregatorSelectionData OK
|
||||
+ Testing SyncCommittee OK
|
||||
+ Testing SyncCommitteeContribution OK
|
||||
+ Testing SyncCommitteeMessage OK
|
||||
+ Testing Validator OK
|
||||
+ Testing VoluntaryExit OK
|
||||
```
|
||||
OK: 39/39 Fail: 0/39 Skip: 0/39
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Effective balance updates [Preset: minimal]
|
||||
```diff
|
||||
+ Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Eth1 data reset [Preset: minimal]
|
||||
```diff
|
||||
+ Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK
|
||||
+ Eth1 data reset - eth1_vote_reset [Preset: minimal] OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Historical roots update [Preset: minimal]
|
||||
```diff
|
||||
+ Historical roots update - historical_root_accumulator [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Justification & Finalization [Preset: minimal]
|
||||
```diff
|
||||
+ Justification & Finalization - 123_ok_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 123_poor_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 12_ok_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 12_ok_support_messed_target [Preset: minimal] OK
|
||||
+ Justification & Finalization - 12_poor_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 234_ok_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 234_poor_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 23_ok_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - 23_poor_support [Preset: minimal] OK
|
||||
+ Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK
|
||||
```
|
||||
OK: 10/10 Fail: 0/10 Skip: 0/10
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Participation record updates [Preset: minimal]
|
||||
```diff
|
||||
+ Participation record updates - updated_participation_record [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - RANDAO mixes reset [Preset: minimal]
|
||||
```diff
|
||||
+ RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Registry updates [Preset: minimal]
|
||||
```diff
|
||||
+ Registry updates - activation_queue_activation_and_ejection__1 [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__churn_limit [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__exceed_churn_limit [Preset: m OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__exceed_scaled_churn_limit [Pr OK
|
||||
+ Registry updates - activation_queue_activation_and_ejection__scaled_churn_limit [Preset: m OK
|
||||
+ Registry updates - activation_queue_efficiency_min [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_efficiency_scaled [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_no_activation_no_finality [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_sorting [Preset: minimal] OK
|
||||
+ Registry updates - activation_queue_to_activated_if_finalized [Preset: minimal] OK
|
||||
+ Registry updates - add_to_activation_queue [Preset: minimal] OK
|
||||
+ Registry updates - ejection [Preset: minimal] OK
|
||||
+ Registry updates - ejection_past_churn_limit_min [Preset: minimal] OK
|
||||
+ Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK
|
||||
```
|
||||
OK: 14/14 Fail: 0/14 Skip: 0/14
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Slashings [Preset: minimal]
|
||||
```diff
|
||||
+ Slashings - low_penalty [Preset: minimal] OK
|
||||
+ Slashings - max_penalties [Preset: minimal] OK
|
||||
+ Slashings - minimal_penalty [Preset: minimal] OK
|
||||
+ Slashings - scaled_penalties [Preset: minimal] OK
|
||||
+ Slashings - slashings_with_random_state [Preset: minimal] OK
|
||||
```
|
||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||
## Ethereum Foundation - Phase 0 - Epoch Processing - Slashings reset [Preset: minimal]
|
||||
```diff
|
||||
+ Slashings reset - flush_slashings [Preset: minimal] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Ethereum Foundation - Phase 0 - SSZ consensus objects [Preset: minimal]
|
||||
```diff
|
||||
+ Testing AggregateAndProof OK
|
||||
+ Testing Attestation OK
|
||||
+ Testing AttestationData OK
|
||||
+ Testing AttesterSlashing OK
|
||||
+ Testing BeaconBlock OK
|
||||
+ Testing BeaconBlockBody OK
|
||||
+ Testing BeaconBlockHeader OK
|
||||
+ Testing BeaconState OK
|
||||
+ Testing Checkpoint OK
|
||||
+ Testing Deposit OK
|
||||
+ Testing DepositData OK
|
||||
+ Testing DepositMessage OK
|
||||
+ Testing Eth1Block OK
|
||||
+ Testing Eth1Data OK
|
||||
+ Testing Fork OK
|
||||
+ Testing ForkData OK
|
||||
+ Testing HistoricalBatch OK
|
||||
+ Testing IndexedAttestation OK
|
||||
+ Testing PendingAttestation OK
|
||||
+ Testing ProposerSlashing OK
|
||||
+ Testing SignedAggregateAndProof OK
|
||||
+ Testing SignedBeaconBlock OK
|
||||
+ Testing SignedBeaconBlockHeader OK
|
||||
+ Testing SignedVoluntaryExit OK
|
||||
+ Testing SigningData OK
|
||||
+ Testing Validator OK
|
||||
+ Testing VoluntaryExit OK
|
||||
```
|
||||
OK: 27/27 Fail: 0/27 Skip: 0/27
|
||||
|
||||
---TOTAL---
|
||||
OK: 612/612 Fail: 0/612 Skip: 0/612
|
|
@ -1,5 +1,96 @@
|
|||
FixtureSSZGeneric-mainnet
|
||||
===
|
||||
## Attestation pool processing [Preset: mainnet]
|
||||
```diff
|
||||
+ Attestations may arrive in any order [Preset: mainnet] OK
|
||||
+ Attestations may overlap, bigger first [Preset: mainnet] OK
|
||||
+ Attestations may overlap, smaller first [Preset: mainnet] OK
|
||||
+ Attestations should be combined [Preset: mainnet] OK
|
||||
+ Can add and retrieve simple attestations [Preset: mainnet] OK
|
||||
+ Everyone voting for something different [Preset: mainnet] OK
|
||||
+ Fork choice returns block with attestation OK
|
||||
+ Fork choice returns latest block with no attestations OK
|
||||
+ Trying to add a block twice tags the second as an error OK
|
||||
+ Trying to add a duplicate block from an old pruned epoch is tagged as an error OK
|
||||
+ Working with aggregates [Preset: mainnet] OK
|
||||
```
|
||||
OK: 11/11 Fail: 0/11 Skip: 0/11
|
||||
## Beacon chain DB [Preset: mainnet]
|
||||
```diff
|
||||
+ empty database [Preset: mainnet] OK
|
||||
+ find ancestors [Preset: mainnet] OK
|
||||
+ sanity check Altair and cross-fork getState rollback [Preset: mainnet] OK
|
||||
+ sanity check Altair blocks [Preset: mainnet] OK
|
||||
+ sanity check Altair states [Preset: mainnet] OK
|
||||
+ sanity check Altair states, reusing buffers [Preset: mainnet] OK
|
||||
+ sanity check Merge and cross-fork getState rollback [Preset: mainnet] OK
|
||||
+ sanity check Merge blocks [Preset: mainnet] OK
|
||||
+ sanity check Merge states [Preset: mainnet] OK
|
||||
+ sanity check Merge states, reusing buffers [Preset: mainnet] OK
|
||||
+ sanity check genesis roundtrip [Preset: mainnet] OK
|
||||
+ sanity check phase 0 blocks [Preset: mainnet] OK
|
||||
+ sanity check phase 0 getState rollback [Preset: mainnet] OK
|
||||
+ sanity check phase 0 states [Preset: mainnet] OK
|
||||
+ sanity check phase 0 states, reusing buffers [Preset: mainnet] OK
|
||||
+ sanity check state diff roundtrip [Preset: mainnet] OK
|
||||
```
|
||||
OK: 16/16 Fail: 0/16 Skip: 0/16
|
||||
## Beacon state [Preset: mainnet]
|
||||
```diff
|
||||
+ Smoke test initialize_beacon_state_from_eth1 [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Bit fields
|
||||
```diff
|
||||
+ isZeros OK
|
||||
+ iterating words OK
|
||||
+ overlaps OK
|
||||
+ roundtrips BitArray OK
|
||||
+ roundtrips BitSeq OK
|
||||
```
|
||||
OK: 5/5 Fail: 0/5 Skip: 0/5
|
||||
## Block pool processing [Preset: mainnet]
|
||||
```diff
|
||||
+ Adding the same block twice returns a Duplicate error [Preset: mainnet] OK
|
||||
+ Reverse order block add & get [Preset: mainnet] OK
|
||||
+ Simple block add&get [Preset: mainnet] OK
|
||||
+ getRef returns nil for missing blocks OK
|
||||
+ loading tail block works [Preset: mainnet] OK
|
||||
+ updateHead updates head and headState [Preset: mainnet] OK
|
||||
+ updateStateData sanity [Preset: mainnet] OK
|
||||
```
|
||||
OK: 7/7 Fail: 0/7 Skip: 0/7
|
||||
## BlockRef and helpers [Preset: mainnet]
|
||||
```diff
|
||||
+ epochAncestor sanity [Preset: mainnet] OK
|
||||
+ get_ancestor sanity [Preset: mainnet] OK
|
||||
+ isAncestorOf sanity [Preset: mainnet] OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## BlockSlot and helpers [Preset: mainnet]
|
||||
```diff
|
||||
+ atSlot sanity [Preset: mainnet] OK
|
||||
+ parent sanity [Preset: mainnet] OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Diverging hardforks
|
||||
```diff
|
||||
+ Non-tail block in common OK
|
||||
+ Tail block only in common OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Eth1 monitor
|
||||
```diff
|
||||
+ Rewrite HTTPS Infura URLs OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Eth2 specific discovery tests
|
||||
```diff
|
||||
+ Invalid attnets field OK
|
||||
+ Subnet query OK
|
||||
+ Subnet query after ENR update OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## Ethereum Foundation - SSZ generic types
|
||||
```diff
|
||||
Testing basic_vector inputs - invalid Skip
|
||||
|
@ -16,6 +107,257 @@ FixtureSSZGeneric-mainnet
|
|||
+ Testing uints inputs - valid OK
|
||||
```
|
||||
OK: 10/12 Fail: 0/12 Skip: 2/12
|
||||
## Exit pool testing suite
|
||||
```diff
|
||||
+ addExitMessage/getAttesterSlashingMessage OK
|
||||
+ addExitMessage/getProposerSlashingMessage OK
|
||||
+ addExitMessage/getVoluntaryExitMessage OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## Fork Choice + Finality [Preset: mainnet]
|
||||
```diff
|
||||
+ fork_choice - testing finality #01 OK
|
||||
+ fork_choice - testing finality #02 OK
|
||||
+ fork_choice - testing no votes OK
|
||||
+ fork_choice - testing with votes OK
|
||||
```
|
||||
OK: 4/4 Fail: 0/4 Skip: 0/4
|
||||
## Fork id compatibility test
|
||||
```diff
|
||||
+ Digest check OK
|
||||
+ Fork check OK
|
||||
+ Next fork epoch check OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## Gossip validation [Preset: mainnet]
|
||||
```diff
|
||||
+ Any committee index is valid OK
|
||||
+ Validation sanity OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Gossip validation - Extra
|
||||
```diff
|
||||
+ validateSyncCommitteeMessage OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Honest validator
|
||||
```diff
|
||||
+ General pubsub topics OK
|
||||
+ Mainnet attestation topics OK
|
||||
+ is_aggregator OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## Interop
|
||||
```diff
|
||||
+ Interop genesis OK
|
||||
+ Interop signatures OK
|
||||
+ Mocked start private key OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## KeyStorage testing suite
|
||||
```diff
|
||||
+ Pbkdf2 errors OK
|
||||
+ [PBKDF2] Keystore decryption OK
|
||||
+ [PBKDF2] Keystore encryption OK
|
||||
+ [PBKDF2] Network Keystore decryption OK
|
||||
+ [PBKDF2] Network Keystore encryption OK
|
||||
+ [SCRYPT] Keystore decryption OK
|
||||
+ [SCRYPT] Keystore encryption OK
|
||||
+ [SCRYPT] Network Keystore decryption OK
|
||||
+ [SCRYPT] Network Keystore encryption OK
|
||||
```
|
||||
OK: 9/9 Fail: 0/9 Skip: 0/9
|
||||
## Message signatures
|
||||
```diff
|
||||
+ Aggregate and proof signatures OK
|
||||
+ Attestation signatures OK
|
||||
+ Deposit signatures OK
|
||||
+ Slot signatures OK
|
||||
+ Sync committee message signatures OK
|
||||
+ Sync committee selection proof signatures OK
|
||||
+ Sync committee signed contribution and proof signatures OK
|
||||
+ Voluntary exit signatures OK
|
||||
```
|
||||
OK: 8/8 Fail: 0/8 Skip: 0/8
|
||||
## Old database versions [Preset: mainnet]
|
||||
```diff
|
||||
+ pre-1.1.0 OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## PeerPool testing suite
|
||||
```diff
|
||||
+ Access peers by key test OK
|
||||
+ Acquire from empty pool OK
|
||||
+ Acquire/Sorting and consistency test OK
|
||||
+ Delete peer on release text OK
|
||||
+ Iterators test OK
|
||||
+ Peer lifetime test OK
|
||||
+ Safe/Clear test OK
|
||||
+ Score check test OK
|
||||
+ Space tests OK
|
||||
+ addPeer() test OK
|
||||
+ addPeerNoWait() test OK
|
||||
+ deletePeer() test OK
|
||||
```
|
||||
OK: 12/12 Fail: 0/12 Skip: 0/12
|
||||
## SSZ dynamic navigator
|
||||
```diff
|
||||
+ navigating fields OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## SSZ generic roundtrip tests
|
||||
```diff
|
||||
+ case objects OK
|
||||
+ lists OK
|
||||
+ objects OK
|
||||
+ sets OK
|
||||
+ simple values OK
|
||||
+ tables OK
|
||||
+ tuple OK
|
||||
```
|
||||
OK: 7/7 Fail: 0/7 Skip: 0/7
|
||||
## SSZ navigator
|
||||
```diff
|
||||
+ basictype OK
|
||||
+ lists with max size OK
|
||||
+ simple object fields OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## Spec datatypes
|
||||
```diff
|
||||
+ Graffiti bytes OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## Spec helpers
|
||||
```diff
|
||||
+ build_proof - BeaconState OK
|
||||
+ integer_squareroot OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Specific field types
|
||||
```diff
|
||||
+ root update OK
|
||||
+ roundtrip OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## Sync committee pool
|
||||
```diff
|
||||
+ Aggregating votes OK
|
||||
+ An empty pool is safe to prune OK
|
||||
+ An empty pool is safe to prune 2 OK
|
||||
+ An empty pool is safe to use OK
|
||||
```
|
||||
OK: 4/4 Fail: 0/4 Skip: 0/4
|
||||
## SyncManager test suite
|
||||
```diff
|
||||
+ [SyncQueue] Async pending and resetWait() test OK
|
||||
+ [SyncQueue] Async unordered push start from zero OK
|
||||
+ [SyncQueue] Async unordered push with not full start from non-zero OK
|
||||
+ [SyncQueue] Full and incomplete success/fail start from non-zero OK
|
||||
+ [SyncQueue] Full and incomplete success/fail start from zero OK
|
||||
+ [SyncQueue] One smart and one stupid + debt split + empty OK
|
||||
+ [SyncQueue] Smart and stupid success/fail OK
|
||||
+ [SyncQueue] Start and finish slots equal OK
|
||||
+ [SyncQueue] Two full requests success/fail OK
|
||||
+ [SyncQueue] checkResponse() test OK
|
||||
+ [SyncQueue] contains() test OK
|
||||
+ [SyncQueue] getLastNonEmptySlot() test OK
|
||||
+ [SyncQueue] getRewindPoint() test OK
|
||||
+ [SyncQueue] hasEndGap() test OK
|
||||
```
|
||||
OK: 14/14 Fail: 0/14 Skip: 0/14
|
||||
## Zero signature sanity checks
|
||||
```diff
|
||||
+ SSZ serialization roundtrip of SignedBeaconBlockHeader OK
|
||||
+ Zero signatures cannot be loaded into a BLS signature object OK
|
||||
+ default initialization of signatures OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## chain DAG finalization tests [Preset: mainnet]
|
||||
```diff
|
||||
+ init with gaps [Preset: mainnet] OK
|
||||
+ orphaned epoch block [Preset: mainnet] OK
|
||||
+ prune heads on finalization [Preset: mainnet] OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## eth2.0-deposits-cli compatibility
|
||||
```diff
|
||||
+ restoring mnemonic with password OK
|
||||
+ restoring mnemonic without password OK
|
||||
```
|
||||
OK: 2/2 Fail: 0/2 Skip: 0/2
|
||||
## hash
|
||||
```diff
|
||||
+ HashArray OK
|
||||
+ HashList fixed OK
|
||||
+ HashList variable OK
|
||||
```
|
||||
OK: 3/3 Fail: 0/3 Skip: 0/3
|
||||
## state diff tests [Preset: mainnet]
|
||||
```diff
|
||||
+ random slot differences [Preset: mainnet] OK
|
||||
```
|
||||
OK: 1/1 Fail: 0/1 Skip: 0/1
|
||||
## underlong values
|
||||
```diff
|
||||
Overlong SSZ.decode: BitArray[32] Skip
|
||||
Overlong SSZ.decode: BitList[32] Skip
|
||||
Overlong SSZ.decode: HashArray[32, system.uint8] Skip
|
||||
+ Overlong SSZ.decode: HashList[system.uint64, 32] OK
|
||||
+ Overlong SSZ.decode: List[system.uint64, 32] OK
|
||||
Overlong SSZ.decode: Simple Skip
|
||||
Overlong SSZ.decode: UInt128 Skip
|
||||
Overlong SSZ.decode: UInt256 Skip
|
||||
Overlong SSZ.decode: array[0..31, byte] Skip
|
||||
Overlong SSZ.decode: bool Skip
|
||||
Overlong SSZ.decode: limb_t Skip
|
||||
Overlong SSZ.decode: uint16 Skip
|
||||
Overlong SSZ.decode: uint32 Skip
|
||||
Overlong SSZ.decode: uint8 Skip
|
||||
+ Overlong readSszBytes: BitArray[32] OK
|
||||
Overlong readSszBytes: BitList[32] Skip
|
||||
+ Overlong readSszBytes: HashArray[32, system.uint8] OK
|
||||
+ Overlong readSszBytes: HashList[system.uint64, 32] OK
|
||||
+ Overlong readSszBytes: List[system.uint64, 32] OK
|
||||
Overlong readSszBytes: Simple Skip
|
||||
+ Overlong readSszBytes: UInt128 OK
|
||||
+ Overlong readSszBytes: UInt256 OK
|
||||
+ Overlong readSszBytes: array[0..31, byte] OK
|
||||
+ Overlong readSszBytes: bool OK
|
||||
+ Overlong readSszBytes: limb_t OK
|
||||
+ Overlong readSszBytes: uint16 OK
|
||||
+ Overlong readSszBytes: uint32 OK
|
||||
+ Overlong readSszBytes: uint8 OK
|
||||
+ Underlong SSZ.decode: BitArray[32] OK
|
||||
+ Underlong SSZ.decode: BitList[32] OK
|
||||
+ Underlong SSZ.decode: HashArray[32, system.uint8] OK
|
||||
+ Underlong SSZ.decode: HashList[system.uint64, 32] OK
|
||||
+ Underlong SSZ.decode: List[system.uint64, 32] OK
|
||||
+ Underlong SSZ.decode: Simple OK
|
||||
+ Underlong SSZ.decode: UInt128 OK
|
||||
+ Underlong SSZ.decode: UInt256 OK
|
||||
+ Underlong SSZ.decode: array[0..31, byte] OK
|
||||
+ Underlong SSZ.decode: bool OK
|
||||
+ Underlong SSZ.decode: limb_t OK
|
||||
+ Underlong SSZ.decode: uint16 OK
|
||||
+ Underlong SSZ.decode: uint32 OK
|
||||
+ Underlong SSZ.decode: uint8 OK
|
||||
+ Underlong readSszBytes: BitArray[32] OK
|
||||
+ Underlong readSszBytes: BitList[32] OK
|
||||
+ Underlong readSszBytes: HashArray[32, system.uint8] OK
|
||||
+ Underlong readSszBytes: HashList[system.uint64, 32] OK
|
||||
+ Underlong readSszBytes: List[system.uint64, 32] OK
|
||||
+ Underlong readSszBytes: Simple OK
|
||||
+ Underlong readSszBytes: UInt128 OK
|
||||
+ Underlong readSszBytes: UInt256 OK
|
||||
+ Underlong readSszBytes: array[0..31, byte] OK
|
||||
+ Underlong readSszBytes: bool OK
|
||||
+ Underlong readSszBytes: limb_t OK
|
||||
+ Underlong readSszBytes: uint16 OK
|
||||
+ Underlong readSszBytes: uint32 OK
|
||||
+ Underlong readSszBytes: uint8 OK
|
||||
```
|
||||
OK: 42/56 Fail: 0/56 Skip: 14/56
|
||||
|
||||
---TOTAL---
|
||||
OK: 10/12 Fail: 0/12 Skip: 2/12
|
||||
OK: 198/214 Fail: 0/214 Skip: 16/214
|
||||
|
|
|
@ -27,7 +27,7 @@ def runStages() {
|
|||
set -e
|
||||
# to allow the following parallel stages
|
||||
make -j${env.NPROC} QUICK_AND_DIRTY_COMPILER=1 deps
|
||||
./scripts/setup_official_tests.sh jsonTestsCache
|
||||
./scripts/setup_scenarios.sh jsonTestsCache
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
|
60
Makefile
60
Makefile
|
@ -147,12 +147,9 @@ libbacktrace:
|
|||
|
||||
# test binaries that can output an XML report
|
||||
XML_TEST_BINARIES := \
|
||||
test_fixture_ssz_generic_types \
|
||||
all_fixtures_require_ssz \
|
||||
all_fixtures_require_ssz_minimal \
|
||||
test_official_interchange_vectors \
|
||||
all_tests \
|
||||
test_keystore
|
||||
consensus_spec_tests_mainnet \
|
||||
consensus_spec_tests_minimal \
|
||||
all_tests
|
||||
|
||||
# test suite
|
||||
TEST_BINARIES := \
|
||||
|
@ -162,48 +159,30 @@ TEST_BINARIES := \
|
|||
block_sim
|
||||
.PHONY: $(TEST_BINARIES) $(XML_TEST_BINARIES)
|
||||
|
||||
# Generic SSZ test, doesn't use consensus objects minimal/mainnet presets
|
||||
test_fixture_ssz_generic_types: | build deps
|
||||
# Preset-dependent tests
|
||||
consensus_spec_tests_mainnet: | build deps
|
||||
+ echo -e $(BUILD_MSG) "build/$@" && \
|
||||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"tests/official/$@.nim" \
|
||||
$(NIM_PARAMS) -d:chronicles_log_level=TRACE -d:chronicles_sinks="json[file]" && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
# EF tests
|
||||
all_fixtures_require_ssz: | build deps
|
||||
+ echo -e $(BUILD_MSG) "build/$@" && \
|
||||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"tests/official/$@.nim" \
|
||||
"tests/consensus_spec/consensus_spec_tests_preset.nim" \
|
||||
$(NIM_PARAMS) -d:chronicles_log_level=TRACE -d:const_preset=mainnet -d:chronicles_sinks="json[file]" && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
all_fixtures_require_ssz_minimal: | build deps
|
||||
consensus_spec_tests_minimal: | build deps
|
||||
+ echo -e $(BUILD_MSG) "build/$@" && \
|
||||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"tests/official/all_fixtures_require_ssz.nim" \
|
||||
"tests/consensus_spec/consensus_spec_tests_preset.nim" \
|
||||
$(NIM_PARAMS) -d:chronicles_log_level=TRACE -d:const_preset=minimal -d:chronicles_sinks="json[file]" && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
# EIP-3076 - Slashing interchange
|
||||
test_official_interchange_vectors: | build deps
|
||||
+ echo -e $(BUILD_MSG) "build/$@" && \
|
||||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"tests/slashing_protection/$@.nim" \
|
||||
$(NIM_PARAMS) -d:chronicles_log_level=TRACE -d:const_preset=mainnet -d:chronicles_sinks="json[file]" && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
# Mainnet config
|
||||
# Tests we only run for the default preset
|
||||
proto_array: | build deps
|
||||
+ echo -e $(BUILD_MSG) "build/$@" && \
|
||||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"beacon_chain/fork_choice/$@.nim" \
|
||||
$(NIM_PARAMS) -d:const_preset=mainnet -d:chronicles_sinks="json[file]" && \
|
||||
$(NIM_PARAMS) -d:chronicles_sinks="json[file]" && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
fork_choice: | build deps
|
||||
|
@ -211,7 +190,7 @@ fork_choice: | build deps
|
|||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"beacon_chain/fork_choice/$@.nim" \
|
||||
$(NIM_PARAMS) -d:const_preset=mainnet -d:chronicles_sinks="json[file]" && \
|
||||
$(NIM_PARAMS) -d:chronicles_sinks="json[file]" && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
all_tests: | build deps
|
||||
|
@ -219,16 +198,7 @@ all_tests: | build deps
|
|||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"tests/$@.nim" \
|
||||
$(NIM_PARAMS) -d:chronicles_log_level=TRACE -d:const_preset=mainnet -d:chronicles_sinks="json[file]" && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
# TODO `test_keystore` is extracted from the rest of the tests because it uses conflicting BLST headers
|
||||
test_keystore: | build deps
|
||||
+ echo -e $(BUILD_MSG) "build/$@" && \
|
||||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"tests/$@.nim" \
|
||||
$(NIM_PARAMS) -d:chronicles_log_level=TRACE -d:const_preset=mainnet -d:chronicles_sinks="json[file]" && \
|
||||
$(NIM_PARAMS) -d:chronicles_log_level=TRACE -d:chronicles_sinks="json[file]" && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
# State and block sims; getting to 4th epoch triggers consensus checks
|
||||
|
@ -237,7 +207,7 @@ state_sim: | build deps
|
|||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"research/$@.nim" \
|
||||
$(NIM_PARAMS) -d:const_preset=mainnet && \
|
||||
$(NIM_PARAMS) && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
block_sim: | build deps
|
||||
|
@ -245,14 +215,14 @@ block_sim: | build deps
|
|||
MAKE="$(MAKE)" V="$(V)" $(ENV_SCRIPT) scripts/compile_nim_program.sh \
|
||||
$@ \
|
||||
"research/$@.nim" \
|
||||
$(NIM_PARAMS) -d:const_preset=mainnet && \
|
||||
$(NIM_PARAMS) && \
|
||||
echo -e $(BUILD_END_MSG) "build/$@"
|
||||
|
||||
DISABLE_TEST_FIXTURES_SCRIPT := 0
|
||||
# This parameter passing scheme is ugly, but short.
|
||||
test: | $(XML_TEST_BINARIES) $(TEST_BINARIES)
|
||||
ifeq ($(DISABLE_TEST_FIXTURES_SCRIPT), 0)
|
||||
V=$(V) scripts/setup_official_tests.sh
|
||||
V=$(V) scripts/setup_scenarios.sh
|
||||
endif
|
||||
for TEST_BINARY in $(XML_TEST_BINARIES); do \
|
||||
PARAMS="--xml:build/$${TEST_BINARY}.xml --console"; \
|
||||
|
|
|
@ -115,7 +115,7 @@ make VALIDATORS=192 NODES=6 USER_NODES=1 eth2_network_simulation
|
|||
|
||||
By default, validators will be split in half between beacon node and validator
|
||||
client processes (50/50), communicating through the
|
||||
[official validator API](https://ethereum.github.io/eth2.0-APIs/#/ValidatorRequiredApi)
|
||||
[common validator API](https://ethereum.github.io/consensus-APIs/#/ValidatorRequiredApi)
|
||||
(for example with `192` validators and `6` nodes you will roughly end up with 6
|
||||
beacon node and 6 validator client processes, where each of them will handle 16
|
||||
validators), but if you don't want to use external validator clients and instead
|
||||
|
|
|
@ -20,7 +20,7 @@ jobs:
|
|||
path: NimBinaries
|
||||
|
||||
- task: CacheBeta@1
|
||||
displayName: 'cache official test fixtures'
|
||||
displayName: 'cache scenario test fixtures'
|
||||
inputs:
|
||||
key: jsonTestsCacheV1
|
||||
path: jsonTestsCache
|
||||
|
@ -71,7 +71,7 @@ jobs:
|
|||
file build/nimbus_beacon_node
|
||||
# fail fast
|
||||
export NIMTEST_ABORT_ON_ERROR=1
|
||||
scripts/setup_official_tests.sh jsonTestsCache
|
||||
scripts/setup_scenarios.sh jsonTestsCache
|
||||
mingw32-make -j2 ARCH_OVERRIDE=${PLATFORM} DISABLE_TEST_FIXTURES_SCRIPT=1 test
|
||||
displayName: 'build and test'
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
{.push raises: [Defect].}
|
||||
|
||||
import
|
||||
std/[sequtils, tables, strutils, os],
|
||||
std/[sequtils, strutils, os],
|
||||
stew/shims/macros, nimcrypto/hash,
|
||||
eth/common/eth_types as commonEthTypes,
|
||||
web3/[ethtypes, conversions],
|
||||
|
|
|
@ -64,13 +64,13 @@ func get_validator_from_deposit*(deposit: DepositData):
|
|||
)
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.0/specs/phase0/beacon-chain.md#compute_activation_exit_epoch
|
||||
func compute_activation_exit_epoch(epoch: Epoch): Epoch =
|
||||
func compute_activation_exit_epoch*(epoch: Epoch): Epoch =
|
||||
## Return the epoch during which validator activations and exits initiated in
|
||||
## ``epoch`` take effect.
|
||||
epoch + 1 + MAX_SEED_LOOKAHEAD
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.2/specs/phase0/beacon-chain.md#get_validator_churn_limit
|
||||
func get_validator_churn_limit(
|
||||
func get_validator_churn_limit*(
|
||||
cfg: RuntimeConfig, state: SomeBeaconState, cache: var StateCache):
|
||||
uint64 =
|
||||
## Return the validator churn limit for the current epoch.
|
||||
|
@ -344,13 +344,13 @@ template get_total_balance(
|
|||
max(EFFECTIVE_BALANCE_INCREMENT, res)
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.2/specs/phase0/beacon-chain.md#is_eligible_for_activation_queue
|
||||
func is_eligible_for_activation_queue(validator: Validator): bool =
|
||||
func is_eligible_for_activation_queue*(validator: Validator): bool =
|
||||
## Check if ``validator`` is eligible to be placed into the activation queue.
|
||||
validator.activation_eligibility_epoch == FAR_FUTURE_EPOCH and
|
||||
validator.effective_balance == MAX_EFFECTIVE_BALANCE
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.2/specs/phase0/beacon-chain.md#is_eligible_for_activation
|
||||
func is_eligible_for_activation(state: SomeBeaconState, validator: Validator):
|
||||
func is_eligible_for_activation*(state: SomeBeaconState, validator: Validator):
|
||||
bool =
|
||||
## Check if ``validator`` is eligible for activation.
|
||||
|
||||
|
@ -359,56 +359,6 @@ func is_eligible_for_activation(state: SomeBeaconState, validator: Validator):
|
|||
# Has not yet been activated
|
||||
validator.activation_epoch == FAR_FUTURE_EPOCH
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.0.1/specs/phase0/beacon-chain.md#registry-updates
|
||||
proc process_registry_updates*(
|
||||
cfg: RuntimeConfig, state: var SomeBeaconState, cache: var StateCache) {.nbench.} =
|
||||
## Process activation eligibility and ejections
|
||||
|
||||
# Make visible, e.g.,
|
||||
# https://github.com/status-im/nimbus-eth2/pull/608
|
||||
# https://github.com/sigp/lighthouse/pull/657
|
||||
let epoch {.used.} = get_current_epoch(state)
|
||||
trace "process_registry_updates validator balances",
|
||||
balances=state.balances,
|
||||
active_validator_indices=get_active_validator_indices(state, epoch),
|
||||
epoch=epoch
|
||||
|
||||
# is_active_validator(...) is activation_epoch <= epoch < exit_epoch,
|
||||
# and changes here to either activation_epoch or exit_epoch only take
|
||||
# effect with a compute_activation_exit_epoch(...) delay of, based on
|
||||
# the current epoch, 1 + MAX_SEED_LOOKAHEAD epochs ahead. Thus caches
|
||||
# remain valid for this epoch through though this function along with
|
||||
# the rest of the epoch transition.
|
||||
for index in 0..<state.validators.len():
|
||||
if is_eligible_for_activation_queue(state.validators.asSeq()[index]):
|
||||
state.validators[index].activation_eligibility_epoch =
|
||||
get_current_epoch(state) + 1
|
||||
|
||||
if is_active_validator(state.validators.asSeq()[index], get_current_epoch(state)) and
|
||||
state.validators.asSeq()[index].effective_balance <= cfg.EJECTION_BALANCE:
|
||||
initiate_validator_exit(cfg, state, index.ValidatorIndex, cache)
|
||||
|
||||
## Queue validators eligible for activation and not dequeued for activation
|
||||
var activation_queue : seq[tuple[a: Epoch, b: int]] = @[]
|
||||
for index in 0..<state.validators.len():
|
||||
let validator = unsafeAddr state.validators.asSeq()[index]
|
||||
if is_eligible_for_activation(state, validator[]):
|
||||
activation_queue.add (
|
||||
validator[].activation_eligibility_epoch, index)
|
||||
|
||||
activation_queue.sort(system.cmp)
|
||||
|
||||
## Dequeued validators for activation up to churn limit (without resetting
|
||||
## activation epoch)
|
||||
let churn_limit = get_validator_churn_limit(cfg, state, cache)
|
||||
for i, epoch_and_index in activation_queue:
|
||||
if i.uint64 >= churn_limit:
|
||||
break
|
||||
let
|
||||
(_, index) = epoch_and_index
|
||||
state.validators[index].activation_epoch =
|
||||
compute_activation_exit_epoch(get_current_epoch(state))
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.0/specs/phase0/beacon-chain.md#is_valid_indexed_attestation
|
||||
proc is_valid_indexed_attestation*(
|
||||
state: SomeBeaconState, indexed_attestation: SomeIndexedAttestation,
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
{.push raises: [Defect].}
|
||||
|
||||
import
|
||||
std/math,
|
||||
std/[algorithm, math],
|
||||
stew/bitops2, chronicles,
|
||||
../extras,
|
||||
./datatypes/[phase0, altair, merge],
|
||||
|
@ -739,6 +739,56 @@ func process_rewards_and_penalties(
|
|||
decrease_balance(balance, penalties[index])
|
||||
state.balances.asSeq()[index] = balance
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.2/specs/phase0/beacon-chain.md#registry-updates
|
||||
func process_registry_updates*(
|
||||
cfg: RuntimeConfig, state: var SomeBeaconState, cache: var StateCache) {.nbench.} =
|
||||
## Process activation eligibility and ejections
|
||||
|
||||
# Make visible, e.g.,
|
||||
# https://github.com/status-im/nimbus-eth2/pull/608
|
||||
# https://github.com/sigp/lighthouse/pull/657
|
||||
let epoch {.used.} = get_current_epoch(state)
|
||||
trace "process_registry_updates validator balances",
|
||||
balances=state.balances,
|
||||
active_validator_indices=get_active_validator_indices(state, epoch),
|
||||
epoch=epoch
|
||||
|
||||
# is_active_validator(...) is activation_epoch <= epoch < exit_epoch,
|
||||
# and changes here to either activation_epoch or exit_epoch only take
|
||||
# effect with a compute_activation_exit_epoch(...) delay of, based on
|
||||
# the current epoch, 1 + MAX_SEED_LOOKAHEAD epochs ahead. Thus caches
|
||||
# remain valid for this epoch through though this function along with
|
||||
# the rest of the epoch transition.
|
||||
for index in 0..<state.validators.len():
|
||||
if is_eligible_for_activation_queue(state.validators.asSeq()[index]):
|
||||
state.validators[index].activation_eligibility_epoch =
|
||||
get_current_epoch(state) + 1
|
||||
|
||||
if is_active_validator(state.validators.asSeq()[index], get_current_epoch(state)) and
|
||||
state.validators.asSeq()[index].effective_balance <= cfg.EJECTION_BALANCE:
|
||||
initiate_validator_exit(cfg, state, index.ValidatorIndex, cache)
|
||||
|
||||
## Queue validators eligible for activation and not dequeued for activation
|
||||
var activation_queue : seq[tuple[a: Epoch, b: int]] = @[]
|
||||
for index in 0..<state.validators.len():
|
||||
let validator = unsafeAddr state.validators.asSeq()[index]
|
||||
if is_eligible_for_activation(state, validator[]):
|
||||
activation_queue.add (
|
||||
validator[].activation_eligibility_epoch, index)
|
||||
|
||||
activation_queue.sort(system.cmp)
|
||||
|
||||
## Dequeued validators for activation up to churn limit (without resetting
|
||||
## activation epoch)
|
||||
let churn_limit = get_validator_churn_limit(cfg, state, cache)
|
||||
for i, epoch_and_index in activation_queue:
|
||||
if i.uint64 >= churn_limit:
|
||||
break
|
||||
let
|
||||
(_, index) = epoch_and_index
|
||||
state.validators[index].activation_epoch =
|
||||
compute_activation_exit_epoch(get_current_epoch(state))
|
||||
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.2/specs/phase0/beacon-chain.md#slashings
|
||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.0-beta.4/specs/altair/beacon-chain.md#slashings
|
||||
func process_slashings*(state: var SomeBeaconState, total_balance: Gwei) {.nbench.} =
|
||||
|
|
|
@ -14,7 +14,7 @@ import
|
|||
# Nimbus Bench Batch
|
||||
# --------------------------------------------------
|
||||
# This script calls Nimbus bench in parallel batch
|
||||
# to run a series of benchmarks from the official SSZ tests
|
||||
# to run a series of benchmarks from the spec SSZ tests
|
||||
|
||||
type
|
||||
CmdLists = seq[string]
|
||||
|
|
|
@ -13,8 +13,9 @@ import
|
|||
# Beacon-chain
|
||||
../beacon_chain/spec/datatypes/[phase0],
|
||||
../beacon_chain/spec/[
|
||||
beaconstate, forks, helpers, state_transition, state_transition_block],
|
||||
../tests/official/fixtures_utils
|
||||
beaconstate, forks, helpers, state_transition, state_transition_block,
|
||||
state_transition_epoch],
|
||||
../tests/consensus_spec/fixtures_utils
|
||||
|
||||
# Nimbus Bench - Scenario configuration
|
||||
# --------------------------------------------------
|
||||
|
|
|
@ -32,7 +32,6 @@ additional Nim arguments, e.g.:
|
|||
```bash
|
||||
make libnfuzz.a NIMFLAGS="--cc:clang --passC:'-fsanitize=fuzzer-no-link' --passL='-fsanitize=fuzzer'"
|
||||
```
|
||||
To disable BLS verification on deserialization of SSZ objects add `-d:ssz_testing` to the NIMFLAGS.
|
||||
|
||||
Other useful options might include: `--clang.path:<path>`, `--clang.exe:<exe>`, `--clang.linkerexe:<exe>`, `-d:const_preset=mainnet`
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ cli do (testname {.argument.}: string,
|
|||
fuzzer = defaultFuzzingEngine):
|
||||
|
||||
if not dirExists(fixturesDir):
|
||||
echo "Please run `make test` first in order to download the official ETH2 test vectors"
|
||||
echo "Please run `make test` first in order to download the consensus spec ETH2 test vectors"
|
||||
quit 1
|
||||
|
||||
if not dirExists(fixturesDir / testname):
|
||||
|
|
|
@ -12,10 +12,10 @@ set -e
|
|||
SUBREPO_DIR="vendor/nim-eth2-scenarios"
|
||||
# verbosity level
|
||||
[[ -z "$V" ]] && V=0
|
||||
[[ -z "$BUILD_MSG" ]] && BUILD_MSG="Downloading official test vectors"
|
||||
[[ -z "$BUILD_MSG" ]] && BUILD_MSG="Downloading consensus spec test vectors"
|
||||
CACHE_DIR="$1" # optional parameter pointing to a CI cache dir. Without it, we just download the test vectors for a local `make test`.
|
||||
|
||||
[[ -d "${SUBREPO_DIR}" ]] || { echo "This script should be run from the \"nim-beacon-chain\" repo top dir."; exit 1; }
|
||||
[[ -d "${SUBREPO_DIR}" ]] || { echo "This script should be run from the \"nimbus-eth2\" repo top dir."; exit 1; }
|
||||
|
||||
# script output
|
||||
echo -e "$BUILD_MSG"
|
|
@ -5,10 +5,14 @@
|
|||
# * 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.
|
||||
|
||||
import ./testutil
|
||||
# All tests except scenarios, which as compiled separately for mainnet and minimal
|
||||
|
||||
import
|
||||
chronicles,
|
||||
./testutil
|
||||
|
||||
import # Unit test
|
||||
./ssz/all_tests,
|
||||
./ssz/all_tests as ssz_all_tests,
|
||||
./test_attestation_pool,
|
||||
./test_beacon_chain_db,
|
||||
./test_beaconstate,
|
||||
|
@ -23,6 +27,7 @@ import # Unit test
|
|||
./test_helpers,
|
||||
./test_honest_validator,
|
||||
./test_interop,
|
||||
./test_keystore,
|
||||
./test_message_signatures,
|
||||
./test_peer_pool,
|
||||
./test_statediff,
|
||||
|
@ -30,6 +35,8 @@ import # Unit test
|
|||
./test_sync_manager,
|
||||
./test_zero_signature,
|
||||
./fork_choice/tests_fork_choice,
|
||||
./consensus_spec/all_tests as consensus_all_tests,
|
||||
./slashing_protection/test_fixtures,
|
||||
./slashing_protection/test_slashing_interchange,
|
||||
./slashing_protection/test_slashing_protection_db,
|
||||
./slashing_protection/test_migration
|
||||
|
@ -40,10 +47,4 @@ import # Refactor state transition unit tests
|
|||
./spec_block_processing/test_process_attestation,
|
||||
./spec_epoch_processing/test_process_justification_and_finalization
|
||||
|
||||
# TODO: json tests were removed
|
||||
|
||||
# import # Official fixtures that don't require SSZ parsing of invalid BLS signatures
|
||||
# # https://github.com/status-im/nimbus-eth2/issues/374
|
||||
# ./official/test_fixture_bls
|
||||
|
||||
summarizeLongTests("AllTests")
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Tests based on scenarios generated from the [consensus spec](https://github.com/ethereum/consensus-spec-tests/).
|
|
@ -0,0 +1,16 @@
|
|||
# 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.}
|
||||
|
||||
# BLS test vectors are covered by nim-blscurve:
|
||||
# https://github.com/status-im/nim-blscurve/blob/master/tests/eth2_vectors.nim
|
||||
|
||||
# Tests that do not depend on `mainnet` vs `minimal` compile-time configuration
|
||||
|
||||
import
|
||||
./test_fixture_ssz_generic_types
|
|
@ -5,18 +5,11 @@
|
|||
# * 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.
|
||||
|
||||
# All non-pure SSZ tests that require the -d:ssz_testing
|
||||
# to ignore invalid BLS signature in EF test vectors
|
||||
# https://github.com/status-im/nimbus-eth2/issues/374
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
./test_fixture_fork,
|
||||
./test_fixture_merkle_single_proof,
|
||||
./test_fixture_ssz_consensus_objects,
|
||||
./test_fixture_sanity_slots,
|
||||
./test_fixture_sanity_blocks,
|
||||
./test_fixture_state_transition_epoch,
|
||||
./test_fixture_operations_attestations,
|
||||
./test_fixture_operations_attester_slashings,
|
||||
./test_fixture_operations_block_header,
|
||||
|
@ -24,6 +17,9 @@ import
|
|||
./test_fixture_operations_proposer_slashings,
|
||||
./test_fixture_operations_sync_aggregate,
|
||||
./test_fixture_operations_voluntary_exit,
|
||||
./test_fixture_fork,
|
||||
./test_fixture_sanity_blocks,
|
||||
./test_fixture_sanity_slots,
|
||||
./test_fixture_ssz_consensus_objects,
|
||||
./test_fixture_state_transition_epoch,
|
||||
./test_fixture_sync_protocol,
|
||||
./test_fixture_transition
|
|
@ -21,11 +21,6 @@ import
|
|||
const OpForkDir = SszTestsDir/const_preset/"altair"/"fork"/"fork"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpForkDir / identifier
|
||||
|
||||
proc `testImpl _ fork _ identifier`() =
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
import
|
||||
# Standard library
|
||||
std/[os, sequtils, streams],
|
||||
# Status libraries
|
||||
|
@ -21,15 +21,10 @@ import
|
|||
../../testutil,
|
||||
../fixtures_utils
|
||||
|
||||
const TestsDir =
|
||||
const TestsDir =
|
||||
SszTestsDir/const_preset/"altair"/"merkle"/"single_proof"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = TestsDir / identifier
|
||||
|
||||
proc `testImpl _ merkle_single_proof _ identifier`() =
|
||||
|
@ -40,7 +35,7 @@ proc runTest(identifier: string) =
|
|||
leaf_index: GeneralizedIndex
|
||||
branch: seq[string]
|
||||
|
||||
let
|
||||
let
|
||||
proof = block:
|
||||
var s = openFileStream(testDir/"proof.yaml")
|
||||
defer: close(s)
|
||||
|
@ -56,13 +51,13 @@ proc runTest(identifier: string) =
|
|||
|
||||
check:
|
||||
computedProof == proof.branch.mapIt(Eth2Digest.fromHex(it))
|
||||
is_valid_merkle_branch(Eth2Digest.fromHex(proof.leaf), computedProof,
|
||||
is_valid_merkle_branch(Eth2Digest.fromHex(proof.leaf), computedProof,
|
||||
log2trunc(proof.leaf_index),
|
||||
get_subtree_index(proof.leaf_index),
|
||||
hash_tree_root(state[]))
|
||||
|
||||
`testImpl _ merkle_single_proof _ identifier`()
|
||||
|
||||
suite "Ethereum Foundation - Altair - Merkle - Single proof" & preset():
|
||||
suite "Ethereum Foundation - Altair - Merkle - Single proof" & preset():
|
||||
for kind, path in walkDir(TestsDir, relative = true, checkDir = true):
|
||||
runTest(path)
|
|
@ -12,6 +12,7 @@ import
|
|||
os,
|
||||
# Utilities
|
||||
unittest2,
|
||||
chronicles,
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/beaconstate,
|
||||
|
@ -24,11 +25,6 @@ import
|
|||
const OperationsAttestationsDir = SszTestsDir/const_preset/"altair"/"operations"/"attestation"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OperationsAttestationsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attestations _ identifier`() =
|
||||
|
@ -40,27 +36,29 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var cache = StateCache()
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
|
||||
let attestation =
|
||||
parseTest(testDir/"attestation.ssz_snappy", SSZ, Attestation)
|
||||
var preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
let
|
||||
attestation = parseTest(
|
||||
testDir/"attestation.ssz_snappy", SSZ, Attestation)
|
||||
done = process_attestation(
|
||||
preState[], attestation, {},
|
||||
get_base_reward_per_increment(preState[], cache),
|
||||
cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
let done = process_attestation(
|
||||
preState[], attestation, {},
|
||||
get_base_reward_per_increment(preState[], cache), cache).isOk
|
||||
doAssert done, "Valid attestation not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
let done = process_attestation(
|
||||
preState[], attestation, {},
|
||||
get_base_reward_per_increment(preState[], cache), cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid attestation to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attestations _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ import
|
|||
const OpAttSlashingDir = SszTestsDir/const_preset/"altair"/"operations"/"attester_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpAttSlashingDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attester_slashing _ identifier`() =
|
||||
|
@ -39,26 +34,27 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let attesterSlashing =
|
||||
parseTest(testDir/"attester_slashing.ssz_snappy", SSZ, AttesterSlashing)
|
||||
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))
|
||||
done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache).isOk
|
||||
doAssert done, "Valid attestater slashing not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid attester slashing to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attester_slashing _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ import
|
|||
const OpBlockHeaderDir = SszTestsDir/const_preset/"altair"/"operations"/"block_header"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpBlockHeaderDir / identifier
|
||||
|
||||
proc `testImpl _ blockheader _ identifier`() =
|
||||
|
@ -39,23 +34,24 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let blck = parseTest(testDir/"block.ssz_snappy", SSZ, altair.BeaconBlock)
|
||||
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))
|
||||
done = process_block_header(preState[], blck, {}, cache).isOk
|
||||
doAssert done, "Valid block header not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_block_header(preState[], blck, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid block header to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ blockheader _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ import
|
|||
const OperationsDepositsDir = SszTestsDir/const_preset/"altair"/"operations"/"deposit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OperationsDepositsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_deposits _ identifier`() =
|
||||
|
@ -39,17 +34,23 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & " " & identifier:
|
||||
let deposit = parseTest(testDir/"deposit.ssz_snappy", SSZ, Deposit)
|
||||
var preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
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))
|
||||
discard process_deposit(defaultRuntimeConfig, preState[], deposit, {})
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check process_deposit(defaultRuntimeConfig, preState[], deposit, {}).isErr
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_deposits _ identifier`()
|
||||
|
|
@ -26,11 +26,6 @@ when isMainModule:
|
|||
const OpProposerSlashingDir = SszTestsDir/const_preset/"altair"/"operations"/"proposer_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpProposerSlashingDir / identifier
|
||||
|
||||
proc `testImpl_proposer_slashing _ identifier`() =
|
||||
|
@ -42,25 +37,27 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let proposerSlashing = parseTest(
|
||||
testDir/"proposer_slashing.ssz_snappy", SSZ, ProposerSlashing)
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
cache = StateCache()
|
||||
|
||||
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))
|
||||
done = process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState[], proposerSlashing, {}, cache).isOk
|
||||
doAssert done, "Valid proposer slashing not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_proposer_slashing(defaultRuntimeConfig, preState[], proposerSlashing, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid proposer slashing to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl_proposer_slashing _ identifier`()
|
||||
|
|
@ -13,7 +13,7 @@ import
|
|||
# Utilities
|
||||
stew/results,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/[beaconstate, state_transition_block],
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
|
@ -26,11 +26,6 @@ when isMainModule:
|
|||
const OpSyncAggregateDir = SszTestsDir/const_preset/"altair"/"operations"/"sync_aggregate"/"pyspec_tests"
|
||||
|
||||
proc runTest(dir, identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = dir / identifier
|
||||
|
||||
proc `testImpl_sync_committee _ identifier`() =
|
||||
|
@ -42,25 +37,27 @@ proc runTest(dir, identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let syncAggregate = parseTest(
|
||||
testDir/"sync_aggregate.ssz_snappy", SSZ, SyncAggregate)
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
cache = StateCache()
|
||||
|
||||
let
|
||||
syncAggregate = parseTest(
|
||||
testDir/"sync_aggregate.ssz_snappy", SSZ, SyncAggregate)
|
||||
done = process_sync_aggregate(
|
||||
preState[], syncAggregate, cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let
|
||||
postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
||||
done = process_sync_aggregate(
|
||||
preState[], syncAggregate, cache).isOk
|
||||
doAssert done, "Valid sync aggregate not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_sync_aggregate(preState[], syncAggregate, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid sync aggregate to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl_sync_committee _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ import
|
|||
const OpVoluntaryExitDir = SszTestsDir/const_preset/"altair"/"operations"/"voluntary_exit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpVoluntaryExitDir / identifier
|
||||
|
||||
proc `testImpl _ voluntary_exit _ identifier`() =
|
||||
|
@ -39,26 +34,27 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let voluntaryExit = parseTest(
|
||||
testDir/"voluntary_exit.ssz_snappy", SSZ, SignedVoluntaryExit)
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
||||
cache = StateCache()
|
||||
|
||||
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))
|
||||
done =
|
||||
process_voluntary_exit(defaultRuntimeConfig, preState[], voluntaryExit, {}, cache).isOk
|
||||
doAssert done, "Valid voluntary exit not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done =
|
||||
process_voluntary_exit(defaultRuntimeConfig, preState[], voluntaryExit, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid voluntary exit to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ voluntary_exit _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ const
|
|||
SanityBlocksDir = SszTestsDir/const_preset/"altair"/"sanity"/"blocks"/"pyspec_tests"
|
||||
|
||||
proc runTest(testName, testDir, unitTestName: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testPath = testDir / unitTestName
|
||||
|
||||
proc `testImpl _ blck _ testName`() =
|
|
@ -86,7 +86,7 @@ proc loadExpectedHashTreeRoot(dir: string): SSZHashTreeRoot =
|
|||
# ----------------------------------------------------------------
|
||||
|
||||
suite "Ethereum Foundation - Altair - SSZ consensus objects " & preset():
|
||||
doAssert existsDir(SSZDir), "You need to run the \"download_test_vectors.sh\" script to retrieve the official test vectors."
|
||||
doAssert existsDir(SSZDir), "You need to run the \"download_test_vectors.sh\" script to retrieve the consensus spec test vectors."
|
||||
for pathKind, sszType in walkDir(SSZDir, relative = true, checkDir = true):
|
||||
doAssert pathKind == pcDir
|
||||
|
||||
|
@ -145,5 +145,3 @@ suite "Ethereum Foundation - Altair - SSZ consensus objects " & preset():
|
|||
of "VoluntaryExit": checkSSZ(VoluntaryExit, path, hash)
|
||||
else:
|
||||
raise newException(ValueError, "Unsupported test: " & sszType)
|
||||
|
||||
summarizeLongTests("FixtureSSZConsensus")
|
|
@ -11,17 +11,14 @@ import
|
|||
# Standard library
|
||||
os, strutils,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[presets, state_transition_epoch],
|
||||
../../../beacon_chain/spec/[datatypes/altair, beaconstate],
|
||||
../../../beacon_chain/spec/[beaconstate, presets, state_transition_epoch],
|
||||
../../../beacon_chain/spec/datatypes/altair,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../test_fixture_rewards,
|
||||
../../helpers/debug_state
|
||||
|
||||
from ../../../beacon_chain/spec/beaconstate import process_registry_updates
|
||||
# XXX: move to state_transition_epoch?
|
||||
|
||||
template runSuite(
|
||||
suiteDir, testName: string, transitionProc: untyped{ident},
|
||||
useCache, useTAB, useUPB: static bool = false): untyped =
|
|
@ -31,11 +31,6 @@ type
|
|||
fork_block {.defaultVal: 0.}: int
|
||||
|
||||
proc runTest(testName, testDir, unitTestName: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testPath = testDir / unitTestName
|
||||
|
||||
var transitionEpoch: TransitionEpoch
|
|
@ -5,15 +5,15 @@
|
|||
# * 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.
|
||||
|
||||
# All non-pure SSZ tests that require the -d:ssz_testing
|
||||
# to ignore invalid BLS signature in EF test vectors
|
||||
# https://github.com/status-im/nimbus-eth2/issues/374
|
||||
import
|
||||
chronicles,
|
||||
../testutil
|
||||
|
||||
import ../testutil
|
||||
# Tests that depend on `mainnet` vs `minimal` compile-time configuration
|
||||
|
||||
import
|
||||
./phase0/all_phase0_fixtures_require_ssz,
|
||||
./altair/all_altair_fixtures_require_ssz,
|
||||
./merge/all_merge_fixtures_require_ssz
|
||||
./phase0/all_phase0_fixtures,
|
||||
./altair/all_altair_fixtures,
|
||||
./merge/all_merge_fixtures
|
||||
|
||||
summarizeLongTests("FixtureAll")
|
||||
summarizeLongTests("ConsensusSpecPreset")
|
|
@ -5,10 +5,6 @@
|
|||
# * 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.
|
||||
|
||||
# All non-pure SSZ tests that require the -d:ssz_testing
|
||||
# to ignore invalid BLS signature in EF test vectors
|
||||
# https://github.com/status-im/nimbus-eth2/issues/374
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
|
@ -25,11 +25,6 @@ import
|
|||
const OperationsAttestationsDir = SszTestsDir/const_preset/"merge"/"operations"/"attestation"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OperationsAttestationsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attestations _ identifier`() =
|
||||
|
@ -41,27 +36,28 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var cache = StateCache()
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
let attestation =
|
||||
parseTest(testDir/"attestation.ssz_snappy", SSZ, Attestation)
|
||||
var 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(preState[], cache), cache)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let postState =
|
||||
newClone(parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
let done = process_attestation(
|
||||
preState[], attestation, {},
|
||||
get_base_reward_per_increment(preState[], cache), cache).isOk
|
||||
doAssert done, "Valid attestation not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
let done = process_attestation(
|
||||
preState[], attestation, {},
|
||||
get_base_reward_per_increment(preState[], cache), cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid attestation to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attestations _ identifier`()
|
||||
|
|
@ -24,11 +24,6 @@ import
|
|||
const OpAttSlashingDir = SszTestsDir/const_preset/"merge"/"operations"/"attester_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpAttSlashingDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attester_slashing _ identifier`() =
|
||||
|
@ -40,26 +35,26 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let attesterSlashing =
|
||||
parseTest(testDir/"attester_slashing.ssz_snappy", SSZ, AttesterSlashing)
|
||||
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))
|
||||
done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache).isOk
|
||||
doAssert done, "Valid attestater slashing not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid attester slashing to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attester_slashing _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ import
|
|||
const OpBlockHeaderDir = SszTestsDir/const_preset/"merge"/"operations"/"block_header"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpBlockHeaderDir / identifier
|
||||
|
||||
proc `testImpl _ blockheader _ identifier`() =
|
||||
|
@ -39,23 +34,25 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let blck = parseTest(testDir/"block.ssz_snappy", SSZ, merge.BeaconBlock)
|
||||
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))
|
||||
done = process_block_header(preState[], blck, {}, cache).isOk
|
||||
doAssert done, "Valid block header not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_block_header(preState[], blck, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid block header to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ blockheader _ identifier`()
|
||||
|
|
@ -24,11 +24,6 @@ import
|
|||
const OperationsDepositsDir = SszTestsDir/const_preset/"merge"/"operations"/"deposit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OperationsDepositsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_deposits _ identifier`() =
|
||||
|
@ -40,17 +35,23 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & " " & identifier:
|
||||
let deposit = parseTest(testDir/"deposit.ssz_snappy", SSZ, Deposit)
|
||||
var preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
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))
|
||||
discard process_deposit(defaultRuntimeConfig, preState[], deposit, {})
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check process_deposit(defaultRuntimeConfig, preState[], deposit, {}).isErr
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_deposits _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ import
|
|||
const OpExecutionPayloadDir = SszTestsDir/const_preset/"merge"/"operations"/"execution_payload"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpExecutionPayloadDir / identifier
|
||||
|
||||
proc `testImpl _ voluntary_exit _ identifier`() =
|
||||
|
@ -44,25 +39,26 @@ proc runTest(identifier: string) =
|
|||
func executePayload(_: ExecutionPayload): bool = payloadValid
|
||||
|
||||
test prefix & identifier:
|
||||
var
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
|
||||
let
|
||||
executionPayload = parseTest(
|
||||
testDir/"execution_payload.ssz_snappy", SSZ, ExecutionPayload)
|
||||
var preState = newClone(
|
||||
parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
done = process_execution_payload(
|
||||
preState[], executionPayload, executePayload)
|
||||
|
||||
if existsFile(testDir/"post.ssz_snappy"):
|
||||
let
|
||||
postState = newClone(
|
||||
parseTest(testDir/"post.ssz_snappy", SSZ, merge.BeaconState))
|
||||
done = process_execution_payload(
|
||||
preState[], executionPayload, executePayload).isOk
|
||||
doAssert done, "Valid execution payload not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_execution_payload(
|
||||
preState[], executionPayload, executePayload).isOk
|
||||
doAssert done == false, "We didn't expect this invalid execution payload to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ voluntary_exit _ identifier`()
|
||||
|
|
@ -26,11 +26,6 @@ when isMainModule:
|
|||
const OpProposerSlashingDir = SszTestsDir/const_preset/"merge"/"operations"/"proposer_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpProposerSlashingDir / identifier
|
||||
|
||||
proc `testImpl_proposer_slashing _ identifier`() =
|
||||
|
@ -42,25 +37,27 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let proposerSlashing = parseTest(
|
||||
testDir/"proposer_slashing.ssz_snappy", SSZ, ProposerSlashing)
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
cache = StateCache()
|
||||
|
||||
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))
|
||||
done = process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState[], proposerSlashing, {}, cache).isOk
|
||||
doAssert done, "Valid proposer slashing not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_proposer_slashing(defaultRuntimeConfig, preState[], proposerSlashing, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid proposer slashing to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl_proposer_slashing _ identifier`()
|
||||
|
|
@ -24,11 +24,6 @@ import
|
|||
const OpVoluntaryExitDir = SszTestsDir/const_preset/"merge"/"operations"/"voluntary_exit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpVoluntaryExitDir / identifier
|
||||
|
||||
proc `testImpl _ voluntary_exit _ identifier`() =
|
||||
|
@ -40,26 +35,26 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let voluntaryExit = parseTest(
|
||||
testDir/"voluntary_exit.ssz_snappy", SSZ, SignedVoluntaryExit)
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, merge.BeaconState))
|
||||
cache = StateCache()
|
||||
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))
|
||||
done =
|
||||
process_voluntary_exit(defaultRuntimeConfig, preState[], voluntaryExit, {}, cache).isOk
|
||||
doAssert done, "Valid voluntary exit not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done =
|
||||
process_voluntary_exit(defaultRuntimeConfig, preState[], voluntaryExit, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid voluntary exit to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ voluntary_exit _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ const
|
|||
SanityBlocksDir = SszTestsDir/const_preset/"merge"/"sanity"/"blocks"/"pyspec_tests"
|
||||
|
||||
proc runTest(testName, testDir, unitTestName: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testPath = testDir / unitTestName
|
||||
|
||||
proc `testImpl _ blck _ testName`() =
|
|
@ -86,7 +86,7 @@ proc loadExpectedHashTreeRoot(dir: string): SSZHashTreeRoot =
|
|||
# ----------------------------------------------------------------
|
||||
|
||||
suite "Ethereum Foundation - Merge - SSZ consensus objects " & preset():
|
||||
doAssert existsDir(SSZDir), "You need to run the \"download_test_vectors.sh\" script to retrieve the official test vectors."
|
||||
doAssert existsDir(SSZDir), "You need to run the \"download_test_vectors.sh\" script to retrieve the consensus spec test vectors."
|
||||
for pathKind, sszType in walkDir(SSZDir, relative = true, checkDir = true):
|
||||
doAssert pathKind == pcDir
|
||||
|
||||
|
@ -149,5 +149,3 @@ suite "Ethereum Foundation - Merge - SSZ consensus objects " & preset():
|
|||
of "VoluntaryExit": checkSSZ(VoluntaryExit, path, hash)
|
||||
else:
|
||||
raise newException(ValueError, "Unsupported test: " & sszType)
|
||||
|
||||
summarizeLongTests("FixtureSSZConsensus")
|
|
@ -11,17 +11,14 @@ import
|
|||
# Standard library
|
||||
os, strutils,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[presets, state_transition_epoch],
|
||||
../../../beacon_chain/spec/[datatypes/merge, beaconstate],
|
||||
../../../beacon_chain/spec/[beaconstate, presets, state_transition_epoch],
|
||||
../../../beacon_chain/spec/datatypes/merge,
|
||||
# Test utilities
|
||||
../../testutil,
|
||||
../fixtures_utils,
|
||||
../test_fixture_rewards,
|
||||
../../helpers/debug_state
|
||||
|
||||
from ../../../beacon_chain/spec/beaconstate import process_registry_updates
|
||||
# XXX: move to state_transition_epoch?
|
||||
|
||||
template runSuite(
|
||||
suiteDir, testName: string, transitionProc: untyped{ident},
|
||||
useCache, useTAB, useUPB: static bool = false): untyped =
|
|
@ -5,20 +5,16 @@
|
|||
# * 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.
|
||||
|
||||
# All non-pure SSZ tests that require the -d:ssz_testing
|
||||
# to ignore invalid BLS signature in EF test vectors
|
||||
# https://github.com/status-im/nimbus-eth2/issues/374
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
./test_fixture_ssz_consensus_objects,
|
||||
./test_fixture_sanity_slots,
|
||||
./test_fixture_sanity_blocks,
|
||||
./test_fixture_operations_deposits,
|
||||
./test_fixture_state_transition_epoch,
|
||||
./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_voluntary_exit,
|
||||
./test_fixture_sanity_blocks,
|
||||
./test_fixture_sanity_slots,
|
||||
./test_fixture_ssz_consensus_objects,
|
||||
./test_fixture_state_transition_epoch
|
|
@ -24,11 +24,6 @@ import
|
|||
const OperationsAttestationsDir = SszTestsDir/const_preset/"phase0"/"operations"/"attestation"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OperationsAttestationsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attestations _ identifier`() =
|
||||
|
@ -40,25 +35,27 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
var cache = StateCache()
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
|
||||
let attestation =
|
||||
parseTest(testDir/"attestation.ssz_snappy", SSZ, Attestation)
|
||||
var 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))
|
||||
let done = process_attestation(
|
||||
preState[], attestation, {}, 0.Gwei, cache).isOk
|
||||
doAssert done, "Valid attestation not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
let done = process_attestation(
|
||||
preState[], attestation, {}, 0.Gwei, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid attestation to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attestations _ identifier`()
|
||||
|
|
@ -12,6 +12,7 @@ import
|
|||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
|
@ -23,11 +24,6 @@ import
|
|||
const OpAttSlashingDir = SszTestsDir/const_preset/"phase0"/"operations"/"attester_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpAttSlashingDir / identifier
|
||||
|
||||
proc `testImpl _ operations_attester_slashing _ identifier`() =
|
||||
|
@ -39,26 +35,27 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let attesterSlashing =
|
||||
parseTest(testDir/"attester_slashing.ssz_snappy", SSZ, AttesterSlashing)
|
||||
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))
|
||||
done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache).isOk
|
||||
doAssert done, "Valid attestater slashing not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_attester_slashing(
|
||||
defaultRuntimeConfig, preState[], attesterSlashing, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid attester slashing to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_attester_slashing _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ import
|
|||
const OpBlockHeaderDir = SszTestsDir/const_preset/"phase0"/"operations"/"block_header"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpBlockHeaderDir / identifier
|
||||
|
||||
proc `testImpl _ blockheader _ identifier`() =
|
||||
|
@ -39,23 +34,25 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let blck = parseTest(testDir/"block.ssz_snappy", SSZ, phase0.BeaconBlock)
|
||||
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))
|
||||
done = process_block_header(preState[], blck, {}, cache).isOk
|
||||
doAssert done, "Valid block header not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_block_header(preState[], blck, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid block header to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ blockheader _ identifier`()
|
||||
|
|
@ -12,6 +12,7 @@ import
|
|||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/[state_transition_block, presets],
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
|
@ -23,11 +24,6 @@ import
|
|||
const OperationsDepositsDir = SszTestsDir/const_preset/"phase0"/"operations"/"deposit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OperationsDepositsDir / identifier
|
||||
|
||||
proc `testImpl _ operations_deposits _ identifier`() =
|
||||
|
@ -39,17 +35,24 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & " " & identifier:
|
||||
let deposit = parseTest(testDir/"deposit.ssz_snappy", SSZ, Deposit)
|
||||
var preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
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))
|
||||
discard process_deposit(defaultRuntimeConfig, preState[], deposit, {})
|
||||
|
||||
check:
|
||||
done.isOk()
|
||||
preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
reportDiff(preState, postState)
|
||||
else:
|
||||
check process_deposit(defaultRuntimeConfig, preState[], deposit, {}).isErr
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ operations_deposits _ identifier`()
|
||||
|
|
@ -26,11 +26,6 @@ when isMainModule:
|
|||
const OpProposerSlashingDir = SszTestsDir/const_preset/"phase0"/"operations"/"proposer_slashing"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpProposerSlashingDir / identifier
|
||||
|
||||
proc `testImpl_proposer_slashing _ identifier`() =
|
||||
|
@ -42,26 +37,27 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let proposerSlashing = parseTest(
|
||||
testDir/"proposer_slashing.ssz_snappy", SSZ, ProposerSlashing)
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
cache = StateCache()
|
||||
|
||||
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))
|
||||
done = process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState[], proposerSlashing, {}, cache).isOk
|
||||
doAssert done, "Valid proposer slashing not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done = process_proposer_slashing(
|
||||
defaultRuntimeConfig, preState[], proposerSlashing, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid proposer slashing to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl_proposer_slashing _ identifier`()
|
||||
|
|
@ -12,6 +12,7 @@ import
|
|||
os,
|
||||
# Utilities
|
||||
stew/results,
|
||||
chronicles,
|
||||
# Beacon chain internals
|
||||
../../../beacon_chain/spec/state_transition_block,
|
||||
../../../beacon_chain/spec/datatypes/phase0,
|
||||
|
@ -23,11 +24,6 @@ import
|
|||
const OpVoluntaryExitDir = SszTestsDir/const_preset/"phase0"/"operations"/"voluntary_exit"/"pyspec_tests"
|
||||
|
||||
proc runTest(identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testDir = OpVoluntaryExitDir / identifier
|
||||
|
||||
proc `testImpl _ voluntary_exit _ identifier`() =
|
||||
|
@ -39,28 +35,27 @@ proc runTest(identifier: string) =
|
|||
"[Invalid] "
|
||||
|
||||
test prefix & identifier:
|
||||
let voluntaryExit = parseTest(
|
||||
testDir/"voluntary_exit.ssz_snappy", SSZ, SignedVoluntaryExit)
|
||||
var
|
||||
cache = StateCache()
|
||||
preState =
|
||||
newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
||||
cache = StateCache()
|
||||
|
||||
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))
|
||||
done =
|
||||
process_voluntary_exit(
|
||||
defaultRuntimeConfig, preState[], voluntaryExit, {}, cache).isOk
|
||||
doAssert done, "Valid voluntary exit not processed"
|
||||
check: preState[].hash_tree_root() == postState[].hash_tree_root()
|
||||
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:
|
||||
let done =
|
||||
process_voluntary_exit(
|
||||
defaultRuntimeConfig, preState[], voluntaryExit, {}, cache).isOk
|
||||
doAssert done == false, "We didn't expect this invalid voluntary exit to be processed."
|
||||
check: done.isErr() # No post state = processing should fail
|
||||
|
||||
`testImpl _ voluntary_exit _ identifier`()
|
||||
|
|
@ -23,11 +23,6 @@ const
|
|||
SanityBlocksDir = SszTestsDir/const_preset/"phase0"/"sanity"/"blocks"/"pyspec_tests"
|
||||
|
||||
proc runTest(testName, testDir, unitTestName: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
|
||||
let testPath = testDir / unitTestName
|
||||
|
||||
proc `testImpl _ blck _ testName`() =
|
|
@ -86,7 +86,7 @@ proc loadExpectedHashTreeRoot(dir: string): SSZHashTreeRoot =
|
|||
# ----------------------------------------------------------------
|
||||
|
||||
suite "Ethereum Foundation - Phase 0 - SSZ consensus objects " & preset():
|
||||
doAssert existsDir(SSZDir), "You need to run the \"download_test_vectors.sh\" script to retrieve the official test vectors."
|
||||
doAssert existsDir(SSZDir), "You need to run the \"download_test_vectors.sh\" script to retrieve the consensus spec test vectors."
|
||||
for pathKind, sszType in walkDir(SSZDir, relative = true, checkDir = true):
|
||||
doAssert pathKind == pcDir
|
||||
|
||||
|
@ -133,5 +133,3 @@ suite "Ethereum Foundation - Phase 0 - SSZ consensus objects " & preset():
|
|||
of "VoluntaryExit": checkSSZ(VoluntaryExit, path, hash)
|
||||
else:
|
||||
raise newException(ValueError, "Unsupported test: " & sszType)
|
||||
|
||||
summarizeLongTests("FixtureSSZConsensus")
|
|
@ -19,9 +19,6 @@ import
|
|||
../test_fixture_rewards,
|
||||
../../helpers/debug_state
|
||||
|
||||
from ../../../beacon_chain/spec/beaconstate import process_registry_updates
|
||||
# XXX: move to state_transition_epoch?
|
||||
|
||||
template runSuite(suiteDir, testName: string, transitionProc: untyped{ident}, useCache: static bool): untyped =
|
||||
suite "Ethereum Foundation - Phase 0 - Epoch Processing - " & testName & preset():
|
||||
for testDir in walkDirRec(suiteDir, yieldFilter = {pcDir}, checkDir = true):
|
|
@ -41,10 +41,6 @@ func init(T: type Deltas, len: int): T =
|
|||
raiseAssert "setLen"
|
||||
|
||||
proc runTest(rewardsDir, identifier: string) =
|
||||
# We wrap the tests in a proc to avoid running out of globals
|
||||
# in the future: Nim supports up to 3500 globals
|
||||
# but unittest with the macro/templates put everything as globals
|
||||
# https://github.com/nim-lang/Nim/issues/12084#issue-486866402
|
||||
let testDir = rewardsDir / identifier
|
||||
|
||||
proc `testImpl _ rewards _ identifier`() =
|
|
@ -5,6 +5,8 @@
|
|||
# * 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, strutils, streams, strformat, strscans,
|
||||
|
@ -244,7 +246,7 @@ proc sszCheck(baseDir, sszType, sszSubType: string) =
|
|||
# ------------------------------------------------------------------------
|
||||
|
||||
suite "Ethereum Foundation - SSZ generic types":
|
||||
doAssert existsDir(SSZDir), "You need to run the \"download_test_vectors.sh\" script to retrieve the official test vectors."
|
||||
doAssert existsDir(SSZDir), "You need to run the \"download_test_vectors.sh\" script to retrieve the consensus spec test vectors."
|
||||
for pathKind, sszType in walkDir(SSZDir, relative = true, checkDir = true):
|
||||
doAssert pathKind == pcDir
|
||||
|
|
@ -1,5 +1,3 @@
|
|||
# clang complains that -flto=auto is not a supported option when creating libFuzzer builds
|
||||
-d:disableLTO
|
||||
-d:ssz_testing
|
||||
-d:"const_preset=mainnet"
|
||||
|
||||
|
|
|
@ -1,81 +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 libs
|
||||
os,
|
||||
# Status libs
|
||||
unittest2,
|
||||
blscurve, stew/byteutils,
|
||||
# Beacon chain internals
|
||||
../../beacon_chain/spec/crypto,
|
||||
# Test utilities
|
||||
./fixtures_utils
|
||||
|
||||
type
|
||||
BLSPrivToPub = object
|
||||
input: ValidatorPrivKey
|
||||
output: ValidatorPubKey
|
||||
|
||||
BLSSignMsgInput = object
|
||||
privkey: ValidatorPrivKey
|
||||
message: seq[byte]
|
||||
domain: Eth2Domain
|
||||
|
||||
BLSSignMsg = object
|
||||
input: BLSSignMsgInput
|
||||
output: Signature
|
||||
|
||||
BLSAggSig = object
|
||||
input: seq[Signature]
|
||||
output: Signature
|
||||
|
||||
BLSAggPubKey = object
|
||||
input: seq[ValidatorPubKey]
|
||||
output: ValidatorPubKey
|
||||
|
||||
func readValue(r: var JsonReader, a: var Eth2Domain) =
|
||||
## Custom deserializer for Eth2Domain
|
||||
# Furthermore Nim parseHex doesn't support uint
|
||||
# until https://github.com/nim-lang/Nim/pull/11067
|
||||
# (0.20)
|
||||
a = hexToPaddedByteArray[8](r.readValue(string))
|
||||
|
||||
# TODO: json tests were removed
|
||||
const BLSDir = JsonTestsDir/"general"/"phase0"/"bls"
|
||||
|
||||
suite "Ethereum Foundation - BLS tests":
|
||||
test "Private to public key conversion":
|
||||
for file in walkDirRec(BLSDir/"priv_to_pub", checkDir = true):
|
||||
let t = parseTest(file, Json, BLSPrivToPub)
|
||||
let implResult = t.input.pubkey()
|
||||
check: implResult == t.output
|
||||
|
||||
test "Message signing":
|
||||
for file in walkDirRec(BLSDir/"sign_msg", checkDir = true):
|
||||
let t = parseTest(file, Json, BLSSignMsg)
|
||||
let implResult = t.input.privkey.bls_sign(
|
||||
t.input.message,
|
||||
t.input.domain
|
||||
)
|
||||
check: implResult == t.output
|
||||
|
||||
test "Aggregating signatures":
|
||||
for file in walkDirRec(BLSDir/"aggregate_sigs", checkDir = true):
|
||||
let t = parseTest(file, Json, BLSAggSig)
|
||||
let implResult = t.input.combine()
|
||||
check: implResult == t.output
|
||||
|
||||
test "Aggregating public keys":
|
||||
for file in walkDirRec(BLSDir/"aggregate_pubkeys", checkDir = true):
|
||||
let t = parseTest(file, Json, BLSAggPubKey)
|
||||
let implResult = t.input.combine()
|
||||
check: implResult == t.output
|
||||
|
||||
# TODO: msg_hash_compressed and uncompressed
|
|
@ -5,6 +5,8 @@
|
|||
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)
|
||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||
|
||||
{.used.}
|
||||
|
||||
import
|
||||
# Standard library
|
||||
std/[os],
|
||||
|
@ -17,7 +19,7 @@ import
|
|||
../../beacon_chain/spec/datatypes/base,
|
||||
# Test utilies
|
||||
../testutil, ../testdbutil,
|
||||
../official/fixtures_utils
|
||||
../consensus_spec/fixtures_utils
|
||||
|
||||
type
|
||||
TestInterchange = object
|
||||
|
@ -137,7 +139,7 @@ proc statusOkOrDuplicateOrMinEpochViolation(
|
|||
proc runTest(identifier: string) =
|
||||
|
||||
# The tests produce a lot of log noise
|
||||
echo "\n\n===========================================\n\n"
|
||||
# echo "\n\n===========================================\n\n"
|
||||
|
||||
test "Slashing test: " & identifier:
|
||||
let t = parseTest(InterchangeTestsDir/identifier, Json, TestInterchange)
|
Loading…
Reference in New Issue