diff --git a/.gitmodules b/.gitmodules index f7244d8715..fdf5bca27f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -212,9 +212,9 @@ branch = main [submodule "vendor/nim-kzg4844"] path = vendor/nim-kzg4844 - url = https://github.com/status-im/nim-kzg4844.git + url = https://github.com/agnxsh/nim-kzg4844.git ignore = untracked - branch = peerdas + branch = ckzg-7594/upstream [submodule "vendor/nim-results"] path = vendor/nim-results url = https://github.com/arnetheduck/nim-results.git diff --git a/AllTests-mainnet.md b/AllTests-mainnet.md index fefc391bc6..d7be2b5412 100644 --- a/AllTests-mainnet.md +++ b/AllTests-mainnet.md @@ -55,6 +55,7 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + sanity check Deneb states [Preset: mainnet] OK + sanity check Deneb states, reusing buffers [Preset: mainnet] OK + sanity check blobs [Preset: mainnet] OK ++ sanity check data columns [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 @@ -62,7 +63,7 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + sanity check phase 0 states, reusing buffers [Preset: mainnet] OK + sanity check state diff roundtrip [Preset: mainnet] OK ``` -OK: 25/25 Fail: 0/25 Skip: 0/25 +OK: 26/26 Fail: 0/26 Skip: 0/26 ## Beacon state [Preset: mainnet] ```diff + Smoke test initialize_beacon_state_from_eth1 [Preset: mainnet] OK @@ -444,17 +445,6 @@ OK: 9/9 Fail: 0/9 Skip: 0/9 OK: 253/253 Fail: 0/253 Skip: 0/253 ## EF - KZG - EIP7594 ```diff -+ KZG - Compute Cells - compute_cells_case_invalid_blob_26555bdcbf18a267 OK -+ KZG - Compute Cells - compute_cells_case_invalid_blob_79fb3cb1ef585a86 OK -+ KZG - Compute Cells - compute_cells_case_invalid_blob_7e99dea8893c104a OK -+ KZG - Compute Cells - compute_cells_case_invalid_blob_9d88c33852eb782d OK -+ KZG - Compute Cells - compute_cells_case_valid_419245fbfe69f145 OK -+ KZG - Compute Cells - compute_cells_case_valid_4aedd1a2a3933c3e OK -+ KZG - Compute Cells - compute_cells_case_valid_6e773f256383918c OK -+ KZG - Compute Cells - compute_cells_case_valid_b0731ef77b166ca8 OK -+ KZG - Compute Cells - compute_cells_case_valid_b81d309b22788820 OK -+ KZG - Compute Cells - compute_cells_case_valid_ed8b5001151417d5 OK -+ KZG - Compute Cells - compute_cells_case_valid_edeb8500a6507818 OK + KZG - Compute Cells And Proofs - compute_cells_and_kzg_proofs_case_invalid_blob_26555bdcbf OK + KZG - Compute Cells And Proofs - compute_cells_and_kzg_proofs_case_invalid_blob_79fb3cb1ef OK + KZG - Compute Cells And Proofs - compute_cells_and_kzg_proofs_case_invalid_blob_7e99dea889 OK @@ -466,93 +456,8 @@ OK: 253/253 Fail: 0/253 Skip: 0/253 + KZG - Compute Cells And Proofs - compute_cells_and_kzg_proofs_case_valid_b81d309b22788820 OK + KZG - Compute Cells And Proofs - compute_cells_and_kzg_proofs_case_valid_ed8b5001151417d5 OK + KZG - Compute Cells And Proofs - compute_cells_and_kzg_proofs_case_valid_edeb8500a6507818 OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_all_cells_are_missing_f46bf2cbb03 OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_cell_0f26a378535d3131 OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_cell_7a3f7f2910fe230a OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_cell_8be2d351449aa7b6 OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_cell_e1ac5e027103239d OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_cell_id_be00192b1a139275 OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_duplicate_cell_id_988d8aa16e4ef84 OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_more_cell_ids_than_cells_8eaea8a3 OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_more_cells_than_cell_ids_a2b10ac8 OK -+ KZG - Recover All Cells - recover_all_cells_case_invalid_more_than_half_missing_474f5c5c2a OK -+ KZG - Recover All Cells - recover_all_cells_case_valid_half_missing_every_other_cell_ae1b7 OK -+ KZG - Recover All Cells - recover_all_cells_case_valid_half_missing_first_half_bbb851083a6 OK -+ KZG - Recover All Cells - recover_all_cells_case_valid_half_missing_second_half_696b33f5da OK -+ KZG - Recover All Cells - recover_all_cells_case_valid_no_missing_9546b3ad9977aa40 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_cell_30dd1bdc76ff70fb OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_cell_5138cdd3534e8705 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_cell_76140fc51e7da7a5 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_commitment_307f4ebc067c OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_commitment_351fd262b984 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_commitment_71fec3ac464b OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_commitment_736703b3e23d OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_commitment_7c1a1ac24c1f OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_commitment_9624a42384c3 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_commitment_aef3e72488c4 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_proof_0223e6a42aeb7c72 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_proof_0ed7c15183b218d9 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_proof_29635b8440e1e10f OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_proof_504a37d7088fa4e7 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_proof_65e1ad97362a27d8 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_proof_ab041dcc87d0a4fc OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_incorrect_proof_dcf5a8bd294aaa6f OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_cell_1535daa3d170da94 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_cell_1962af1b36fc07b2 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_cell_b9598308bd764e64 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_cell_e29abaaa0519a74f OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_cell_id_683cc4551f0ad97e OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_cell_id_f134fd5b36145b80 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_commitment_ac0c6311a92593 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_commitment_afe4829eb27b14 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_commitment_ebd7c7f8c02f05 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_commitment_fd08e705ede464 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_proof_0c35bb98c57669db OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_proof_25efe063234b38bb OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_proof_50589f444e37d476 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_invalid_proof_f900beacae9218db OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_valid_0c0acf27962a7e82 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_valid_402b30d8dc9e972d OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_valid_7db1d069d57ec097 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_valid_b4c7e9397878471c OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_valid_cc46f83ded6d6191 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_valid_dcf3e16a678fadc5 OK -+ KZG - Verify Cell Kzg Proof - verify_cell_kzg_proof_case_valid_f6d5ccfa04edf349 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_incorrect_cell_9ff2df OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_incorrect_proof_59c63 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_incorrect_row_commitm OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_cell_2e1699f9 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_cell_5f0a7e48 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_cell_745046c5 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_cell_83f39012 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_column_index_ OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_missing_cell_ OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_missing_colum OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_missing_proof OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_missing_row_c OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_missing_row_i OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_proof_135836e OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_proof_d592b72 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_proof_e65b54c OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_proof_eded2aa OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_row_commitmen OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_row_commitmen OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_row_commitmen OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_row_commitmen OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_invalid_row_index_55c OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_21b209cb4f64d0e OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_49f1f992af68d85 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_7dc4b00d04efff0 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_abe54dfc8ce6f34 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_ae0a9c4f3313b3d OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_aedf5f25f4e3eea OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_fad5448f3ceb097 OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_multiple_blobs_ OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_same_cell_multi OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_unused_row_comm OK -+ KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_zero_cells_92ee OK -``` -OK: 107/107 Fail: 0/107 Skip: 0/107 +``` +OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - SSZ generic types ```diff Testing basic_vector inputs - invalid Skip @@ -956,9 +861,10 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 ## Spec helpers ```diff + build_proof - BeaconState OK ++ hypergeom_cdf OK + integer_squareroot OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 +OK: 3/3 Fail: 0/3 Skip: 0/3 ## Specific field types ```diff + root update OK @@ -986,34 +892,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + isSeen OK ``` OK: 7/7 Fail: 0/7 Skip: 0/7 -## SyncManager test suite -```diff -+ Process all unviable blocks OK -+ [SyncManager] groupBlobs() test OK -+ [SyncQueue#Backward] Async unordered push test OK -+ [SyncQueue#Backward] Async unordered push with rewind test OK -+ [SyncQueue#Backward] Good response with missing values towards end OK -+ [SyncQueue#Backward] Handle out-of-band sync progress advancement OK -+ [SyncQueue#Backward] Pass through established limits test OK -+ [SyncQueue#Backward] Smoke test OK -+ [SyncQueue#Backward] Start and finish slots equal OK -+ [SyncQueue#Backward] Two full requests success/fail OK -+ [SyncQueue#Backward] getRewindPoint() test OK -+ [SyncQueue#Forward] Async unordered push test OK -+ [SyncQueue#Forward] Async unordered push with rewind test OK -+ [SyncQueue#Forward] Good response with missing values towards end OK -+ [SyncQueue#Forward] Handle out-of-band sync progress advancement OK -+ [SyncQueue#Forward] Pass through established limits test OK -+ [SyncQueue#Forward] Smoke test OK -+ [SyncQueue#Forward] Start and finish slots equal OK -+ [SyncQueue#Forward] Two full requests success/fail OK -+ [SyncQueue#Forward] getRewindPoint() test OK -+ [SyncQueue] checkResponse() test OK -+ [SyncQueue] contains() test OK -+ [SyncQueue] getLastNonEmptySlot() test OK -+ [SyncQueue] hasEndGap() test OK -``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## Type helpers ```diff + BeaconBlock OK @@ -1154,4 +1032,4 @@ OK: 2/2 Fail: 0/2 Skip: 0/2 OK: 9/9 Fail: 0/9 Skip: 0/9 ---TOTAL--- -OK: 803/808 Fail: 0/808 Skip: 5/808 +OK: 685/690 Fail: 0/690 Skip: 5/690 diff --git a/ConsensusSpecPreset-mainnet.md b/ConsensusSpecPreset-mainnet.md index ff367d8a2f..f50e5f3fc5 100644 --- a/ConsensusSpecPreset-mainnet.md +++ b/ConsensusSpecPreset-mainnet.md @@ -122,15 +122,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Slashings reset - flush_slashings [Preset: mainnet] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Altair - Finality [Preset: mainnet] -```diff -+ [Valid] EF - Altair - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK -+ [Valid] EF - Altair - Finality - finality_rule_1 [Preset: mainnet] OK -+ [Valid] EF - Altair - Finality - finality_rule_2 [Preset: mainnet] OK -+ [Valid] EF - Altair - Finality - finality_rule_3 [Preset: mainnet] OK -+ [Valid] EF - Altair - Finality - finality_rule_4 [Preset: mainnet] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Altair - Fork [Preset: mainnet] ```diff + EF - Altair - Fork - altair_fork_random_0 [Preset: mainnet] OK @@ -323,26 +314,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Altair - Operations - Voluntary Exit - success_exit_queue__min_churn OK ``` OK: 9/9 Fail: 0/9 Skip: 0/9 -## EF - Altair - Random [Preset: mainnet] -```diff -+ [Valid] EF - Altair - Random - randomized_0 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_1 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_10 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_11 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_12 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_13 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_14 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_15 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_2 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_3 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_4 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_5 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_6 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_7 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_8 [Preset: mainnet] OK -+ [Valid] EF - Altair - Random - randomized_9 [Preset: mainnet] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Altair - Rewards [Preset: mainnet] ```diff + EF - Altair - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -424,93 +395,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing VoluntaryExit OK ``` OK: 39/39 Fail: 0/39 Skip: 0/39 -## EF - Altair - Sanity - Blocks [Preset: mainnet] -```diff -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block [ OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: ma OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pre OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_incorrect_block_sig [Preset: mainnet] OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expect OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propos OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_incorrect_state_root [Preset: mainnet] OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: mai OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_parent_from_same_slot [Preset: mainnet] OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: main OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_same_slot_block_transition [Preset: main OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [P OK -+ [Invalid] EF - Altair - Sanity - Blocks - slash_and_exit_same_index [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - attestation [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - attester_slashing [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - balance_driven_status_transitions [Preset: mainn OK -+ [Valid] EF - Altair - Sanity - Blocks - deposit_in_block [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - deposit_top_up [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - duplicate_attestation_same_block [Preset: mainne OK -+ [Valid] EF - Altair - Sanity - Blocks - empty_block_transition [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - empty_epoch_transition [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - full_random_operations_0 [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - full_random_operations_1 [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - full_random_operations_2 [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - full_random_operations_3 [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - high_proposer_index [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - historical_batch [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - inactivity_scores_full_participation_leaking [Pr OK -+ [Valid] EF - Altair - Sanity - Blocks - inactivity_scores_leaking [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: OK -+ [Valid] EF - Altair - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pre OK -+ [Valid] EF - Altair - Sanity - Blocks - multiple_different_proposer_slashings_same_block OK -+ [Valid] EF - Altair - Sanity - Blocks - multiple_different_validator_exits_same_block [P OK -+ [Valid] EF - Altair - Sanity - Blocks - proposer_after_inactive_index [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - proposer_self_slashing [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - proposer_slashing [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - skipped_slots [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee__empty [Preset: mainnet OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee__full [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee__half [Preset: mainnet] OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee_genesis__empty [Preset: OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK -+ [Valid] EF - Altair - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK -``` -OK: 47/47 Fail: 0/47 Skip: 0/47 -## EF - Altair - Sanity - Slots [Preset: mainnet] -```diff -+ EF - Altair - Slots - double_empty_epoch [Preset: mainnet] OK -+ EF - Altair - Slots - empty_epoch [Preset: mainnet] OK -+ EF - Altair - Slots - historical_accumulator [Preset: mainnet] OK -+ EF - Altair - Slots - over_epoch_boundary [Preset: mainnet] OK -+ EF - Altair - Slots - slots_1 [Preset: mainnet] OK -+ EF - Altair - Slots - slots_2 [Preset: mainnet] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Altair - Transition [Preset: mainnet] -```diff -+ EF - Altair - Transition - non_empty_historical_roots [Preset: mainnet] OK -+ EF - Altair - Transition - normal_transition [Preset: mainnet] OK -+ EF - Altair - Transition - simple_transition [Preset: mainnet] OK -+ EF - Altair - Transition - transition_missing_first_post_block [Preset: mainnet] OK -+ EF - Altair - Transition - transition_missing_last_pre_fork_block [Preset: mainnet] OK -+ EF - Altair - Transition - transition_only_blocks_post_fork [Preset: mainnet] OK -+ EF - Altair - Transition - transition_randomized_state [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_activation_at_fork_epoch [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_attester_slashing_right_after_fork [Preset: mai OK -+ EF - Altair - Transition - transition_with_attester_slashing_right_before_fork [Preset: ma OK -+ EF - Altair - Transition - transition_with_deposit_right_after_fork [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_deposit_right_before_fork [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_finality [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_leaking_at_fork [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_leaking_pre_fork [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_no_attestations_until_after_fork [Preset: mainn OK -+ EF - Altair - Transition - transition_with_non_empty_activation_queue [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [Pre OK -+ EF - Altair - Transition - transition_with_proposer_slashing_right_after_fork [Preset: mai OK -+ EF - Altair - Transition - transition_with_proposer_slashing_right_before_fork [Preset: ma OK -+ EF - Altair - Transition - transition_with_random_half_participation [Preset: mainnet] OK -+ EF - Altair - Transition - transition_with_random_three_quarters_participation [Preset: ma OK -``` -OK: 22/22 Fail: 0/22 Skip: 0/22 ## EF - Altair - Unittests - Light client - Sync protocol [Preset: mainnet] ```diff + process_light_client_update_finality_updated OK @@ -641,15 +525,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Slashings reset - flush_slashings [Preset: mainnet] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Bellatrix - Finality [Preset: mainnet] -```diff -+ [Valid] EF - Bellatrix - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Finality - finality_rule_1 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Finality - finality_rule_2 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Finality - finality_rule_3 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Finality - finality_rule_4 [Preset: mainnet] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Bellatrix - Fork [Preset: mainnet] ```diff + EF - Bellatrix - Fork - bellatrix_fork_random_0 [Preset: mainnet] OK @@ -877,26 +752,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Bellatrix - Operations - Voluntary Exit - voluntary_exit_with_previous_fork OK ``` OK: 15/15 Fail: 0/15 Skip: 0/15 -## EF - Bellatrix - Random [Preset: mainnet] -```diff -+ [Valid] EF - Bellatrix - Random - randomized_0 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_1 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_10 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_11 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_12 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_13 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_14 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_15 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_2 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_3 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_4 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_5 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_6 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_7 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_8 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Random - randomized_9 [Preset: mainnet] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Bellatrix - Rewards [Preset: mainnet] ```diff + EF - Bellatrix - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -935,142 +790,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: mainnet] OK ``` OK: 34/34 Fail: 0/34 Skip: 0/34 -## EF - Bellatrix - 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 LightClientBootstrap OK -+ Testing LightClientFinalityUpdate OK -+ Testing LightClientHeader OK -+ Testing LightClientOptimisticUpdate 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: 42/42 Fail: 0/42 Skip: 0/42 -## EF - Bellatrix - Sanity - Blocks [Preset: mainnet] -```diff -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_duplicate_attester_slashing_same_bloc OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_blo OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [ OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_incorrect_block_sig [Preset: mainnet] OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_exp OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_pro OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_incorrect_state_root [Preset: mainnet OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_parent_from_same_slot [Preset: mainne OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: m OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_same_slot_block_transition [Preset: m OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_similar_proposer_slashings_same_block OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - slash_and_exit_same_index [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - attestation [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - attester_slashing [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - balance_driven_status_transitions [Preset: ma OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - block_transition_randomized_payload [Preset: OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - deposit_in_block [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - deposit_top_up [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - duplicate_attestation_same_block [Preset: mai OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_block_transition [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_block_transition_no_tx [Preset: mainnet OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_epoch_transition [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - full_random_operations_0 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - full_random_operations_1 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - full_random_operations_2 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - full_random_operations_3 [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - high_proposer_index [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - historical_batch [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - inactivity_scores_full_participation_leaking OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - inactivity_scores_leaking [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - is_execution_enabled_false [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - multiple_attester_slashings_no_overlap [Prese OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - multiple_attester_slashings_partial_overlap [ OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - multiple_different_proposer_slashings_same_bl OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - multiple_different_validator_exits_same_block OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - proposer_after_inactive_index [Preset: mainne OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - proposer_self_slashing [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - proposer_slashing [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - skipped_slots [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee__empty [Preset: main OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee__full [Preset: mainn OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee__half [Preset: mainn OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee_genesis__empty [Pres OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee_genesis__full [Prese OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee_genesis__half [Prese OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK -``` -OK: 50/50 Fail: 0/50 Skip: 0/50 -## EF - Bellatrix - Sanity - Slots [Preset: mainnet] -```diff -+ EF - Bellatrix - Slots - double_empty_epoch [Preset: mainnet] OK -+ EF - Bellatrix - Slots - empty_epoch [Preset: mainnet] OK -+ EF - Bellatrix - Slots - historical_accumulator [Preset: mainnet] OK -+ EF - Bellatrix - Slots - over_epoch_boundary [Preset: mainnet] OK -+ EF - Bellatrix - Slots - slots_1 [Preset: mainnet] OK -+ EF - Bellatrix - Slots - slots_2 [Preset: mainnet] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Bellatrix - Transition [Preset: mainnet] -```diff -+ EF - Bellatrix - Transition - non_empty_historical_roots [Preset: mainnet] OK -+ EF - Bellatrix - Transition - normal_transition [Preset: mainnet] OK -+ EF - Bellatrix - Transition - simple_transition [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_missing_first_post_block [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_missing_last_pre_fork_block [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_only_blocks_post_fork [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_randomized_state [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_activation_at_fork_epoch [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_attester_slashing_right_after_fork [Preset: OK -+ EF - Bellatrix - Transition - transition_with_attester_slashing_right_before_fork [Preset: OK -+ EF - Bellatrix - Transition - transition_with_deposit_right_after_fork [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_deposit_right_before_fork [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_finality [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_leaking_at_fork [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_leaking_pre_fork [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_no_attestations_until_after_fork [Preset: ma OK -+ EF - Bellatrix - Transition - transition_with_non_empty_activation_queue [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [ OK -+ EF - Bellatrix - Transition - transition_with_proposer_slashing_right_after_fork [Preset: OK -+ EF - Bellatrix - Transition - transition_with_proposer_slashing_right_before_fork [Preset: OK -+ EF - Bellatrix - Transition - transition_with_random_half_participation [Preset: mainnet] OK -+ EF - Bellatrix - Transition - transition_with_random_three_quarters_participation [Preset: OK -``` -OK: 22/22 Fail: 0/22 Skip: 0/22 ## EF - Capella - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK @@ -1193,15 +912,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Slashings reset - flush_slashings [Preset: mainnet] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Capella - Finality [Preset: mainnet] -```diff -+ [Valid] EF - Capella - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK -+ [Valid] EF - Capella - Finality - finality_rule_1 [Preset: mainnet] OK -+ [Valid] EF - Capella - Finality - finality_rule_2 [Preset: mainnet] OK -+ [Valid] EF - Capella - Finality - finality_rule_3 [Preset: mainnet] OK -+ [Valid] EF - Capella - Finality - finality_rule_4 [Preset: mainnet] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Capella - Fork [Preset: mainnet] ```diff + EF - Capella - Fork - capella_fork_random_0 [Preset: mainnet] OK @@ -1503,26 +1213,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ``` OK: 50/50 Fail: 0/50 Skip: 0/50 -## EF - Capella - Random [Preset: mainnet] -```diff -+ [Valid] EF - Capella - Random - randomized_0 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_1 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_10 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_11 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_12 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_13 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_14 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_15 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_2 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_3 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_4 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_5 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_6 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_7 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_8 [Preset: mainnet] OK -+ [Valid] EF - Capella - Random - randomized_9 [Preset: mainnet] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Capella - Rewards [Preset: mainnet] ```diff + EF - Capella - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -1611,108 +1301,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK ``` OK: 46/46 Fail: 0/46 Skip: 0/46 -## EF - Capella - Sanity - Blocks [Preset: mainnet] -```diff -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_bls_changes_same_block [Prese OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: m OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pr OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_incorrect_block_sig [Preset: mainnet] OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expec OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propo OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_incorrect_state_root [Preset: mainnet] OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_is_execution_enabled_false [Preset: mai OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: ma OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_parent_from_same_slot [Preset: mainnet] OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: mai OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_same_slot_block_transition [Preset: mai OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [ OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_two_bls_changes_of_different_addresses_ OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_withdrawal_fail_second_block_payload_is OK -+ [Invalid] EF - Capella - Sanity - Blocks - slash_and_exit_same_index [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - attestation [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - attester_slashing [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - balance_driven_status_transitions [Preset: main OK -+ [Valid] EF - Capella - Sanity - Blocks - block_transition_randomized_payload [Preset: ma OK -+ [Valid] EF - Capella - Sanity - Blocks - bls_change [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - deposit_and_bls_change [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - deposit_in_block [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - deposit_top_up [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - duplicate_attestation_same_block [Preset: mainn OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_block_transition [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_block_transition_no_tx [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_epoch_transition [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - exit_and_bls_change [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_random_operations_0 [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_random_operations_1 [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_random_operations_2 [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_random_operations_3 [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_withdrawal_in_epoch_transition [Preset: ma OK -+ [Valid] EF - Capella - Sanity - Blocks - high_proposer_index [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - historical_batch [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - inactivity_scores_full_participation_leaking [P OK -+ [Valid] EF - Capella - Sanity - Blocks - inactivity_scores_leaking [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - many_partial_withdrawals_in_epoch_transition [P OK -+ [Valid] EF - Capella - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pr OK -+ [Valid] EF - Capella - Sanity - Blocks - multiple_different_proposer_slashings_same_bloc OK -+ [Valid] EF - Capella - Sanity - Blocks - multiple_different_validator_exits_same_block [ OK -+ [Valid] EF - Capella - Sanity - Blocks - partial_withdrawal_in_epoch_transition [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - proposer_after_inactive_index [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - proposer_self_slashing [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - proposer_slashing [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - skipped_slots [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee__empty [Preset: mainne OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee__full [Preset: mainnet OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee__half [Preset: mainnet OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee_genesis__empty [Preset OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - top_up_and_partial_withdrawable_validator [Pres OK -+ [Valid] EF - Capella - Sanity - Blocks - top_up_to_fully_withdrawn_validator [Preset: ma OK -+ [Valid] EF - Capella - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK -+ [Valid] EF - Capella - Sanity - Blocks - withdrawal_success_two_blocks [Preset: mainnet] OK -``` -OK: 62/62 Fail: 0/62 Skip: 0/62 -## EF - Capella - Sanity - Slots [Preset: mainnet] -```diff -+ EF - Capella - Slots - double_empty_epoch [Preset: mainnet] OK -+ EF - Capella - Slots - empty_epoch [Preset: mainnet] OK -+ EF - Capella - Slots - historical_accumulator [Preset: mainnet] OK -+ EF - Capella - Slots - over_epoch_boundary [Preset: mainnet] OK -+ EF - Capella - Slots - slots_1 [Preset: mainnet] OK -+ EF - Capella - Slots - slots_2 [Preset: mainnet] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Capella - Transition [Preset: mainnet] -```diff -+ EF - Capella - Transition - non_empty_historical_roots [Preset: mainnet] OK -+ EF - Capella - Transition - normal_transition [Preset: mainnet] OK -+ EF - Capella - Transition - simple_transition [Preset: mainnet] OK -+ EF - Capella - Transition - transition_missing_first_post_block [Preset: mainnet] OK -+ EF - Capella - Transition - transition_missing_last_pre_fork_block [Preset: mainnet] OK -+ EF - Capella - Transition - transition_only_blocks_post_fork [Preset: mainnet] OK -+ EF - Capella - Transition - transition_randomized_state [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_activation_at_fork_epoch [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_attester_slashing_right_after_fork [Preset: ma OK -+ EF - Capella - Transition - transition_with_attester_slashing_right_before_fork [Preset: m OK -+ EF - Capella - Transition - transition_with_deposit_right_after_fork [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_deposit_right_before_fork [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_finality [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_leaking_at_fork [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_leaking_pre_fork [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_no_attestations_until_after_fork [Preset: main OK -+ EF - Capella - Transition - transition_with_non_empty_activation_queue [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [Pr OK -+ EF - Capella - Transition - transition_with_proposer_slashing_right_after_fork [Preset: ma OK -+ EF - Capella - Transition - transition_with_proposer_slashing_right_before_fork [Preset: m OK -+ EF - Capella - Transition - transition_with_random_half_participation [Preset: mainnet] OK -+ EF - Capella - Transition - transition_with_random_three_quarters_participation [Preset: m OK -``` -OK: 22/22 Fail: 0/22 Skip: 0/22 ## EF - Capella - Unittests - Light client - Sync protocol [Preset: mainnet] ```diff + process_light_client_update_finality_updated OK @@ -1843,15 +1431,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Slashings reset - flush_slashings [Preset: mainnet] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Deneb - Finality [Preset: mainnet] -```diff -+ [Valid] EF - Deneb - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK -+ [Valid] EF - Deneb - Finality - finality_rule_1 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Finality - finality_rule_2 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Finality - finality_rule_3 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Finality - finality_rule_4 [Preset: mainnet] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Deneb - Fork [Preset: mainnet] ```diff + EF - Deneb - Fork - deneb_fork_random_0 [Preset: mainnet] OK @@ -2164,26 +1743,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Deneb - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balan OK ``` OK: 50/50 Fail: 0/50 Skip: 0/50 -## EF - Deneb - Random [Preset: mainnet] -```diff -+ [Valid] EF - Deneb - Random - randomized_0 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_1 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_10 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_11 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_12 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_13 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_14 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_15 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_2 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_3 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_4 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_5 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_6 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_7 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_8 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Random - randomized_9 [Preset: mainnet] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Deneb - Rewards [Preset: mainnet] ```diff + EF - Deneb - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -2274,120 +1833,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK ``` OK: 48/48 Fail: 0/48 Skip: 0/48 -## EF - Deneb - Sanity - Blocks [Preset: mainnet] -```diff -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block [P OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_bls_changes_same_block [Preset: OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: mai OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block [ OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pres OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_exceed_max_blobs_per_block [Preset: mainn OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_incorrect_block_sig [Preset: mainnet] OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expecte OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propose OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_incorrect_state_root [Preset: mainnet] OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_is_execution_enabled_false [Preset: mainn OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_max_blobs_per_block_two_txs [Preset: main OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_one_blob_max_plus_one_txs [Preset: mainne OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: main OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_parent_from_same_slot [Preset: mainnet] OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: mainn OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_same_slot_block_transition [Preset: mainn OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [Pr OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_two_bls_changes_of_different_addresses_sa OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_withdrawal_fail_second_block_payload_isnt OK -+ [Invalid] EF - Deneb - Sanity - Blocks - slash_and_exit_same_index [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - attestation [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - attester_slashing [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - balance_driven_status_transitions [Preset: mainne OK -+ [Valid] EF - Deneb - Sanity - Blocks - block_transition_randomized_payload [Preset: main OK -+ [Valid] EF - Deneb - Sanity - Blocks - bls_change [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - deposit_and_bls_change [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - deposit_in_block [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - deposit_top_up [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - duplicate_attestation_same_block [Preset: mainnet OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_block_transition [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_block_transition_no_tx [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_epoch_transition [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - exit_and_bls_change [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_random_operations_0 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_random_operations_1 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_random_operations_2 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_random_operations_3 [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_withdrawal_in_epoch_transition [Preset: main OK -+ [Valid] EF - Deneb - Sanity - Blocks - high_proposer_index [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - historical_batch [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - inactivity_scores_full_participation_leaking [Pre OK -+ [Valid] EF - Deneb - Sanity - Blocks - inactivity_scores_leaking [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - many_partial_withdrawals_in_epoch_transition [Pre OK -+ [Valid] EF - Deneb - Sanity - Blocks - max_blobs_per_block [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - mix_blob_tx_and_non_blob_tx [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: m OK -+ [Valid] EF - Deneb - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pres OK -+ [Valid] EF - Deneb - Sanity - Blocks - multiple_different_proposer_slashings_same_block OK -+ [Valid] EF - Deneb - Sanity - Blocks - multiple_different_validator_exits_same_block [Pr OK -+ [Valid] EF - Deneb - Sanity - Blocks - one_blob [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - one_blob_max_txs [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - one_blob_two_txs [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - partial_withdrawal_in_epoch_transition [Preset: m OK -+ [Valid] EF - Deneb - Sanity - Blocks - proposer_after_inactive_index [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - proposer_self_slashing [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - proposer_slashing [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - skipped_slots [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee__empty [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee__full [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee__half [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee_genesis__empty [Preset: OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: m OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: m OK -+ [Valid] EF - Deneb - Sanity - Blocks - top_up_and_partial_withdrawable_validator [Preset OK -+ [Valid] EF - Deneb - Sanity - Blocks - top_up_to_fully_withdrawn_validator [Preset: main OK -+ [Valid] EF - Deneb - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - withdrawal_success_two_blocks [Preset: mainnet] OK -+ [Valid] EF - Deneb - Sanity - Blocks - zero_blob [Preset: mainnet] OK -``` -OK: 71/71 Fail: 0/71 Skip: 0/71 -## EF - Deneb - Sanity - Slots [Preset: mainnet] -```diff -+ EF - Deneb - Slots - double_empty_epoch [Preset: mainnet] OK -+ EF - Deneb - Slots - empty_epoch [Preset: mainnet] OK -+ EF - Deneb - Slots - historical_accumulator [Preset: mainnet] OK -+ EF - Deneb - Slots - over_epoch_boundary [Preset: mainnet] OK -+ EF - Deneb - Slots - slots_1 [Preset: mainnet] OK -+ EF - Deneb - Slots - slots_2 [Preset: mainnet] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Deneb - Transition [Preset: mainnet] -```diff -+ EF - Deneb - Transition - non_empty_historical_roots [Preset: mainnet] OK -+ EF - Deneb - Transition - normal_transition [Preset: mainnet] OK -+ EF - Deneb - Transition - simple_transition [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_attestation_from_previous_fork_with_new_range [Preset OK -+ EF - Deneb - Transition - transition_missing_first_post_block [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_missing_last_pre_fork_block [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_only_blocks_post_fork [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_randomized_state [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_activation_at_fork_epoch [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_attester_slashing_right_after_fork [Preset: main OK -+ EF - Deneb - Transition - transition_with_attester_slashing_right_before_fork [Preset: mai OK -+ EF - Deneb - Transition - transition_with_btec_right_after_fork [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_btec_right_before_fork [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_deposit_right_after_fork [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_deposit_right_before_fork [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_finality [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_leaking_at_fork [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_leaking_pre_fork [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_no_attestations_until_after_fork [Preset: mainne OK -+ EF - Deneb - Transition - transition_with_non_empty_activation_queue [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [Pres OK -+ EF - Deneb - Transition - transition_with_proposer_slashing_right_after_fork [Preset: main OK -+ EF - Deneb - Transition - transition_with_proposer_slashing_right_before_fork [Preset: mai OK -+ EF - Deneb - Transition - transition_with_random_half_participation [Preset: mainnet] OK -+ EF - Deneb - Transition - transition_with_random_three_quarters_participation [Preset: mai OK -``` -OK: 25/25 Fail: 0/25 Skip: 0/25 ## EF - Deneb - Unittests - Light client - Sync protocol [Preset: mainnet] ```diff + process_light_client_update_finality_updated OK @@ -2430,6 +1875,7 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Testing LightClientHeader OK + Testing LightClientOptimisticUpdate OK + Testing LightClientUpdate OK ++ Testing MatrixEntry OK + Testing PendingAttestation OK + Testing PowBlock OK + Testing ProposerSlashing OK @@ -2449,757 +1895,7 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 50/50 Fail: 0/50 Skip: 0/50 -## EF - Electra - Epoch Processing - Effective balance updates [Preset: mainnet] -```diff -+ Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK -+ Effective balance updates - effective_balance_hysteresis_with_compounding_credentials [Pre OK -``` -OK: 2/2 Fail: 0/2 Skip: 0/2 -## EF - Electra - 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 -## EF - Electra - Epoch Processing - Historical summaries update [Preset: mainnet] -```diff -+ Historical summaries update - historical_summaries_accumulator [Preset: mainnet] OK -``` -OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Electra - 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 - randomized_state [Preset: mainnet] OK -+ Inactivity - randomized_state_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: 21/21 Fail: 0/21 Skip: 0/21 -## EF - Electra - 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 -## EF - Electra - 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 -## EF - Electra - Epoch Processing - Pending balance deposits [Preset: mainnet] -```diff -+ Pending balance deposits - multiple_pending_deposits_above_churn [Preset: mainnet] OK -+ Pending balance deposits - multiple_pending_deposits_below_churn [Preset: mainnet] OK -+ Pending balance deposits - pending_deposit_balance_above_churn [Preset: mainnet] OK -+ Pending balance deposits - pending_deposit_balance_equal_churn [Preset: mainnet] OK -+ Pending balance deposits - pending_deposit_min_activation_balance [Preset: mainnet] OK -+ Pending balance deposits - pending_deposit_preexisting_churn [Preset: mainnet] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Electra - Epoch Processing - Pending consolidations [Preset: mainnet] -```diff -+ Pending consolidations - all_consolidation_cases_together [Preset: mainnet] OK -+ Pending consolidations - basic_pending_consolidation [Preset: mainnet] OK -+ Pending consolidations - consolidation_not_yet_withdrawable_validator [Preset: mainnet] OK -+ Pending consolidations - skip_consolidation_when_source_slashed [Preset: mainnet] OK -``` -OK: 4/4 Fail: 0/4 Skip: 0/4 -## EF - Electra - 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 -## EF - Electra - 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 -+ Registry updates - invalid_large_withdrawable_epoch [Preset: mainnet] OK -``` -OK: 11/11 Fail: 0/11 Skip: 0/11 -## EF - Electra - Epoch Processing - Rewards and penalties [Preset: mainnet] -```diff -+ Rewards and penalties - almost_empty_attestations [Preset: mainnet] OK -+ Rewards and penalties - almost_empty_attestations_with_leak [Preset: mainnet] OK -+ Rewards and penalties - almost_full_attestations [Preset: mainnet] OK -+ Rewards and penalties - almost_full_attestations_with_leak [Preset: mainnet] OK -+ Rewards and penalties - attestations_some_slashed [Preset: mainnet] OK -+ Rewards and penalties - duplicate_attestation [Preset: mainnet] OK -+ Rewards and penalties - full_attestation_participation [Preset: mainnet] OK -+ Rewards and penalties - full_attestation_participation_with_leak [Preset: mainnet] OK -+ Rewards and penalties - full_attestations_misc_balances [Preset: mainnet] OK -+ Rewards and penalties - full_attestations_one_validaor_one_gwei [Preset: mainnet] OK -+ Rewards and penalties - genesis_epoch_full_attestations_no_rewards [Preset: mainnet] OK -+ Rewards and penalties - genesis_epoch_no_attestations_no_penalties [Preset: mainnet] OK -+ Rewards and penalties - no_attestations_all_penalties [Preset: mainnet] OK -+ Rewards and penalties - random_fill_attestations [Preset: mainnet] OK -+ Rewards and penalties - random_fill_attestations_with_leak [Preset: mainnet] OK -``` -OK: 15/15 Fail: 0/15 Skip: 0/15 -## EF - Electra - 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 -## EF - Electra - Epoch Processing - Slashings reset [Preset: mainnet] -```diff -+ Slashings reset - flush_slashings [Preset: mainnet] OK -``` -OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Electra - Finality [Preset: mainnet] -```diff -+ [Valid] EF - Electra - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK -+ [Valid] EF - Electra - Finality - finality_rule_1 [Preset: mainnet] OK -+ [Valid] EF - Electra - Finality - finality_rule_2 [Preset: mainnet] OK -+ [Valid] EF - Electra - Finality - finality_rule_3 [Preset: mainnet] OK -+ [Valid] EF - Electra - Finality - finality_rule_4 [Preset: mainnet] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 -## EF - Electra - Fork [Preset: mainnet] -```diff -+ EF - Electra - Fork - electra_fork_random_0 [Preset: mainnet] OK -+ EF - Electra - Fork - electra_fork_random_1 [Preset: mainnet] OK -+ EF - Electra - Fork - electra_fork_random_2 [Preset: mainnet] OK -+ EF - Electra - Fork - electra_fork_random_3 [Preset: mainnet] OK -+ EF - Electra - Fork - electra_fork_random_low_balances [Preset: mainnet] OK -+ EF - Electra - Fork - electra_fork_random_misc_balances [Preset: mainnet] OK -+ EF - Electra - Fork - fork_base_state [Preset: mainnet] OK -+ EF - Electra - Fork - fork_many_next_epoch [Preset: mainnet] OK -+ EF - Electra - Fork - fork_next_epoch [Preset: mainnet] OK -+ EF - Electra - Fork - fork_next_epoch_with_block [Preset: mainnet] OK -+ EF - Electra - Fork - fork_random_low_balances [Preset: mainnet] OK -+ EF - Electra - Fork - fork_random_misc_balances [Preset: mainnet] OK -``` -OK: 12/12 Fail: 0/12 Skip: 0/12 -## EF - Electra - Operations - Attestation [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Attestation - invalid_after_max_inclusion_slot OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_attestation_data_index_not_zer OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_attestation_signature OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_bad_source_root OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_before_inclusion_delay OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_committe_index OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_correct_attestation_included_a OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_current_source_root OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_empty_participants_seemingly_v OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_empty_participants_zeroes_sig OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_future_target_epoch OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_incorrect_head_and_target_incl OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_incorrect_head_included_after_ OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_incorrect_target_included_afte OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_index OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_mismatched_target_and_slot OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_new_source_epoch OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_nonset_committe_bits OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_old_source_epoch OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_old_target_epoch OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_previous_source_root OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_source_root_is_target_root OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_too_few_aggregation_bits OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_too_many_aggregation_bits OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_too_many_committe_bits OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_wrong_index_for_committee_sign OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_wrong_index_for_slot_0 OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_wrong_index_for_slot_1 OK -+ [Valid] EF - Electra - Operations - Attestation - at_max_inclusion_slot OK -+ [Valid] EF - Electra - Operations - Attestation - correct_attestation_included_at_max_in OK -+ [Valid] EF - Electra - Operations - Attestation - correct_attestation_included_at_min_in OK -+ [Valid] EF - Electra - Operations - Attestation - correct_attestation_included_at_one_ep OK -+ [Valid] EF - Electra - Operations - Attestation - correct_attestation_included_at_sqrt_e OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_and_target_included_at_ OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_and_target_included_at_ OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_and_target_min_inclusio OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_included_at_max_inclusi OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_included_at_min_inclusi OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_included_at_sqrt_epoch_ OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_target_included_at_epoch_del OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_target_included_at_min_inclu OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_target_included_at_sqrt_epoc OK -+ [Valid] EF - Electra - Operations - Attestation - multi_proposer_index_iterations OK -+ [Valid] EF - Electra - Operations - Attestation - one_basic_attestation OK -+ [Valid] EF - Electra - Operations - Attestation - previous_epoch OK -``` -OK: 45/45 Fail: 0/45 Skip: 0/45 -## EF - Electra - Operations - Attester Slashing [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_all_empty_indices OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_bad_extra_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_bad_replaced_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_duplicate_index_dou OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_duplicate_index_nor OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_empty_indices OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_high_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_bad_extra_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_bad_replaced_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_duplicate_index_dou OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_duplicate_index_nor OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_empty_indices OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_high_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_incorrect_sig_1 OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_incorrect_sig_1_and_2 OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_incorrect_sig_2 OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_no_double_or_surround OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_participants_already_sla OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_same_data OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_unsorted_att_1 OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_unsorted_att_2 OK -+ [Valid] EF - Electra - Operations - Attester Slashing - already_exited_long_ago OK -+ [Valid] EF - Electra - Operations - Attester Slashing - already_exited_recent OK -+ [Valid] EF - Electra - Operations - Attester Slashing - attestation_from_future OK -+ [Valid] EF - Electra - Operations - Attester Slashing - basic_double OK -+ [Valid] EF - Electra - Operations - Attester Slashing - basic_surround OK -+ [Valid] EF - Electra - Operations - Attester Slashing - low_balances OK -+ [Valid] EF - Electra - Operations - Attester Slashing - misc_balances OK -+ [Valid] EF - Electra - Operations - Attester Slashing - proposer_index_slashed OK -+ [Valid] EF - Electra - Operations - Attester Slashing - with_effective_balance_disparity OK -``` -OK: 30/30 Fail: 0/30 Skip: 0/30 -## EF - Electra - Operations - BLS to execution change [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_already_0x01 OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_bad_signature OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_current_fork_versi OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_genesis_validators OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_incorrect_from_bls OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_previous_fork_vers OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_val_index_out_of_r OK -+ [Valid] EF - Electra - Operations - BLS to execution change - genesis_fork_version OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_exited OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_in_activation_queu OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_in_exit_queue OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_not_activated OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_withdrawable OK -``` -OK: 14/14 Fail: 0/14 Skip: 0/14 -## EF - Electra - Operations - Block Header [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Block Header - invalid_multiple_blocks_single_slot OK -+ [Invalid] EF - Electra - Operations - Block Header - invalid_parent_root OK -+ [Invalid] EF - Electra - Operations - Block Header - invalid_proposer_index OK -+ [Invalid] EF - Electra - Operations - Block Header - invalid_proposer_slashed OK -+ [Invalid] EF - Electra - Operations - Block Header - invalid_slot_block_header OK -+ [Valid] EF - Electra - Operations - Block Header - basic_block_header OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Electra - Operations - Deposit [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Deposit - invalid_bad_merkle_proof OK -+ [Invalid] EF - Electra - Operations - Deposit - invalid_wrong_deposit_for_deposit_count OK -+ [Valid] EF - Electra - Operations - Deposit - correct_sig_but_forked_state OK -+ [Valid] EF - Electra - Operations - Deposit - effective_deposit_with_genesis_fork_versio OK -+ [Valid] EF - Electra - Operations - Deposit - incorrect_sig_new_deposit OK -+ [Valid] EF - Electra - Operations - Deposit - incorrect_sig_top_up OK -+ [Valid] EF - Electra - Operations - Deposit - incorrect_withdrawal_credentials_top_up OK -+ [Valid] EF - Electra - Operations - Deposit - ineffective_deposit_with_bad_fork_version OK -+ [Valid] EF - Electra - Operations - Deposit - ineffective_deposit_with_current_fork_vers OK -+ [Valid] EF - Electra - Operations - Deposit - ineffective_deposit_with_previous_fork_ver OK -+ [Valid] EF - Electra - Operations - Deposit - key_validate_invalid_decompression OK -+ [Valid] EF - Electra - Operations - Deposit - key_validate_invalid_subgroup OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_eth1_withdrawal_credentials OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_max OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_non_versioned_withdrawal_crede OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_over_max OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_under_max OK -+ [Valid] EF - Electra - Operations - Deposit - success_top_up_to_withdrawn_validator OK -+ [Valid] EF - Electra - Operations - Deposit - top_up__less_effective_balance OK -+ [Valid] EF - Electra - Operations - Deposit - top_up__max_effective_balance OK -+ [Valid] EF - Electra - Operations - Deposit - top_up__zero_balance OK -``` -OK: 21/21 Fail: 0/21 Skip: 0/21 -## EF - Electra - Operations - Deposit Receipt [Preset: mainnet] -```diff -+ [Valid] EF - Electra - Operations - Deposit Receipt - correct_sig_but_forked_state OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - effective_deposit_with_genesis_for OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - incorrect_sig_new_deposit OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - incorrect_sig_top_up OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - incorrect_withdrawal_credentials_t OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - ineffective_deposit_with_previous_ OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - key_validate_invalid_decompression OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - key_validate_invalid_subgroup OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_eth1_withdrawal_creden OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_max OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_non_versioned_withdraw OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_over_max OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_under_max OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - success_top_up_to_withdrawn_valida OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - top_up__less_effective_balance OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - top_up__max_effective_balance OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - top_up__zero_balance OK -``` -OK: 17/17 Fail: 0/17 Skip: 0/17 -## EF - Electra - Operations - Execution Layer Withdrawal Request [Preset: mainnet] -```diff -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - activation_epoc OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - basic_withdrawa OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - basic_withdrawa OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - incorrect_sourc OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - incorrect_withd OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - insufficient_ef OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - no_compounding_ OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - no_excess_balan OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - on_withdrawal_r OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - pending_withdra OK -``` -OK: 14/14 Fail: 0/14 Skip: 0/14 -## EF - Electra - Operations - Execution Payload [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_everything_first_pay OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_everything_regular_p OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_execution_first_payl OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_execution_regular_pa OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_parent_hash_first_pa OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_parent_hash_regular_ OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_pre_randao_regular_p OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_prev_randao_first_pa OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_correct_input__execution OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_exceed_max_blobs_per_blo OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_future_timestamp_first_p OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_future_timestamp_regular OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_past_timestamp_first_pay OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_past_timestamp_regular_p OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_randomized_non_validated OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_randomized_non_validated OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_blob_tx_type OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_block_hash OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_commitment OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_commitments_order OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_transaction_length_1_b OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_transaction_length_1_e OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_transaction_length_32_ OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_transaction_length_emp OK -+ [Valid] EF - Electra - Operations - Execution Payload - no_transactions_with_commitments OK -+ [Valid] EF - Electra - Operations - Execution Payload - non_empty_extra_data_first_paylo OK -+ [Valid] EF - Electra - Operations - Execution Payload - non_empty_extra_data_regular_pay OK -+ [Valid] EF - Electra - Operations - Execution Payload - non_empty_transactions_first_pay OK -+ [Valid] EF - Electra - Operations - Execution Payload - non_empty_transactions_regular_p OK -+ [Valid] EF - Electra - Operations - Execution Payload - randomized_non_validated_executi OK -+ [Valid] EF - Electra - Operations - Execution Payload - randomized_non_validated_executi OK -+ [Valid] EF - Electra - Operations - Execution Payload - success_first_payload OK -+ [Valid] EF - Electra - Operations - Execution Payload - success_first_payload_with_gap_s OK -+ [Valid] EF - Electra - Operations - Execution Payload - success_regular_payload OK -+ [Valid] EF - Electra - Operations - Execution Payload - success_regular_payload_with_gap OK -+ [Valid] EF - Electra - Operations - Execution Payload - zero_length_transaction_first_pa OK -+ [Valid] EF - Electra - Operations - Execution Payload - zero_length_transaction_regular_ OK -+ [Valid] EF - Electra - Operations - Execution Payload - zeroed_commitment OK -``` -OK: 38/38 Fail: 0/38 Skip: 0/38 -## EF - Electra - Operations - Proposer Slashing [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_different_proposer_indic OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_headers_are_same_sigs_ar OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_headers_are_same_sigs_ar OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_proposer_index OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_sig_1 OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_sig_1_and_2 OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_sig_1_and_2_sw OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_sig_2 OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_proposer_is_not_activate OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_proposer_is_slashed OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_proposer_is_withdrawn OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_slots_of_different_epoch OK -+ [Valid] EF - Electra - Operations - Proposer Slashing - basic OK -+ [Valid] EF - Electra - Operations - Proposer Slashing - block_header_from_future OK -+ [Valid] EF - Electra - Operations - Proposer Slashing - slashed_and_proposer_index_the_s OK -``` -OK: 15/15 Fail: 0/15 Skip: 0/15 -## EF - Electra - Operations - Sync Aggregate [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_bad_domain OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_extra_participant OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_infinite_signatur OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_infinite_signatur OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_missing_participa OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_no_participants OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_past_block OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_all_but_one_participating_wi OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_high_participation_with_dupl OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_low_participation_with_dupli OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_misc_balances_and_half_parti OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_only_one_participant_with_du OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_with_exits_with_duplicates OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_duplicate_co OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_duplicate_co OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_duplicate_co OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_duplicate_co OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_duplicate_co OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_duplicate_co OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_duplicate_co OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_empty_partic OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_not_full_par OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_nonparticipatin OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_nonparticipatin OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_participating_e OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_participating_w OK -``` -OK: 26/26 Fail: 0/26 Skip: 0/26 -## EF - Electra - Operations - Voluntary Exit [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_incorrect_signature OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_already_exited OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_exit_in_future OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_has_pending_withd OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_incorrect_validat OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_not_active OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_not_active_long_e OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_voluntary_exit_with_current OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_voluntary_exit_with_current OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_voluntary_exit_with_genesis OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_voluntary_exit_with_genesis OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_v OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_v OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - basic OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - default_exit_epoch_subsequent_exit OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - exit_existing_churn_and_balance_mul OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - exit_existing_churn_and_churn_limit OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - exit_with_balance_equal_to_churn_li OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - exit_with_balance_multiple_of_churn OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - max_balance_exit OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - min_balance_exit OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - min_balance_exits_above_churn OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - min_balance_exits_up_to_churn OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - success_exit_queue__min_churn OK -``` -OK: 24/24 Fail: 0/24 Skip: 0/24 -## EF - Electra - Operations - Withdrawals [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_f OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_a_lot_mixed_withdrawable_in_qu OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_a_lot_partially_withdrawable_t OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_address_full OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_address_partial OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_amount_full OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_amount_partial OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_withdrawal_index OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_many_incorrectly_full OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_many_incorrectly_partial OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_max_per_slot_full_withdrawals_ OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_max_per_slot_partial_withdrawa OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_non_withdrawable_non_empty_wit OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_expected_full_withdrawal_a OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_expected_full_withdrawal_a OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_expected_partial_withdrawa OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_of_many_incorrectly_full OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_of_many_incorrectly_partia OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_two_expected_partial_withdrawa OK -+ [Valid] EF - Electra - Operations - Withdrawals - all_withdrawal OK -+ [Valid] EF - Electra - Operations - Withdrawals - no_withdrawals_but_some_next_epoch OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_0 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_full_withdrawals_0 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_full_withdrawals_1 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_full_withdrawals_2 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_full_withdrawals_3 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_1 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_2 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_3 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_4 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_5 OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_all_fully_withdrawable_in_one_ OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_all_partially_withdrawable_in_ OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_excess_balance_but_no_max_effe OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_max_partial_withdrawable OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_mixed_fully_and_partial_withdr OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_no_excess_balance OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_no_max_effective_balance OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_full_withdrawal OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_activ OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_exite OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_exite OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_in_ex OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_not_y OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawal OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_two_partial_withdrawable OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_zero_expected_withdrawals OK -+ [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_balance OK -+ [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK -+ [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK -``` -OK: 50/50 Fail: 0/50 Skip: 0/50 -## EF - Electra - Random [Preset: mainnet] -```diff -+ [Valid] EF - Electra - Random - randomized_0 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_1 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_10 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_11 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_12 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_13 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_14 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_15 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_2 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_3 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_4 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_5 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_6 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_7 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_8 [Preset: mainnet] OK -+ [Valid] EF - Electra - Random - randomized_9 [Preset: mainnet] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 -## EF - Electra - Rewards [Preset: mainnet] -```diff -+ EF - Electra - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK -+ EF - Electra - Rewards - empty [Preset: mainnet] OK -+ EF - Electra - Rewards - empty_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - full_all_correct [Preset: mainnet] OK -+ EF - Electra - Rewards - full_but_partial_participation [Preset: mainnet] OK -+ EF - Electra - Rewards - full_but_partial_participation_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - full_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_0 [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_1 [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_2 [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_3 [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_4 [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_low_balances_0 [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_low_balances_1 [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_misc_balances [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_seven_epoch_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_ten_epoch_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_without_leak_0 [Preset: mainnet] OK -+ EF - Electra - Rewards - full_random_without_leak_and_current_exit_0 [Preset: mainnet] OK -+ EF - Electra - Rewards - half_full [Preset: mainnet] OK -+ EF - Electra - Rewards - half_full_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - quarter_full [Preset: mainnet] OK -+ EF - Electra - Rewards - quarter_full_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - some_very_low_effective_balances_that_attested [Preset: mainnet] OK -+ EF - Electra - Rewards - some_very_low_effective_balances_that_attested_leak [Preset: main OK -+ EF - Electra - Rewards - some_very_low_effective_balances_that_did_not_attest [Preset: mai OK -+ EF - Electra - Rewards - some_very_low_effective_balances_that_did_not_attest_leak [Preset OK -+ EF - Electra - Rewards - with_exited_validators [Preset: mainnet] OK -+ EF - Electra - Rewards - with_exited_validators_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - with_not_yet_activated_validators [Preset: mainnet] OK -+ EF - Electra - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK -+ EF - Electra - Rewards - with_slashed_validators [Preset: mainnet] OK -+ EF - Electra - Rewards - with_slashed_validators_leak [Preset: mainnet] OK -``` -OK: 34/34 Fail: 0/34 Skip: 0/34 -## EF - Electra - SSZ consensus objects [Preset: mainnet] -```diff -+ Testing AggregateAndProof OK -+ Testing Attestation OK -+ Testing AttestationData OK -+ Testing AttesterSlashing OK -+ Testing BLSToExecutionChange OK -+ Testing BeaconBlock OK -+ Testing BeaconBlockBody OK -+ Testing BeaconBlockHeader OK -+ Testing BeaconState OK -+ Testing BlobIdentifier OK -+ Testing BlobSidecar OK -+ Testing Checkpoint OK -+ Testing Consolidation OK -+ Testing ContributionAndProof OK -+ Testing Deposit OK -+ Testing DepositData OK -+ Testing DepositMessage OK -+ Testing DepositReceipt OK -+ Testing Eth1Block OK -+ Testing Eth1Data OK -+ Testing ExecutionLayerWithdrawalRequest OK -+ Testing ExecutionPayload OK -+ Testing ExecutionPayloadHeader OK -+ Testing Fork OK -+ Testing ForkData OK -+ Testing HistoricalBatch OK -+ Testing HistoricalSummary OK -+ Testing IndexedAttestation OK -+ Testing LightClientBootstrap OK -+ Testing LightClientFinalityUpdate OK -+ Testing LightClientHeader OK -+ Testing LightClientOptimisticUpdate OK -+ Testing LightClientUpdate OK -+ Testing PendingAttestation OK -+ Testing PendingBalanceDeposit OK -+ Testing PendingConsolidation OK -+ Testing PendingPartialWithdrawal OK -+ Testing PowBlock OK -+ Testing ProposerSlashing OK -+ Testing SignedAggregateAndProof OK -+ Testing SignedBLSToExecutionChange OK -+ Testing SignedBeaconBlock OK -+ Testing SignedBeaconBlockHeader OK -+ Testing SignedConsolidation 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 -+ Testing Withdrawal OK -``` -OK: 55/55 Fail: 0/55 Skip: 0/55 -## EF - Electra - Sanity - Blocks [Preset: mainnet] -```diff -+ [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_eth1_deposits_overl OK -+ [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_not_enough_eth1_dep OK -+ [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_too_many_eth1_depos OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_duplicate_bls_changes_same_block [Prese OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: m OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pr OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_exceed_max_blobs_per_block [Preset: mai OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_incorrect_block_sig [Preset: mainnet] OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expec OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propo OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_incorrect_state_root [Preset: mainnet] OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_is_execution_enabled_false [Preset: mai OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_max_blobs_per_block_two_txs [Preset: ma OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_one_blob_max_plus_one_txs [Preset: main OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: ma OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_parent_from_same_slot [Preset: mainnet] OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: mai OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_same_slot_block_transition [Preset: mai OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [ OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_two_bls_changes_of_different_addresses_ OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_withdrawal_fail_second_block_payload_is OK -+ [Invalid] EF - Electra - Sanity - Blocks - slash_and_exit_same_index [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - attestation [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - attester_slashing [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - balance_driven_status_transitions [Preset: main OK -+ [Valid] EF - Electra - Sanity - Blocks - block_transition_randomized_payload [Preset: ma OK -+ [Valid] EF - Electra - Sanity - Blocks - bls_change [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_and_bls_change [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_in_block [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_top_up [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__deposit_and_top_up_same_blo OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__process_eth1_deposits [Pres OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__process_eth1_deposits_up_to OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__process_max_eth1_deposits [ OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__start_index_is_set [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - duplicate_attestation_same_block [Preset: mainn OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_block_transition [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_block_transition_no_tx [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_epoch_transition [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - exit_and_bls_change [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_random_operations_0 [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_random_operations_1 [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_random_operations_2 [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_random_operations_3 [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_withdrawal_in_epoch_transition [Preset: ma OK -+ [Valid] EF - Electra - Sanity - Blocks - high_proposer_index [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - historical_batch [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - inactivity_scores_full_participation_leaking [P OK -+ [Valid] EF - Electra - Sanity - Blocks - inactivity_scores_leaking [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - many_partial_withdrawals_in_epoch_transition [P OK -+ [Valid] EF - Electra - Sanity - Blocks - max_blobs_per_block [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - mix_blob_tx_and_non_blob_tx [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - multiple_different_proposer_slashings_same_bloc OK -+ [Valid] EF - Electra - Sanity - Blocks - multiple_different_validator_exits_same_block [ OK -+ [Valid] EF - Electra - Sanity - Blocks - one_blob [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - one_blob_max_txs [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - one_blob_two_txs [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - partial_withdrawal_in_epoch_transition [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - proposer_after_inactive_index [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - proposer_self_slashing [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - proposer_slashing [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - skipped_slots [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee__empty [Preset: mainne OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee__full [Preset: mainnet OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee__half [Preset: mainnet OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee_genesis__empty [Preset OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - top_up_and_partial_withdrawable_validator [Pres OK -+ [Valid] EF - Electra - Sanity - Blocks - top_up_to_fully_withdrawn_validator [Preset: ma OK -+ [Valid] EF - Electra - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - withdrawal_success_two_blocks [Preset: mainnet] OK -+ [Valid] EF - Electra - Sanity - Blocks - zero_blob [Preset: mainnet] OK -``` -OK: 76/76 Fail: 0/76 Skip: 0/76 -## EF - Electra - Sanity - Slots [Preset: mainnet] -```diff -+ EF - Electra - Slots - double_empty_epoch [Preset: mainnet] OK -+ EF - Electra - Slots - empty_epoch [Preset: mainnet] OK -+ EF - Electra - Slots - historical_accumulator [Preset: mainnet] OK -+ EF - Electra - Slots - over_epoch_boundary [Preset: mainnet] OK -+ EF - Electra - Slots - slots_1 [Preset: mainnet] OK -+ EF - Electra - Slots - slots_2 [Preset: mainnet] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Electra - Transition [Preset: mainnet] -```diff -+ EF - Electra - Transition - non_empty_historical_roots [Preset: mainnet] OK -+ EF - Electra - Transition - normal_transition [Preset: mainnet] OK -+ EF - Electra - Transition - simple_transition [Preset: mainnet] OK -+ EF - Electra - Transition - transition_attestation_from_previous_fork_with_new_range [Pres OK -+ EF - Electra - Transition - transition_missing_first_post_block [Preset: mainnet] OK -+ EF - Electra - Transition - transition_missing_last_pre_fork_block [Preset: mainnet] OK -+ EF - Electra - Transition - transition_only_blocks_post_fork [Preset: mainnet] OK -+ EF - Electra - Transition - transition_randomized_state [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_activation_at_fork_epoch [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_attester_slashing_right_after_fork [Preset: ma OK -+ EF - Electra - Transition - transition_with_attester_slashing_right_before_fork [Preset: m OK -+ EF - Electra - Transition - transition_with_btec_right_after_fork [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_btec_right_before_fork [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_deposit_right_after_fork [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_deposit_right_before_fork [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_finality [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_leaking_at_fork [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_leaking_pre_fork [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_no_attestations_until_after_fork [Preset: main OK -+ EF - Electra - Transition - transition_with_non_empty_activation_queue [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [Pr OK -+ EF - Electra - Transition - transition_with_proposer_slashing_right_after_fork [Preset: ma OK -+ EF - Electra - Transition - transition_with_proposer_slashing_right_before_fork [Preset: m OK -+ EF - Electra - Transition - transition_with_random_half_participation [Preset: mainnet] OK -+ EF - Electra - Transition - transition_with_random_three_quarters_participation [Preset: m OK -``` -OK: 25/25 Fail: 0/25 Skip: 0/25 +OK: 51/51 Fail: 0/51 Skip: 0/51 ## EF - Light client - Single merkle proof [Preset: mainnet] ```diff + Light client - Single merkle proof - mainnet/altair/light_client/single_merkle_proof/Beaco OK @@ -3319,148 +2015,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Slashings reset - flush_slashings [Preset: mainnet] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Phase 0 - Operations - Attestation [Preset: mainnet] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK -``` -OK: 41/41 Fail: 0/41 Skip: 0/41 -## EF - Phase 0 - Operations - Attester Slashing [Preset: mainnet] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -``` -OK: 30/30 Fail: 0/30 Skip: 0/30 -## EF - Phase 0 - Operations - Block Header [Preset: mainnet] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Phase 0 - Operations - Deposit [Preset: mainnet] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK -``` -OK: 17/17 Fail: 0/17 Skip: 0/17 -## EF - Phase 0 - Operations - Proposer Slashing [Preset: mainnet] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -``` -OK: 15/15 Fail: 0/15 Skip: 0/15 -## EF - Phase 0 - Operations - Voluntary Exit [Preset: mainnet] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -``` -OK: 9/9 Fail: 0/9 Skip: 0/9 ## EF - Phase 0 - Rewards [Preset: mainnet] ```diff + EF - Phase 0 - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -3545,89 +2099,6 @@ OK: 49/49 Fail: 0/49 Skip: 0/49 + Testing VoluntaryExit OK ``` OK: 27/27 Fail: 0/27 Skip: 0/27 -## EF - Phase 0 - Sanity - Slots [Preset: mainnet] -```diff -+ EF - Phase 0 - Slots - double_empty_epoch [Preset: mainnet] OK -+ EF - Phase 0 - Slots - empty_epoch [Preset: mainnet] OK -+ EF - Phase 0 - Slots - historical_accumulator [Preset: mainnet] OK -+ EF - Phase 0 - Slots - over_epoch_boundary [Preset: mainnet] OK -+ EF - Phase 0 - Slots - slots_1 [Preset: mainnet] OK -+ EF - Phase 0 - Slots - slots_2 [Preset: mainnet] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Phase0 - Finality [Preset: mainnet] -```diff -+ [Valid] EF - Phase0 - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Finality - finality_rule_1 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Finality - finality_rule_2 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Finality - finality_rule_3 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Finality - finality_rule_4 [Preset: mainnet] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 -## EF - Phase0 - Random [Preset: mainnet] -```diff -+ [Valid] EF - Phase0 - Random - randomized_0 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_1 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_10 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_11 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_12 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_13 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_14 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_15 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_2 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_3 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_4 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_5 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_6 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_7 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_8 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Random - randomized_9 [Preset: mainnet] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 -## EF - Phase0 - Sanity - Blocks [Preset: mainnet] -```diff -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block [ OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: ma OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pre OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_incorrect_block_sig [Preset: mainnet] OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expect OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propos OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_incorrect_state_root [Preset: mainnet] OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: mai OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_parent_from_same_slot [Preset: mainnet] OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: main OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_proposal_for_genesis_slot [Preset: mainn OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_same_slot_block_transition [Preset: main OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [P OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - slash_and_exit_same_index [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - attestation [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - attester_slashing [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - balance_driven_status_transitions [Preset: mainn OK -+ [Valid] EF - Phase0 - Sanity - Blocks - deposit_in_block [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - deposit_top_up [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - duplicate_attestation_same_block [Preset: mainne OK -+ [Valid] EF - Phase0 - Sanity - Blocks - empty_block_transition [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - empty_epoch_transition [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - full_random_operations_0 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - full_random_operations_1 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - full_random_operations_2 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - full_random_operations_3 [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - high_proposer_index [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - historical_batch [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: OK -+ [Valid] EF - Phase0 - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pre OK -+ [Valid] EF - Phase0 - Sanity - Blocks - multiple_different_proposer_slashings_same_block OK -+ [Valid] EF - Phase0 - Sanity - Blocks - multiple_different_validator_exits_same_block [P OK -+ [Valid] EF - Phase0 - Sanity - Blocks - proposer_after_inactive_index [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - proposer_self_slashing [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - proposer_slashing [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - skipped_slots [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK -``` -OK: 40/40 Fail: 0/40 Skip: 0/40 ## ForkChoice ```diff + ForkChoice - mainnet/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_attestations_is_great OK @@ -3729,4 +2200,4 @@ OK: 69/88 Fail: 0/88 Skip: 19/88 OK: 3/3 Fail: 0/3 Skip: 0/3 ---TOTAL--- -OK: 3011/3031 Fail: 0/3031 Skip: 20/3031 +OK: 1738/1758 Fail: 0/1758 Skip: 20/1758 diff --git a/ConsensusSpecPreset-minimal.md b/ConsensusSpecPreset-minimal.md index e2fdfa2c67..25aa18f3bf 100644 --- a/ConsensusSpecPreset-minimal.md +++ b/ConsensusSpecPreset-minimal.md @@ -137,15 +137,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` OK: 5/5 Fail: 0/5 Skip: 0/5 -## EF - Altair - Finality [Preset: minimal] -```diff -+ [Valid] EF - Altair - Finality - finality_no_updates_at_genesis [Preset: minimal] OK -+ [Valid] EF - Altair - Finality - finality_rule_1 [Preset: minimal] OK -+ [Valid] EF - Altair - Finality - finality_rule_2 [Preset: minimal] OK -+ [Valid] EF - Altair - Finality - finality_rule_3 [Preset: minimal] OK -+ [Valid] EF - Altair - Finality - finality_rule_4 [Preset: minimal] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Altair - Fork [Preset: minimal] ```diff + EF - Altair - Fork - altair_fork_random_0 [Preset: minimal] OK @@ -339,26 +330,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Altair - Operations - Voluntary Exit - success_exit_queue__scaled_churn OK ``` OK: 10/10 Fail: 0/10 Skip: 0/10 -## EF - Altair - Random [Preset: minimal] -```diff -+ [Valid] EF - Altair - Random - randomized_0 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_1 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_10 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_11 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_12 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_13 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_14 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_15 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_2 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_3 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_4 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_5 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_6 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_7 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_8 [Preset: minimal] OK -+ [Valid] EF - Altair - Random - randomized_9 [Preset: minimal] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Altair - Rewards [Preset: minimal] ```diff + EF - Altair - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -440,102 +411,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing VoluntaryExit OK ``` OK: 39/39 Fail: 0/39 Skip: 0/39 -## EF - Altair - Sanity - Blocks [Preset: minimal] -```diff -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block [ OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: mi OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pre OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_incorrect_block_sig [Preset: minimal] OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expect OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propos OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_incorrect_state_root [Preset: minimal] OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: min OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_parent_from_same_slot [Preset: minimal] OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: mini OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_same_slot_block_transition [Preset: mini OK -+ [Invalid] EF - Altair - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [P OK -+ [Invalid] EF - Altair - Sanity - Blocks - slash_and_exit_same_index [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - attestation [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - attester_slashing [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - balance_driven_status_transitions [Preset: minim OK -+ [Valid] EF - Altair - Sanity - Blocks - deposit_in_block [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - deposit_top_up [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - duplicate_attestation_same_block [Preset: minima OK -+ [Valid] EF - Altair - Sanity - Blocks - empty_block_transition [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - empty_block_transition_large_validator_set [Pres OK -+ [Valid] EF - Altair - Sanity - Blocks - empty_epoch_transition [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - empty_epoch_transition_large_validator_set [Pres OK -+ [Valid] EF - Altair - Sanity - Blocks - empty_epoch_transition_not_finalizing [Preset: m OK -+ [Valid] EF - Altair - Sanity - Blocks - eth1_data_votes_consensus [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - eth1_data_votes_no_consensus [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - full_random_operations_0 [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - full_random_operations_1 [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - full_random_operations_2 [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - full_random_operations_3 [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - high_proposer_index [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - historical_batch [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - inactivity_scores_full_participation_leaking [Pr OK -+ [Valid] EF - Altair - Sanity - Blocks - inactivity_scores_leaking [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: OK -+ [Valid] EF - Altair - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pre OK -+ [Valid] EF - Altair - Sanity - Blocks - multiple_different_proposer_slashings_same_block OK -+ [Valid] EF - Altair - Sanity - Blocks - multiple_different_validator_exits_same_block [P OK -+ [Valid] EF - Altair - Sanity - Blocks - proposer_after_inactive_index [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - proposer_self_slashing [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - proposer_slashing [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - skipped_slots [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee__empty [Preset: minimal OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee__full [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee__half [Preset: minimal] OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee_genesis__empty [Preset: OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: OK -+ [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK -+ [Valid] EF - Altair - Sanity - Blocks - voluntary_exit [Preset: minimal] OK -``` -OK: 52/52 Fail: 0/52 Skip: 0/52 -## EF - Altair - Sanity - Slots [Preset: minimal] -```diff -+ EF - Altair - Slots - double_empty_epoch [Preset: minimal] OK -+ EF - Altair - Slots - empty_epoch [Preset: minimal] OK -+ EF - Altair - Slots - historical_accumulator [Preset: minimal] OK -+ EF - Altair - Slots - over_epoch_boundary [Preset: minimal] OK -+ EF - Altair - Slots - slots_1 [Preset: minimal] OK -+ EF - Altair - Slots - slots_2 [Preset: minimal] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Altair - Transition [Preset: minimal] -```diff -+ EF - Altair - Transition - non_empty_historical_roots [Preset: minimal] OK -+ EF - Altair - Transition - normal_transition [Preset: minimal] OK -+ EF - Altair - Transition - simple_transition [Preset: minimal] OK -+ EF - Altair - Transition - transition_missing_first_post_block [Preset: minimal] OK -+ EF - Altair - Transition - transition_missing_last_pre_fork_block [Preset: minimal] OK -+ EF - Altair - Transition - transition_only_blocks_post_fork [Preset: minimal] OK -+ EF - Altair - Transition - transition_randomized_state [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_activation_at_fork_epoch [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_attester_slashing_right_after_fork [Preset: min OK -+ EF - Altair - Transition - transition_with_attester_slashing_right_before_fork [Preset: mi OK -+ EF - Altair - Transition - transition_with_deposit_right_after_fork [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_deposit_right_before_fork [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_finality [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_leaking_at_fork [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_leaking_pre_fork [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_no_attestations_until_after_fork [Preset: minim OK -+ EF - Altair - Transition - transition_with_non_empty_activation_queue [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [Pre OK -+ EF - Altair - Transition - transition_with_one_fourth_exiting_validators_exit_post_fork [P OK -+ EF - Altair - Transition - transition_with_one_fourth_slashed_active_validators_pre_fork [ OK -+ EF - Altair - Transition - transition_with_proposer_slashing_right_after_fork [Preset: min OK -+ EF - Altair - Transition - transition_with_proposer_slashing_right_before_fork [Preset: mi OK -+ EF - Altair - Transition - transition_with_random_half_participation [Preset: minimal] OK -+ EF - Altair - Transition - transition_with_random_three_quarters_participation [Preset: mi OK -+ EF - Altair - Transition - transition_with_voluntary_exit_right_after_fork [Preset: minima OK -+ EF - Altair - Transition - transition_with_voluntary_exit_right_before_fork [Preset: minim OK -``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Altair - Unittests - Light client - Sync protocol [Preset: minimal] ```diff + process_light_client_update_finality_updated OK @@ -681,15 +556,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` OK: 5/5 Fail: 0/5 Skip: 0/5 -## EF - Bellatrix - Finality [Preset: minimal] -```diff -+ [Valid] EF - Bellatrix - Finality - finality_no_updates_at_genesis [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Finality - finality_rule_1 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Finality - finality_rule_2 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Finality - finality_rule_3 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Finality - finality_rule_4 [Preset: minimal] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Bellatrix - Fork [Preset: minimal] ```diff + EF - Bellatrix - Fork - bellatrix_fork_random_0 [Preset: minimal] OK @@ -918,26 +784,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Bellatrix - Operations - Voluntary Exit - voluntary_exit_with_previous_fork OK ``` OK: 16/16 Fail: 0/16 Skip: 0/16 -## EF - Bellatrix - Random [Preset: minimal] -```diff -+ [Valid] EF - Bellatrix - Random - randomized_0 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_1 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_10 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_11 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_12 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_13 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_14 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_15 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_2 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_3 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_4 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_5 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_6 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_7 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_8 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Random - randomized_9 [Preset: minimal] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Bellatrix - Rewards [Preset: minimal] ```diff + EF - Bellatrix - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -976,151 +822,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: minimal] OK ``` OK: 34/34 Fail: 0/34 Skip: 0/34 -## EF - Bellatrix - 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 LightClientBootstrap OK -+ Testing LightClientFinalityUpdate OK -+ Testing LightClientHeader OK -+ Testing LightClientOptimisticUpdate 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: 42/42 Fail: 0/42 Skip: 0/42 -## EF - Bellatrix - Sanity - Blocks [Preset: minimal] -```diff -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_duplicate_attester_slashing_same_bloc OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_blo OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [ OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_incorrect_block_sig [Preset: minimal] OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_exp OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_pro OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_incorrect_state_root [Preset: minimal OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_parent_from_same_slot [Preset: minima OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: m OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_same_slot_block_transition [Preset: m OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_similar_proposer_slashings_same_block OK -+ [Invalid] EF - Bellatrix - Sanity - Blocks - slash_and_exit_same_index [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - attestation [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - attester_slashing [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - balance_driven_status_transitions [Preset: mi OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - block_transition_randomized_payload [Preset: OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - deposit_in_block [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - deposit_top_up [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - duplicate_attestation_same_block [Preset: min OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_block_transition [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_block_transition_large_validator_set [P OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_block_transition_no_tx [Preset: minimal OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_epoch_transition [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_epoch_transition_large_validator_set [P OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - empty_epoch_transition_not_finalizing [Preset OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - eth1_data_votes_consensus [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - eth1_data_votes_no_consensus [Preset: minimal OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - full_random_operations_0 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - full_random_operations_1 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - full_random_operations_2 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - full_random_operations_3 [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - high_proposer_index [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - historical_batch [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - inactivity_scores_full_participation_leaking OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - inactivity_scores_leaking [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - is_execution_enabled_false [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - multiple_attester_slashings_no_overlap [Prese OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - multiple_attester_slashings_partial_overlap [ OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - multiple_different_proposer_slashings_same_bl OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - multiple_different_validator_exits_same_block OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - proposer_after_inactive_index [Preset: minima OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - proposer_self_slashing [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - proposer_slashing [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - skipped_slots [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee__empty [Preset: mini OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee__full [Preset: minim OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee__half [Preset: minim OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee_genesis__empty [Pres OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee_genesis__full [Prese OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee_genesis__half [Prese OK -+ [Valid] EF - Bellatrix - Sanity - Blocks - voluntary_exit [Preset: minimal] OK -``` -OK: 55/55 Fail: 0/55 Skip: 0/55 -## EF - Bellatrix - Sanity - Slots [Preset: minimal] -```diff -+ EF - Bellatrix - Slots - double_empty_epoch [Preset: minimal] OK -+ EF - Bellatrix - Slots - empty_epoch [Preset: minimal] OK -+ EF - Bellatrix - Slots - historical_accumulator [Preset: minimal] OK -+ EF - Bellatrix - Slots - over_epoch_boundary [Preset: minimal] OK -+ EF - Bellatrix - Slots - slots_1 [Preset: minimal] OK -+ EF - Bellatrix - Slots - slots_2 [Preset: minimal] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Bellatrix - Transition [Preset: minimal] -```diff -+ EF - Bellatrix - Transition - non_empty_historical_roots [Preset: minimal] OK -+ EF - Bellatrix - Transition - normal_transition [Preset: minimal] OK -+ EF - Bellatrix - Transition - simple_transition [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_missing_first_post_block [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_missing_last_pre_fork_block [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_only_blocks_post_fork [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_randomized_state [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_activation_at_fork_epoch [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_attester_slashing_right_after_fork [Preset: OK -+ EF - Bellatrix - Transition - transition_with_attester_slashing_right_before_fork [Preset: OK -+ EF - Bellatrix - Transition - transition_with_deposit_right_after_fork [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_deposit_right_before_fork [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_finality [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_leaking_at_fork [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_leaking_pre_fork [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_no_attestations_until_after_fork [Preset: mi OK -+ EF - Bellatrix - Transition - transition_with_non_empty_activation_queue [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [ OK -+ EF - Bellatrix - Transition - transition_with_one_fourth_exiting_validators_exit_post_fork OK -+ EF - Bellatrix - Transition - transition_with_one_fourth_slashed_active_validators_pre_for OK -+ EF - Bellatrix - Transition - transition_with_proposer_slashing_right_after_fork [Preset: OK -+ EF - Bellatrix - Transition - transition_with_proposer_slashing_right_before_fork [Preset: OK -+ EF - Bellatrix - Transition - transition_with_random_half_participation [Preset: minimal] OK -+ EF - Bellatrix - Transition - transition_with_random_three_quarters_participation [Preset: OK -+ EF - Bellatrix - Transition - transition_with_voluntary_exit_right_after_fork [Preset: min OK -+ EF - Bellatrix - Transition - transition_with_voluntary_exit_right_before_fork [Preset: mi OK -``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Capella - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK @@ -1258,15 +959,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` OK: 5/5 Fail: 0/5 Skip: 0/5 -## EF - Capella - Finality [Preset: minimal] -```diff -+ [Valid] EF - Capella - Finality - finality_no_updates_at_genesis [Preset: minimal] OK -+ [Valid] EF - Capella - Finality - finality_rule_1 [Preset: minimal] OK -+ [Valid] EF - Capella - Finality - finality_rule_2 [Preset: minimal] OK -+ [Valid] EF - Capella - Finality - finality_rule_3 [Preset: minimal] OK -+ [Valid] EF - Capella - Finality - finality_rule_4 [Preset: minimal] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Capella - Fork [Preset: minimal] ```diff + EF - Capella - Fork - capella_fork_random_0 [Preset: minimal] OK @@ -1569,26 +1261,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ``` OK: 51/51 Fail: 0/51 Skip: 0/51 -## EF - Capella - Random [Preset: minimal] -```diff -+ [Valid] EF - Capella - Random - randomized_0 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_1 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_10 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_11 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_12 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_13 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_14 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_15 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_2 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_3 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_4 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_5 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_6 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_7 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_8 [Preset: minimal] OK -+ [Valid] EF - Capella - Random - randomized_9 [Preset: minimal] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Capella - Rewards [Preset: minimal] ```diff + EF - Capella - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -1677,119 +1349,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK ``` OK: 46/46 Fail: 0/46 Skip: 0/46 -## EF - Capella - Sanity - Blocks [Preset: minimal] -```diff -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_bls_changes_same_block [Prese OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: m OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pr OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_incorrect_block_sig [Preset: minimal] OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expec OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propo OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_incorrect_state_root [Preset: minimal] OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_is_execution_enabled_false [Preset: min OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: mi OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_parent_from_same_slot [Preset: minimal] OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: min OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_same_slot_block_transition [Preset: min OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [ OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_two_bls_changes_of_different_addresses_ OK -+ [Invalid] EF - Capella - Sanity - Blocks - invalid_withdrawal_fail_second_block_payload_is OK -+ [Invalid] EF - Capella - Sanity - Blocks - slash_and_exit_same_index [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - activate_and_partial_withdrawal_max_effective_b OK -+ [Valid] EF - Capella - Sanity - Blocks - activate_and_partial_withdrawal_overdeposit [Pr OK -+ [Valid] EF - Capella - Sanity - Blocks - attestation [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - attester_slashing [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - balance_driven_status_transitions [Preset: mini OK -+ [Valid] EF - Capella - Sanity - Blocks - block_transition_randomized_payload [Preset: mi OK -+ [Valid] EF - Capella - Sanity - Blocks - bls_change [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - deposit_and_bls_change [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - deposit_in_block [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - deposit_top_up [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - duplicate_attestation_same_block [Preset: minim OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_block_transition [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_block_transition_large_validator_set [Pre OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_block_transition_no_tx [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_epoch_transition [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_epoch_transition_large_validator_set [Pre OK -+ [Valid] EF - Capella - Sanity - Blocks - empty_epoch_transition_not_finalizing [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - eth1_data_votes_consensus [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - eth1_data_votes_no_consensus [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - exit_and_bls_change [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_random_operations_0 [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_random_operations_1 [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_random_operations_2 [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_random_operations_3 [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - full_withdrawal_in_epoch_transition [Preset: mi OK -+ [Valid] EF - Capella - Sanity - Blocks - high_proposer_index [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - historical_batch [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - inactivity_scores_full_participation_leaking [P OK -+ [Valid] EF - Capella - Sanity - Blocks - inactivity_scores_leaking [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - many_partial_withdrawals_in_epoch_transition [P OK -+ [Valid] EF - Capella - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pr OK -+ [Valid] EF - Capella - Sanity - Blocks - multiple_different_proposer_slashings_same_bloc OK -+ [Valid] EF - Capella - Sanity - Blocks - multiple_different_validator_exits_same_block [ OK -+ [Valid] EF - Capella - Sanity - Blocks - partial_withdrawal_in_epoch_transition [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - proposer_after_inactive_index [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - proposer_self_slashing [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - proposer_slashing [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - skipped_slots [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee__empty [Preset: minima OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee__full [Preset: minimal OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee__half [Preset: minimal OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee_genesis__empty [Preset OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK -+ [Valid] EF - Capella - Sanity - Blocks - top_up_and_partial_withdrawable_validator [Pres OK -+ [Valid] EF - Capella - Sanity - Blocks - top_up_to_fully_withdrawn_validator [Preset: mi OK -+ [Valid] EF - Capella - Sanity - Blocks - voluntary_exit [Preset: minimal] OK -+ [Valid] EF - Capella - Sanity - Blocks - withdrawal_success_two_blocks [Preset: minimal] OK -``` -OK: 69/69 Fail: 0/69 Skip: 0/69 -## EF - Capella - Sanity - Slots [Preset: minimal] -```diff -+ EF - Capella - Slots - double_empty_epoch [Preset: minimal] OK -+ EF - Capella - Slots - empty_epoch [Preset: minimal] OK -+ EF - Capella - Slots - historical_accumulator [Preset: minimal] OK -+ EF - Capella - Slots - over_epoch_boundary [Preset: minimal] OK -+ EF - Capella - Slots - slots_1 [Preset: minimal] OK -+ EF - Capella - Slots - slots_2 [Preset: minimal] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Capella - Transition [Preset: minimal] -```diff -+ EF - Capella - Transition - non_empty_historical_roots [Preset: minimal] OK -+ EF - Capella - Transition - normal_transition [Preset: minimal] OK -+ EF - Capella - Transition - simple_transition [Preset: minimal] OK -+ EF - Capella - Transition - transition_missing_first_post_block [Preset: minimal] OK -+ EF - Capella - Transition - transition_missing_last_pre_fork_block [Preset: minimal] OK -+ EF - Capella - Transition - transition_only_blocks_post_fork [Preset: minimal] OK -+ EF - Capella - Transition - transition_randomized_state [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_activation_at_fork_epoch [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_attester_slashing_right_after_fork [Preset: mi OK -+ EF - Capella - Transition - transition_with_attester_slashing_right_before_fork [Preset: m OK -+ EF - Capella - Transition - transition_with_deposit_right_after_fork [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_deposit_right_before_fork [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_finality [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_leaking_at_fork [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_leaking_pre_fork [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_no_attestations_until_after_fork [Preset: mini OK -+ EF - Capella - Transition - transition_with_non_empty_activation_queue [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [Pr OK -+ EF - Capella - Transition - transition_with_one_fourth_exiting_validators_exit_post_fork [ OK -+ EF - Capella - Transition - transition_with_one_fourth_slashed_active_validators_pre_fork OK -+ EF - Capella - Transition - transition_with_proposer_slashing_right_after_fork [Preset: mi OK -+ EF - Capella - Transition - transition_with_proposer_slashing_right_before_fork [Preset: m OK -+ EF - Capella - Transition - transition_with_random_half_participation [Preset: minimal] OK -+ EF - Capella - Transition - transition_with_random_three_quarters_participation [Preset: m OK -+ EF - Capella - Transition - transition_with_voluntary_exit_right_after_fork [Preset: minim OK -+ EF - Capella - Transition - transition_with_voluntary_exit_right_before_fork [Preset: mini OK -``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Capella - Unittests - Light client - Sync protocol [Preset: minimal] ```diff + process_light_client_update_finality_updated OK @@ -1938,15 +1497,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` OK: 5/5 Fail: 0/5 Skip: 0/5 -## EF - Deneb - Finality [Preset: minimal] -```diff -+ [Valid] EF - Deneb - Finality - finality_no_updates_at_genesis [Preset: minimal] OK -+ [Valid] EF - Deneb - Finality - finality_rule_1 [Preset: minimal] OK -+ [Valid] EF - Deneb - Finality - finality_rule_2 [Preset: minimal] OK -+ [Valid] EF - Deneb - Finality - finality_rule_3 [Preset: minimal] OK -+ [Valid] EF - Deneb - Finality - finality_rule_4 [Preset: minimal] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Deneb - Fork [Preset: minimal] ```diff + EF - Deneb - Fork - deneb_fork_random_0 [Preset: minimal] OK @@ -2261,26 +1811,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + [Valid] EF - Deneb - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balan OK ``` OK: 51/51 Fail: 0/51 Skip: 0/51 -## EF - Deneb - Random [Preset: minimal] -```diff -+ [Valid] EF - Deneb - Random - randomized_0 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_1 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_10 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_11 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_12 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_13 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_14 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_15 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_2 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_3 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_4 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_5 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_6 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_7 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_8 [Preset: minimal] OK -+ [Valid] EF - Deneb - Random - randomized_9 [Preset: minimal] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Deneb - Rewards [Preset: minimal] ```diff + EF - Deneb - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -2371,132 +1901,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK ``` OK: 48/48 Fail: 0/48 Skip: 0/48 -## EF - Deneb - Sanity - Blocks [Preset: minimal] -```diff -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block [P OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_bls_changes_same_block [Preset: OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: min OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block [ OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pres OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_exceed_max_blobs_per_block [Preset: minim OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_incorrect_block_sig [Preset: minimal] OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expecte OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propose OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_incorrect_state_root [Preset: minimal] OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_is_execution_enabled_false [Preset: minim OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_max_blobs_per_block_two_txs [Preset: mini OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_one_blob_max_plus_one_txs [Preset: minima OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: mini OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_parent_from_same_slot [Preset: minimal] OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: minim OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_same_slot_block_transition [Preset: minim OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [Pr OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_two_bls_changes_of_different_addresses_sa OK -+ [Invalid] EF - Deneb - Sanity - Blocks - invalid_withdrawal_fail_second_block_payload_isnt OK -+ [Invalid] EF - Deneb - Sanity - Blocks - slash_and_exit_same_index [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - activate_and_partial_withdrawal_max_effective_bal OK -+ [Valid] EF - Deneb - Sanity - Blocks - activate_and_partial_withdrawal_overdeposit [Pres OK -+ [Valid] EF - Deneb - Sanity - Blocks - attestation [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - attester_slashing [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - balance_driven_status_transitions [Preset: minima OK -+ [Valid] EF - Deneb - Sanity - Blocks - block_transition_randomized_payload [Preset: mini OK -+ [Valid] EF - Deneb - Sanity - Blocks - bls_change [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - deposit_and_bls_change [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - deposit_in_block [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - deposit_top_up [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - duplicate_attestation_same_block [Preset: minimal OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_block_transition [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_block_transition_large_validator_set [Prese OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_block_transition_no_tx [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_epoch_transition [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_epoch_transition_large_validator_set [Prese OK -+ [Valid] EF - Deneb - Sanity - Blocks - empty_epoch_transition_not_finalizing [Preset: mi OK -+ [Valid] EF - Deneb - Sanity - Blocks - eth1_data_votes_consensus [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - eth1_data_votes_no_consensus [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - exit_and_bls_change [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_random_operations_0 [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_random_operations_1 [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_random_operations_2 [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_random_operations_3 [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - full_withdrawal_in_epoch_transition [Preset: mini OK -+ [Valid] EF - Deneb - Sanity - Blocks - high_proposer_index [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - historical_batch [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - inactivity_scores_full_participation_leaking [Pre OK -+ [Valid] EF - Deneb - Sanity - Blocks - inactivity_scores_leaking [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - many_partial_withdrawals_in_epoch_transition [Pre OK -+ [Valid] EF - Deneb - Sanity - Blocks - max_blobs_per_block [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - mix_blob_tx_and_non_blob_tx [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: m OK -+ [Valid] EF - Deneb - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pres OK -+ [Valid] EF - Deneb - Sanity - Blocks - multiple_different_proposer_slashings_same_block OK -+ [Valid] EF - Deneb - Sanity - Blocks - multiple_different_validator_exits_same_block [Pr OK -+ [Valid] EF - Deneb - Sanity - Blocks - one_blob [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - one_blob_max_txs [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - one_blob_two_txs [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - partial_withdrawal_in_epoch_transition [Preset: m OK -+ [Valid] EF - Deneb - Sanity - Blocks - proposer_after_inactive_index [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - proposer_self_slashing [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - proposer_slashing [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - skipped_slots [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee__empty [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee__full [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee__half [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee_genesis__empty [Preset: OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: m OK -+ [Valid] EF - Deneb - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: m OK -+ [Valid] EF - Deneb - Sanity - Blocks - top_up_and_partial_withdrawable_validator [Preset OK -+ [Valid] EF - Deneb - Sanity - Blocks - top_up_to_fully_withdrawn_validator [Preset: mini OK -+ [Valid] EF - Deneb - Sanity - Blocks - voluntary_exit [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - withdrawal_success_two_blocks [Preset: minimal] OK -+ [Valid] EF - Deneb - Sanity - Blocks - zero_blob [Preset: minimal] OK -``` -OK: 78/78 Fail: 0/78 Skip: 0/78 -## EF - Deneb - Sanity - Slots [Preset: minimal] -```diff -+ EF - Deneb - Slots - double_empty_epoch [Preset: minimal] OK -+ EF - Deneb - Slots - empty_epoch [Preset: minimal] OK -+ EF - Deneb - Slots - historical_accumulator [Preset: minimal] OK -+ EF - Deneb - Slots - over_epoch_boundary [Preset: minimal] OK -+ EF - Deneb - Slots - slots_1 [Preset: minimal] OK -+ EF - Deneb - Slots - slots_2 [Preset: minimal] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Deneb - Transition [Preset: minimal] -```diff -+ EF - Deneb - Transition - higher_churn_limit_to_lower [Preset: minimal] OK -+ EF - Deneb - Transition - non_empty_historical_roots [Preset: minimal] OK -+ EF - Deneb - Transition - normal_transition [Preset: minimal] OK -+ EF - Deneb - Transition - simple_transition [Preset: minimal] OK -+ EF - Deneb - Transition - transition_attestation_from_previous_fork_with_new_range [Preset OK -+ EF - Deneb - Transition - transition_missing_first_post_block [Preset: minimal] OK -+ EF - Deneb - Transition - transition_missing_last_pre_fork_block [Preset: minimal] OK -+ EF - Deneb - Transition - transition_only_blocks_post_fork [Preset: minimal] OK -+ EF - Deneb - Transition - transition_randomized_state [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_activation_at_fork_epoch [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_attester_slashing_right_after_fork [Preset: mini OK -+ EF - Deneb - Transition - transition_with_attester_slashing_right_before_fork [Preset: min OK -+ EF - Deneb - Transition - transition_with_btec_right_after_fork [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_btec_right_before_fork [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_deposit_right_after_fork [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_deposit_right_before_fork [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_finality [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_leaking_at_fork [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_leaking_pre_fork [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_no_attestations_until_after_fork [Preset: minima OK -+ EF - Deneb - Transition - transition_with_non_empty_activation_queue [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [Pres OK -+ EF - Deneb - Transition - transition_with_one_fourth_exiting_validators_exit_post_fork [Pr OK -+ EF - Deneb - Transition - transition_with_one_fourth_slashed_active_validators_pre_fork [P OK -+ EF - Deneb - Transition - transition_with_proposer_slashing_right_after_fork [Preset: mini OK -+ EF - Deneb - Transition - transition_with_proposer_slashing_right_before_fork [Preset: min OK -+ EF - Deneb - Transition - transition_with_random_half_participation [Preset: minimal] OK -+ EF - Deneb - Transition - transition_with_random_three_quarters_participation [Preset: min OK -+ EF - Deneb - Transition - transition_with_voluntary_exit_right_after_fork [Preset: minimal OK -+ EF - Deneb - Transition - transition_with_voluntary_exit_right_before_fork [Preset: minima OK -``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Deneb - Unittests - Light client - Sync protocol [Preset: minimal] ```diff + process_light_client_update_finality_updated OK @@ -2539,6 +1943,7 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Testing LightClientHeader OK + Testing LightClientOptimisticUpdate OK + Testing LightClientUpdate OK ++ Testing MatrixEntry OK + Testing PendingAttestation OK + Testing PowBlock OK + Testing ProposerSlashing OK @@ -2558,817 +1963,7 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 50/50 Fail: 0/50 Skip: 0/50 -## EF - Electra - Epoch Processing - Effective balance updates [Preset: minimal] -```diff -+ Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK -+ Effective balance updates - effective_balance_hysteresis_with_compounding_credentials [Pre OK -``` -OK: 2/2 Fail: 0/2 Skip: 0/2 -## EF - Electra - 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 -## EF - Electra - Epoch Processing - Historical summaries update [Preset: minimal] -```diff -+ Historical summaries update - historical_summaries_accumulator [Preset: minimal] OK -``` -OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Electra - 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 - randomized_state [Preset: minimal] OK -+ Inactivity - randomized_state_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: 21/21 Fail: 0/21 Skip: 0/21 -## EF - Electra - 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 -## EF - Electra - 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 -## EF - Electra - Epoch Processing - Pending balance deposits [Preset: minimal] -```diff -+ Pending balance deposits - multiple_pending_deposits_above_churn [Preset: minimal] OK -+ Pending balance deposits - multiple_pending_deposits_below_churn [Preset: minimal] OK -+ Pending balance deposits - pending_deposit_balance_above_churn [Preset: minimal] OK -+ Pending balance deposits - pending_deposit_balance_equal_churn [Preset: minimal] OK -+ Pending balance deposits - pending_deposit_min_activation_balance [Preset: minimal] OK -+ Pending balance deposits - pending_deposit_preexisting_churn [Preset: minimal] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Electra - Epoch Processing - Pending consolidations [Preset: minimal] -```diff -+ Pending consolidations - all_consolidation_cases_together [Preset: minimal] OK -+ Pending consolidations - basic_pending_consolidation [Preset: minimal] OK -+ Pending consolidations - consolidation_not_yet_withdrawable_validator [Preset: minimal] OK -+ Pending consolidations - skip_consolidation_when_source_slashed [Preset: minimal] OK -``` -OK: 4/4 Fail: 0/4 Skip: 0/4 -## EF - Electra - 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 -## EF - Electra - Epoch Processing - Registry updates [Preset: minimal] -```diff -+ Registry updates - activation_churn_limit__equal_to_activation_limit [Preset: minimal] OK -+ Registry updates - activation_churn_limit__greater_than_activation_limit [Preset: minimal] OK -+ Registry updates - activation_churn_limit__less_than_activation_limit [Preset: minimal] OK -+ 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 -+ Registry updates - invalid_large_withdrawable_epoch [Preset: minimal] OK -``` -OK: 18/18 Fail: 0/18 Skip: 0/18 -## EF - Electra - Epoch Processing - Rewards and penalties [Preset: minimal] -```diff -+ Rewards and penalties - almost_empty_attestations [Preset: minimal] OK -+ Rewards and penalties - almost_empty_attestations_with_leak [Preset: minimal] OK -+ Rewards and penalties - almost_full_attestations [Preset: minimal] OK -+ Rewards and penalties - almost_full_attestations_with_leak [Preset: minimal] OK -+ Rewards and penalties - attestations_some_slashed [Preset: minimal] OK -+ Rewards and penalties - duplicate_attestation [Preset: minimal] OK -+ Rewards and penalties - full_attestation_participation [Preset: minimal] OK -+ Rewards and penalties - full_attestation_participation_with_leak [Preset: minimal] OK -+ Rewards and penalties - full_attestations_misc_balances [Preset: minimal] OK -+ Rewards and penalties - full_attestations_one_validaor_one_gwei [Preset: minimal] OK -+ Rewards and penalties - genesis_epoch_full_attestations_no_rewards [Preset: minimal] OK -+ Rewards and penalties - genesis_epoch_no_attestations_no_penalties [Preset: minimal] OK -+ Rewards and penalties - no_attestations_all_penalties [Preset: minimal] OK -+ Rewards and penalties - random_fill_attestations [Preset: minimal] OK -+ Rewards and penalties - random_fill_attestations_with_leak [Preset: minimal] OK -``` -OK: 15/15 Fail: 0/15 Skip: 0/15 -## EF - Electra - 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 -## EF - Electra - Epoch Processing - Slashings reset [Preset: minimal] -```diff -+ Slashings reset - flush_slashings [Preset: minimal] OK -``` -OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Electra - Epoch Processing - Sync committee updates [Preset: minimal] -```diff -+ Sync committee updates - sync_committees_no_progress_not_at_period_boundary [Preset: minim 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 -## EF - Electra - Finality [Preset: minimal] -```diff -+ [Valid] EF - Electra - Finality - finality_no_updates_at_genesis [Preset: minimal] OK -+ [Valid] EF - Electra - Finality - finality_rule_1 [Preset: minimal] OK -+ [Valid] EF - Electra - Finality - finality_rule_2 [Preset: minimal] OK -+ [Valid] EF - Electra - Finality - finality_rule_3 [Preset: minimal] OK -+ [Valid] EF - Electra - Finality - finality_rule_4 [Preset: minimal] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 -## EF - Electra - Fork [Preset: minimal] -```diff -+ EF - Electra - Fork - electra_fork_random_0 [Preset: minimal] OK -+ EF - Electra - Fork - electra_fork_random_1 [Preset: minimal] OK -+ EF - Electra - Fork - electra_fork_random_2 [Preset: minimal] OK -+ EF - Electra - Fork - electra_fork_random_3 [Preset: minimal] OK -+ EF - Electra - Fork - electra_fork_random_large_validator_set [Preset: minimal] OK -+ EF - Electra - Fork - electra_fork_random_low_balances [Preset: minimal] OK -+ EF - Electra - Fork - electra_fork_random_misc_balances [Preset: minimal] OK -+ EF - Electra - Fork - fork_base_state [Preset: minimal] OK -+ EF - Electra - Fork - fork_many_next_epoch [Preset: minimal] OK -+ EF - Electra - Fork - fork_next_epoch [Preset: minimal] OK -+ EF - Electra - Fork - fork_next_epoch_with_block [Preset: minimal] OK -+ EF - Electra - Fork - fork_random_large_validator_set [Preset: minimal] OK -+ EF - Electra - Fork - fork_random_low_balances [Preset: minimal] OK -+ EF - Electra - Fork - fork_random_misc_balances [Preset: minimal] OK -``` -OK: 14/14 Fail: 0/14 Skip: 0/14 -## EF - Electra - Operations - Attestation [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Attestation - invalid_after_max_inclusion_slot OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_attestation_data_index_not_zer OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_attestation_signature OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_bad_source_root OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_before_inclusion_delay OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_committe_index OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_correct_attestation_included_a OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_current_source_root OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_empty_participants_seemingly_v OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_empty_participants_zeroes_sig OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_future_target_epoch OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_incorrect_head_and_target_incl OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_incorrect_head_included_after_ OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_incorrect_target_included_afte OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_index OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_mismatched_target_and_slot OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_new_source_epoch OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_nonset_committe_bits OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_old_source_epoch OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_old_target_epoch OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_previous_source_root OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_source_root_is_target_root OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_too_few_aggregation_bits OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_too_many_aggregation_bits OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_too_many_committe_bits OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_wrong_index_for_committee_sign OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_wrong_index_for_slot_0 OK -+ [Invalid] EF - Electra - Operations - Attestation - invalid_wrong_index_for_slot_1 OK -+ [Valid] EF - Electra - Operations - Attestation - at_max_inclusion_slot OK -+ [Valid] EF - Electra - Operations - Attestation - correct_attestation_included_at_max_in OK -+ [Valid] EF - Electra - Operations - Attestation - correct_attestation_included_at_min_in OK -+ [Valid] EF - Electra - Operations - Attestation - correct_attestation_included_at_one_ep OK -+ [Valid] EF - Electra - Operations - Attestation - correct_attestation_included_at_sqrt_e OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_and_target_included_at_ OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_and_target_included_at_ OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_and_target_min_inclusio OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_included_at_max_inclusi OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_included_at_min_inclusi OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_head_included_at_sqrt_epoch_ OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_target_included_at_epoch_del OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_target_included_at_min_inclu OK -+ [Valid] EF - Electra - Operations - Attestation - incorrect_target_included_at_sqrt_epoc OK -+ [Valid] EF - Electra - Operations - Attestation - multi_proposer_index_iterations OK -+ [Valid] EF - Electra - Operations - Attestation - one_basic_attestation OK -+ [Valid] EF - Electra - Operations - Attestation - previous_epoch OK -``` -OK: 45/45 Fail: 0/45 Skip: 0/45 -## EF - Electra - Operations - Attester Slashing [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_all_empty_indices OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_bad_extra_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_bad_replaced_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_duplicate_index_dou OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_duplicate_index_nor OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_empty_indices OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att1_high_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_bad_extra_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_bad_replaced_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_duplicate_index_dou OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_duplicate_index_nor OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_empty_indices OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_att2_high_index OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_incorrect_sig_1 OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_incorrect_sig_1_and_2 OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_incorrect_sig_2 OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_no_double_or_surround OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_participants_already_sla OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_same_data OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_unsorted_att_1 OK -+ [Invalid] EF - Electra - Operations - Attester Slashing - invalid_unsorted_att_2 OK -+ [Valid] EF - Electra - Operations - Attester Slashing - already_exited_long_ago OK -+ [Valid] EF - Electra - Operations - Attester Slashing - already_exited_recent OK -+ [Valid] EF - Electra - Operations - Attester Slashing - attestation_from_future OK -+ [Valid] EF - Electra - Operations - Attester Slashing - basic_double OK -+ [Valid] EF - Electra - Operations - Attester Slashing - basic_surround OK -+ [Valid] EF - Electra - Operations - Attester Slashing - low_balances OK -+ [Valid] EF - Electra - Operations - Attester Slashing - misc_balances OK -+ [Valid] EF - Electra - Operations - Attester Slashing - proposer_index_slashed OK -+ [Valid] EF - Electra - Operations - Attester Slashing - with_effective_balance_disparity OK -``` -OK: 30/30 Fail: 0/30 Skip: 0/30 -## EF - Electra - Operations - BLS to execution change [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_already_0x01 OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_bad_signature OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_current_fork_versi OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_genesis_validators OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_incorrect_from_bls OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_previous_fork_vers OK -+ [Invalid] EF - Electra - Operations - BLS to execution change - invalid_val_index_out_of_r OK -+ [Valid] EF - Electra - Operations - BLS to execution change - genesis_fork_version OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_exited OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_in_activation_queu OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_in_exit_queue OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_not_activated OK -+ [Valid] EF - Electra - Operations - BLS to execution change - success_withdrawable OK -``` -OK: 14/14 Fail: 0/14 Skip: 0/14 -## EF - Electra - Operations - Block Header [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Block Header - invalid_multiple_blocks_single_slot OK -+ [Invalid] EF - Electra - Operations - Block Header - invalid_parent_root OK -+ [Invalid] EF - Electra - Operations - Block Header - invalid_proposer_index OK -+ [Invalid] EF - Electra - Operations - Block Header - invalid_proposer_slashed OK -+ [Invalid] EF - Electra - Operations - Block Header - invalid_slot_block_header OK -+ [Valid] EF - Electra - Operations - Block Header - basic_block_header OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Electra - Operations - Consolidation [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_before_specified_epoch OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_different_credentials OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_exited_source OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_exited_target OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_inactive_source OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_inactive_target OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_no_execution_withdrawal_cred OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_not_enough_consolidation_chu OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_source_equals_target OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_source_signature OK -+ [Invalid] EF - Electra - Operations - Consolidation - invalid_target_signature OK -+ [Valid] EF - Electra - Operations - Consolidation - basic_consolidation_in_current_conso OK -+ [Valid] EF - Electra - Operations - Consolidation - basic_consolidation_in_new_consolida OK -+ [Valid] EF - Electra - Operations - Consolidation - basic_consolidation_with_compounding OK -+ [Valid] EF - Electra - Operations - Consolidation - basic_consolidation_with_insufficien OK -+ [Valid] EF - Electra - Operations - Consolidation - basic_consolidation_with_preexisting OK -+ [Valid] EF - Electra - Operations - Consolidation - consolidation_balance_larger_than_ch OK -+ [Valid] EF - Electra - Operations - Consolidation - consolidation_balance_through_two_ch OK -+ [Valid] EF - Electra - Operations - Consolidation - consolidation_churn_limit_balance OK -``` -OK: 19/19 Fail: 0/19 Skip: 0/19 -## EF - Electra - Operations - Deposit [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Deposit - invalid_bad_merkle_proof OK -+ [Invalid] EF - Electra - Operations - Deposit - invalid_wrong_deposit_for_deposit_count OK -+ [Valid] EF - Electra - Operations - Deposit - correct_sig_but_forked_state OK -+ [Valid] EF - Electra - Operations - Deposit - effective_deposit_with_genesis_fork_versio OK -+ [Valid] EF - Electra - Operations - Deposit - incorrect_sig_new_deposit OK -+ [Valid] EF - Electra - Operations - Deposit - incorrect_sig_top_up OK -+ [Valid] EF - Electra - Operations - Deposit - incorrect_withdrawal_credentials_top_up OK -+ [Valid] EF - Electra - Operations - Deposit - ineffective_deposit_with_bad_fork_version OK -+ [Valid] EF - Electra - Operations - Deposit - ineffective_deposit_with_current_fork_vers OK -+ [Valid] EF - Electra - Operations - Deposit - ineffective_deposit_with_previous_fork_ver OK -+ [Valid] EF - Electra - Operations - Deposit - key_validate_invalid_decompression OK -+ [Valid] EF - Electra - Operations - Deposit - key_validate_invalid_subgroup OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_eth1_withdrawal_credentials OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_max OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_non_versioned_withdrawal_crede OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_over_max OK -+ [Valid] EF - Electra - Operations - Deposit - new_deposit_under_max OK -+ [Valid] EF - Electra - Operations - Deposit - success_top_up_to_withdrawn_validator OK -+ [Valid] EF - Electra - Operations - Deposit - top_up__less_effective_balance OK -+ [Valid] EF - Electra - Operations - Deposit - top_up__max_effective_balance OK -+ [Valid] EF - Electra - Operations - Deposit - top_up__zero_balance OK -``` -OK: 21/21 Fail: 0/21 Skip: 0/21 -## EF - Electra - Operations - Deposit Receipt [Preset: minimal] -```diff -+ [Valid] EF - Electra - Operations - Deposit Receipt - correct_sig_but_forked_state OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - effective_deposit_with_genesis_for OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - incorrect_sig_new_deposit OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - incorrect_sig_top_up OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - incorrect_withdrawal_credentials_t OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - ineffective_deposit_with_previous_ OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - key_validate_invalid_decompression OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - key_validate_invalid_subgroup OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_eth1_withdrawal_creden OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_max OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_non_versioned_withdraw OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_over_max OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - new_deposit_under_max OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - success_top_up_to_withdrawn_valida OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - top_up__less_effective_balance OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - top_up__max_effective_balance OK -+ [Valid] EF - Electra - Operations - Deposit Receipt - top_up__zero_balance OK -``` -OK: 17/17 Fail: 0/17 Skip: 0/17 -## EF - Electra - Operations - Execution Layer Withdrawal Request [Preset: minimal] -```diff -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - activation_epoc OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - basic_partial_w OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - basic_partial_w OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - basic_partial_w OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - basic_withdrawa OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - basic_withdrawa OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - basic_withdrawa OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - incorrect_sourc OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - incorrect_withd OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - insufficient_ef OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - no_compounding_ OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - no_excess_balan OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - on_withdrawal_r OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - partial_withdra OK -+ [Valid] EF - Electra - Operations - Execution Layer Withdrawal Request - pending_withdra OK -``` -OK: 24/24 Fail: 0/24 Skip: 0/24 -## EF - Electra - Operations - Execution Payload [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_everything_first_pay OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_everything_regular_p OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_execution_first_payl OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_execution_regular_pa OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_parent_hash_first_pa OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_parent_hash_regular_ OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_pre_randao_regular_p OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_prev_randao_first_pa OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_correct_input__execution OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_exceed_max_blobs_per_blo OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_future_timestamp_first_p OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_future_timestamp_regular OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_past_timestamp_first_pay OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_past_timestamp_regular_p OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_randomized_non_validated OK -+ [Invalid] EF - Electra - Operations - Execution Payload - invalid_randomized_non_validated OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_blob_tx_type OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_block_hash OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_commitment OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_commitments_order OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_transaction_length_1_b OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_transaction_length_1_e OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_transaction_length_32_ OK -+ [Valid] EF - Electra - Operations - Execution Payload - incorrect_transaction_length_emp OK -+ [Valid] EF - Electra - Operations - Execution Payload - no_transactions_with_commitments OK -+ [Valid] EF - Electra - Operations - Execution Payload - non_empty_extra_data_first_paylo OK -+ [Valid] EF - Electra - Operations - Execution Payload - non_empty_extra_data_regular_pay OK -+ [Valid] EF - Electra - Operations - Execution Payload - non_empty_transactions_first_pay OK -+ [Valid] EF - Electra - Operations - Execution Payload - non_empty_transactions_regular_p OK -+ [Valid] EF - Electra - Operations - Execution Payload - randomized_non_validated_executi OK -+ [Valid] EF - Electra - Operations - Execution Payload - randomized_non_validated_executi OK -+ [Valid] EF - Electra - Operations - Execution Payload - success_first_payload OK -+ [Valid] EF - Electra - Operations - Execution Payload - success_first_payload_with_gap_s OK -+ [Valid] EF - Electra - Operations - Execution Payload - success_regular_payload OK -+ [Valid] EF - Electra - Operations - Execution Payload - success_regular_payload_with_gap OK -+ [Valid] EF - Electra - Operations - Execution Payload - zero_length_transaction_first_pa OK -+ [Valid] EF - Electra - Operations - Execution Payload - zero_length_transaction_regular_ OK -+ [Valid] EF - Electra - Operations - Execution Payload - zeroed_commitment OK -``` -OK: 38/38 Fail: 0/38 Skip: 0/38 -## EF - Electra - Operations - Proposer Slashing [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_different_proposer_indic OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_headers_are_same_sigs_ar OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_headers_are_same_sigs_ar OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_proposer_index OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_sig_1 OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_sig_1_and_2 OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_sig_1_and_2_sw OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_incorrect_sig_2 OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_proposer_is_not_activate OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_proposer_is_slashed OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_proposer_is_withdrawn OK -+ [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_slots_of_different_epoch OK -+ [Valid] EF - Electra - Operations - Proposer Slashing - basic OK -+ [Valid] EF - Electra - Operations - Proposer Slashing - block_header_from_future OK -+ [Valid] EF - Electra - Operations - Proposer Slashing - slashed_and_proposer_index_the_s OK -``` -OK: 15/15 Fail: 0/15 Skip: 0/15 -## EF - Electra - Operations - Sync Aggregate [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_bad_domain OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_extra_participant OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_infinite_signatur OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_infinite_signatur OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_missing_participa OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_no_participants OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_past_block OK -+ [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_previous_committe OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - proposer_in_committee_with_particip OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - proposer_in_committee_without_parti OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_all_but_one_participating_wi OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_high_participation_without_d OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_low_participation_without_du OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_misc_balances_and_half_parti OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_only_one_participant_without OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - random_with_exits_without_duplicate OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_empty_partic OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_nonduplicate OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_rewards_not_full_par OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_nonparticipatin OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_nonparticipatin OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_participating_e OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_participating_w OK -+ [Valid] EF - Electra - Operations - Sync Aggregate - valid_signature_future_committee OK -``` -OK: 24/24 Fail: 0/24 Skip: 0/24 -## EF - Electra - Operations - Voluntary Exit [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_incorrect_signature OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_already_exited OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_exit_in_future OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_has_pending_withd OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_incorrect_validat OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_not_active OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_validator_not_active_long_e OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_voluntary_exit_with_current OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_voluntary_exit_with_current OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_voluntary_exit_with_genesis OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_voluntary_exit_with_genesis OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_v OK -+ [Invalid] EF - Electra - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_v OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - basic OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - default_exit_epoch_subsequent_exit OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - min_balance_exit OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - min_balance_exits_above_churn OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - min_balance_exits_up_to_churn OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - success_exit_queue__min_churn OK -+ [Valid] EF - Electra - Operations - Voluntary Exit - success_exit_queue__scaled_churn OK -``` -OK: 20/20 Fail: 0/20 Skip: 0/20 -## EF - Electra - Operations - Withdrawals [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_f OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_a_lot_mixed_withdrawable_in_qu OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_a_lot_partially_withdrawable_t OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_address_full OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_address_partial OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_amount_full OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_amount_partial OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_incorrect_withdrawal_index OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_many_incorrectly_full OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_many_incorrectly_partial OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_max_per_slot_full_withdrawals_ OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_max_per_slot_partial_withdrawa OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_non_withdrawable_non_empty_wit OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_expected_full_withdrawal_a OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_expected_full_withdrawal_a OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_expected_partial_withdrawa OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_of_many_incorrectly_full OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_one_of_many_incorrectly_partia OK -+ [Invalid] EF - Electra - Operations - Withdrawals - invalid_two_expected_partial_withdrawa OK -+ [Valid] EF - Electra - Operations - Withdrawals - all_withdrawal OK -+ [Valid] EF - Electra - Operations - Withdrawals - no_withdrawals_but_some_next_epoch OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_0 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_full_withdrawals_0 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_full_withdrawals_1 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_full_withdrawals_2 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_full_withdrawals_3 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_1 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_2 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_3 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_4 OK -+ [Valid] EF - Electra - Operations - Withdrawals - random_partial_withdrawals_5 OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_all_fully_withdrawable OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_all_partially_withdrawable OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_excess_balance_but_no_max_effe OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_max_partial_withdrawable OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_max_plus_one_withdrawable OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_mixed_fully_and_partial_withdr OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_no_excess_balance OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_no_max_effective_balance OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_full_withdrawal OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_activ OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_exite OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_exite OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_in_ex OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawable_not_y OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_one_partial_withdrawal OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_two_partial_withdrawable OK -+ [Valid] EF - Electra - Operations - Withdrawals - success_zero_expected_withdrawals OK -+ [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_balance OK -+ [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK -+ [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK -``` OK: 51/51 Fail: 0/51 Skip: 0/51 -## EF - Electra - Random [Preset: minimal] -```diff -+ [Valid] EF - Electra - Random - randomized_0 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_1 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_10 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_11 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_12 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_13 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_14 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_15 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_2 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_3 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_4 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_5 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_6 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_7 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_8 [Preset: minimal] OK -+ [Valid] EF - Electra - Random - randomized_9 [Preset: minimal] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 -## EF - Electra - Rewards [Preset: minimal] -```diff -+ EF - Electra - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK -+ EF - Electra - Rewards - empty [Preset: minimal] OK -+ EF - Electra - Rewards - empty_leak [Preset: minimal] OK -+ EF - Electra - Rewards - full_all_correct [Preset: minimal] OK -+ EF - Electra - Rewards - full_but_partial_participation [Preset: minimal] OK -+ EF - Electra - Rewards - full_but_partial_participation_leak [Preset: minimal] OK -+ EF - Electra - Rewards - full_leak [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_0 [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_1 [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_2 [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_3 [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_4 [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_leak [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_low_balances_0 [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_low_balances_1 [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_misc_balances [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_seven_epoch_leak [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_ten_epoch_leak [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_without_leak_0 [Preset: minimal] OK -+ EF - Electra - Rewards - full_random_without_leak_and_current_exit_0 [Preset: minimal] OK -+ EF - Electra - Rewards - half_full [Preset: minimal] OK -+ EF - Electra - Rewards - half_full_leak [Preset: minimal] OK -+ EF - Electra - Rewards - quarter_full [Preset: minimal] OK -+ EF - Electra - Rewards - quarter_full_leak [Preset: minimal] OK -+ EF - Electra - Rewards - some_very_low_effective_balances_that_attested [Preset: minimal] OK -+ EF - Electra - Rewards - some_very_low_effective_balances_that_attested_leak [Preset: mini OK -+ EF - Electra - Rewards - some_very_low_effective_balances_that_did_not_attest [Preset: min OK -+ EF - Electra - Rewards - some_very_low_effective_balances_that_did_not_attest_leak [Preset OK -+ EF - Electra - Rewards - with_exited_validators [Preset: minimal] OK -+ EF - Electra - Rewards - with_exited_validators_leak [Preset: minimal] OK -+ EF - Electra - Rewards - with_not_yet_activated_validators [Preset: minimal] OK -+ EF - Electra - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK -+ EF - Electra - Rewards - with_slashed_validators [Preset: minimal] OK -+ EF - Electra - Rewards - with_slashed_validators_leak [Preset: minimal] OK -``` -OK: 34/34 Fail: 0/34 Skip: 0/34 -## EF - Electra - SSZ consensus objects [Preset: minimal] -```diff -+ Testing AggregateAndProof OK -+ Testing Attestation OK -+ Testing AttestationData OK -+ Testing AttesterSlashing OK -+ Testing BLSToExecutionChange OK -+ Testing BeaconBlock OK -+ Testing BeaconBlockBody OK -+ Testing BeaconBlockHeader OK -+ Testing BeaconState OK -+ Testing BlobIdentifier OK -+ Testing BlobSidecar OK -+ Testing Checkpoint OK -+ Testing Consolidation OK -+ Testing ContributionAndProof OK -+ Testing Deposit OK -+ Testing DepositData OK -+ Testing DepositMessage OK -+ Testing DepositReceipt OK -+ Testing Eth1Block OK -+ Testing Eth1Data OK -+ Testing ExecutionLayerWithdrawalRequest OK -+ Testing ExecutionPayload OK -+ Testing ExecutionPayloadHeader OK -+ Testing Fork OK -+ Testing ForkData OK -+ Testing HistoricalBatch OK -+ Testing HistoricalSummary OK -+ Testing IndexedAttestation OK -+ Testing LightClientBootstrap OK -+ Testing LightClientFinalityUpdate OK -+ Testing LightClientHeader OK -+ Testing LightClientOptimisticUpdate OK -+ Testing LightClientUpdate OK -+ Testing PendingAttestation OK -+ Testing PendingBalanceDeposit OK -+ Testing PendingConsolidation OK -+ Testing PendingPartialWithdrawal OK -+ Testing PowBlock OK -+ Testing ProposerSlashing OK -+ Testing SignedAggregateAndProof OK -+ Testing SignedBLSToExecutionChange OK -+ Testing SignedBeaconBlock OK -+ Testing SignedBeaconBlockHeader OK -+ Testing SignedConsolidation 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 -+ Testing Withdrawal OK -``` -OK: 55/55 Fail: 0/55 Skip: 0/55 -## EF - Electra - Sanity - Blocks [Preset: minimal] -```diff -+ [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_eth1_deposits_overl OK -+ [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_not_enough_eth1_dep OK -+ [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_too_many_eth1_depos OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_duplicate_bls_changes_same_block [Prese OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: m OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pr OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_exceed_max_blobs_per_block [Preset: min OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_incorrect_block_sig [Preset: minimal] OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expec OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propo OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_incorrect_state_root [Preset: minimal] OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_is_execution_enabled_false [Preset: min OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_max_blobs_per_block_two_txs [Preset: mi OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_one_blob_max_plus_one_txs [Preset: mini OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: mi OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_parent_from_same_slot [Preset: minimal] OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: min OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_same_slot_block_transition [Preset: min OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [ OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_two_bls_changes_of_different_addresses_ OK -+ [Invalid] EF - Electra - Sanity - Blocks - invalid_withdrawal_fail_second_block_payload_is OK -+ [Invalid] EF - Electra - Sanity - Blocks - slash_and_exit_same_index [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - activate_and_partial_withdrawal_max_effective_b OK -+ [Valid] EF - Electra - Sanity - Blocks - activate_and_partial_withdrawal_overdeposit [Pr OK -+ [Valid] EF - Electra - Sanity - Blocks - attestation [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - attester_slashing [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - balance_driven_status_transitions [Preset: mini OK -+ [Valid] EF - Electra - Sanity - Blocks - block_transition_randomized_payload [Preset: mi OK -+ [Valid] EF - Electra - Sanity - Blocks - bls_change [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_and_bls_change [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_in_block [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_top_up [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__deposit_and_top_up_same_blo OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__process_eth1_deposits [Pres OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__process_eth1_deposits_up_to OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__process_max_eth1_deposits [ OK -+ [Valid] EF - Electra - Sanity - Blocks - deposit_transition__start_index_is_set [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - duplicate_attestation_same_block [Preset: minim OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_block_transition [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_block_transition_large_validator_set [Pre OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_block_transition_no_tx [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_epoch_transition [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_epoch_transition_large_validator_set [Pre OK -+ [Valid] EF - Electra - Sanity - Blocks - empty_epoch_transition_not_finalizing [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - eth1_data_votes_consensus [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - eth1_data_votes_no_consensus [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - exit_and_bls_change [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_random_operations_0 [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_random_operations_1 [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_random_operations_2 [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_random_operations_3 [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - full_withdrawal_in_epoch_transition [Preset: mi OK -+ [Valid] EF - Electra - Sanity - Blocks - high_proposer_index [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - historical_batch [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - inactivity_scores_full_participation_leaking [P OK -+ [Valid] EF - Electra - Sanity - Blocks - inactivity_scores_leaking [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - many_partial_withdrawals_in_epoch_transition [P OK -+ [Valid] EF - Electra - Sanity - Blocks - max_blobs_per_block [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - mix_blob_tx_and_non_blob_tx [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - multiple_different_proposer_slashings_same_bloc OK -+ [Valid] EF - Electra - Sanity - Blocks - multiple_different_validator_exits_same_block [ OK -+ [Valid] EF - Electra - Sanity - Blocks - one_blob [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - one_blob_max_txs [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - one_blob_two_txs [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - partial_withdrawal_in_epoch_transition [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - proposer_after_inactive_index [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - proposer_self_slashing [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - proposer_slashing [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - skipped_slots [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee__empty [Preset: minima OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee__full [Preset: minimal OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee__half [Preset: minimal OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee_genesis__empty [Preset OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee_genesis__full [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK -+ [Valid] EF - Electra - Sanity - Blocks - top_up_and_partial_withdrawable_validator [Pres OK -+ [Valid] EF - Electra - Sanity - Blocks - top_up_to_fully_withdrawn_validator [Preset: mi OK -+ [Valid] EF - Electra - Sanity - Blocks - voluntary_exit [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - withdrawal_success_two_blocks [Preset: minimal] OK -+ [Valid] EF - Electra - Sanity - Blocks - zero_blob [Preset: minimal] OK -``` -OK: 83/83 Fail: 0/83 Skip: 0/83 -## EF - Electra - Sanity - Slots [Preset: minimal] -```diff -+ EF - Electra - Slots - double_empty_epoch [Preset: minimal] OK -+ EF - Electra - Slots - empty_epoch [Preset: minimal] OK -+ EF - Electra - Slots - historical_accumulator [Preset: minimal] OK -+ EF - Electra - Slots - over_epoch_boundary [Preset: minimal] OK -+ EF - Electra - Slots - slots_1 [Preset: minimal] OK -+ EF - Electra - Slots - slots_2 [Preset: minimal] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Electra - Transition [Preset: minimal] -```diff -+ EF - Electra - Transition - higher_churn_limit_to_lower [Preset: minimal] OK -+ EF - Electra - Transition - non_empty_historical_roots [Preset: minimal] OK -+ EF - Electra - Transition - normal_transition [Preset: minimal] OK -+ EF - Electra - Transition - simple_transition [Preset: minimal] OK -+ EF - Electra - Transition - transition_attestation_from_previous_fork_with_new_range [Pres OK -+ EF - Electra - Transition - transition_missing_first_post_block [Preset: minimal] OK -+ EF - Electra - Transition - transition_missing_last_pre_fork_block [Preset: minimal] OK -+ EF - Electra - Transition - transition_only_blocks_post_fork [Preset: minimal] OK -+ EF - Electra - Transition - transition_randomized_state [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_activation_at_fork_epoch [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_attester_slashing_right_after_fork [Preset: mi OK -+ EF - Electra - Transition - transition_with_attester_slashing_right_before_fork [Preset: m OK -+ EF - Electra - Transition - transition_with_btec_right_after_fork [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_btec_right_before_fork [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_deposit_right_after_fork [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_deposit_right_before_fork [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_finality [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_leaking_at_fork [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_leaking_pre_fork [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_no_attestations_until_after_fork [Preset: mini OK -+ EF - Electra - Transition - transition_with_non_empty_activation_queue [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_one_fourth_exiting_validators_exit_at_fork [Pr OK -+ EF - Electra - Transition - transition_with_one_fourth_exiting_validators_exit_post_fork [ OK -+ EF - Electra - Transition - transition_with_one_fourth_slashed_active_validators_pre_fork OK -+ EF - Electra - Transition - transition_with_proposer_slashing_right_after_fork [Preset: mi OK -+ EF - Electra - Transition - transition_with_proposer_slashing_right_before_fork [Preset: m OK -+ EF - Electra - Transition - transition_with_random_half_participation [Preset: minimal] OK -+ EF - Electra - Transition - transition_with_random_three_quarters_participation [Preset: m OK -+ EF - Electra - Transition - transition_with_voluntary_exit_right_after_fork [Preset: minim OK -+ EF - Electra - Transition - transition_with_voluntary_exit_right_before_fork [Preset: mini OK -``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Light client - Single merkle proof [Preset: minimal] ```diff + Light client - Single merkle proof - minimal/altair/light_client/single_merkle_proof/Beaco OK @@ -3524,149 +2119,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Slashings reset - flush_slashings [Preset: minimal] OK ``` OK: 1/1 Fail: 0/1 Skip: 0/1 -## EF - Phase 0 - Operations - Attestation [Preset: minimal] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK -``` -OK: 41/41 Fail: 0/41 Skip: 0/41 -## EF - Phase 0 - Operations - Attester Slashing [Preset: minimal] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK -``` -OK: 30/30 Fail: 0/30 Skip: 0/30 -## EF - Phase 0 - Operations - Block Header [Preset: minimal] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Phase 0 - Operations - Deposit [Preset: minimal] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK -``` -OK: 17/17 Fail: 0/17 Skip: 0/17 -## EF - Phase 0 - Operations - Proposer Slashing [Preset: minimal] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK -``` -OK: 15/15 Fail: 0/15 Skip: 0/15 -## EF - Phase 0 - Operations - Voluntary Exit [Preset: minimal] -```diff -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -+ [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK -``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Phase 0 - Rewards [Preset: minimal] ```diff + EF - Phase 0 - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -3751,94 +2203,6 @@ OK: 49/49 Fail: 0/49 Skip: 0/49 + Testing VoluntaryExit OK ``` OK: 27/27 Fail: 0/27 Skip: 0/27 -## EF - Phase 0 - Sanity - Slots [Preset: minimal] -```diff -+ EF - Phase 0 - Slots - double_empty_epoch [Preset: minimal] OK -+ EF - Phase 0 - Slots - empty_epoch [Preset: minimal] OK -+ EF - Phase 0 - Slots - historical_accumulator [Preset: minimal] OK -+ EF - Phase 0 - Slots - over_epoch_boundary [Preset: minimal] OK -+ EF - Phase 0 - Slots - slots_1 [Preset: minimal] OK -+ EF - Phase 0 - Slots - slots_2 [Preset: minimal] OK -``` -OK: 6/6 Fail: 0/6 Skip: 0/6 -## EF - Phase0 - Finality [Preset: minimal] -```diff -+ [Valid] EF - Phase0 - Finality - finality_no_updates_at_genesis [Preset: minimal] OK -+ [Valid] EF - Phase0 - Finality - finality_rule_1 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Finality - finality_rule_2 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Finality - finality_rule_3 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Finality - finality_rule_4 [Preset: minimal] OK -``` -OK: 5/5 Fail: 0/5 Skip: 0/5 -## EF - Phase0 - Random [Preset: minimal] -```diff -+ [Valid] EF - Phase0 - Random - randomized_0 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_1 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_10 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_11 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_12 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_13 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_14 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_15 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_2 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_3 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_4 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_5 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_6 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_7 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_8 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Random - randomized_9 [Preset: minimal] OK -``` -OK: 16/16 Fail: 0/16 Skip: 0/16 -## EF - Phase0 - Sanity - Blocks [Preset: minimal] -```diff -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_duplicate_attester_slashing_same_block [ OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_duplicate_deposit_same_block [Preset: mi OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_duplicate_proposer_slashings_same_block OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_duplicate_validator_exit_same_block [Pre OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_incorrect_block_sig [Preset: minimal] OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_expect OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_incorrect_proposer_index_sig_from_propos OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_incorrect_state_root [Preset: minimal] OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_only_increase_deposit_count [Preset: min OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_parent_from_same_slot [Preset: minimal] OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_prev_slot_block_transition [Preset: mini OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_proposal_for_genesis_slot [Preset: minim OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_same_slot_block_transition [Preset: mini OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - invalid_similar_proposer_slashings_same_block [P OK -+ [Invalid] EF - Phase0 - Sanity - Blocks - slash_and_exit_same_index [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - attestation [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - attester_slashing [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - balance_driven_status_transitions [Preset: minim OK -+ [Valid] EF - Phase0 - Sanity - Blocks - deposit_in_block [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - deposit_top_up [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - duplicate_attestation_same_block [Preset: minima OK -+ [Valid] EF - Phase0 - Sanity - Blocks - empty_block_transition [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - empty_block_transition_large_validator_set [Pres OK -+ [Valid] EF - Phase0 - Sanity - Blocks - empty_epoch_transition [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - empty_epoch_transition_large_validator_set [Pres OK -+ [Valid] EF - Phase0 - Sanity - Blocks - empty_epoch_transition_not_finalizing [Preset: m OK -+ [Valid] EF - Phase0 - Sanity - Blocks - eth1_data_votes_consensus [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - eth1_data_votes_no_consensus [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - full_random_operations_0 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - full_random_operations_1 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - full_random_operations_2 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - full_random_operations_3 [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - high_proposer_index [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - historical_batch [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - multiple_attester_slashings_no_overlap [Preset: OK -+ [Valid] EF - Phase0 - Sanity - Blocks - multiple_attester_slashings_partial_overlap [Pre OK -+ [Valid] EF - Phase0 - Sanity - Blocks - multiple_different_proposer_slashings_same_block OK -+ [Valid] EF - Phase0 - Sanity - Blocks - multiple_different_validator_exits_same_block [P OK -+ [Valid] EF - Phase0 - Sanity - Blocks - proposer_after_inactive_index [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - proposer_self_slashing [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - proposer_slashing [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - skipped_slots [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK -+ [Valid] EF - Phase0 - Sanity - Blocks - voluntary_exit [Preset: minimal] OK -``` -OK: 45/45 Fail: 0/45 Skip: 0/45 ## ForkChoice ```diff + ForkChoice - minimal/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_honest_ OK @@ -4059,4 +2423,4 @@ OK: 185/207 Fail: 0/207 Skip: 22/207 OK: 3/3 Fail: 0/3 Skip: 0/3 ---TOTAL--- -OK: 3306/3329 Fail: 0/3329 Skip: 23/3329 +OK: 1934/1957 Fail: 0/1957 Skip: 23/1957 diff --git a/beacon_chain/beacon_chain_db.nim b/beacon_chain/beacon_chain_db.nim index 54500005d9..a8eb2e56a8 100644 --- a/beacon_chain/beacon_chain_db.nim +++ b/beacon_chain/beacon_chain_db.nim @@ -254,6 +254,13 @@ func blobkey(root: Eth2Digest, index: BlobIndex) : array[40, byte] = ret +func columnkey(root: Eth2Digest, index: ColumnIndex): array[40, byte] = + var ret: array[40, byte] + ret[0..<8] = toBytes(index) + ret[8..<40] = root.data + + ret + template expectDb(x: auto): untyped = # There's no meaningful error handling implemented for a corrupt database or # full disk - this requires manual intervention, so we'll panic for now @@ -808,11 +815,22 @@ proc putBlobSidecar*( let block_root = hash_tree_root(value.signed_block_header.message) db.blobs.putSZSSZ(blobkey(block_root, value.index), value) +proc putDataColumnSidecar*( + db: BeaconChainDB, + value: DataColumnSidecar) = + let block_root = hash_tree_root(value.signed_block_header.message) + db.blobs.putSZSSZ(columnkey(block_root, value.index), value) + proc delBlobSidecar*( db: BeaconChainDB, root: Eth2Digest, index: BlobIndex): bool = db.blobs.del(blobkey(root, index)).expectDb() +proc delDataColumnSidecar*( + db: BeaconChainDB, + root: Eth2Digest, index: ColumnIndex): bool = + db.blobs.del(columnkey(root, index)).expectDb() + proc updateImmutableValidators*( db: BeaconChainDB, validators: openArray[Validator]) = # Must be called before storing a state that references the new validators @@ -1071,6 +1089,17 @@ proc getBlobSidecar*(db: BeaconChainDB, root: Eth2Digest, index: BlobIndex, value: var BlobSidecar): bool = db.blobs.getSZSSZ(blobkey(root, index), value) == GetResult.found +proc getDataColumnSidecarSZ*(db: BeaconChainDB, root: Eth2Digest, + index: ColumnIndex, data: var seq[byte]): bool = + let dataPtr = addr data # Short-lived + func decode(data: openArray[byte]) = + assign(dataPtr[], data) + db.blobs.get(columnkey(root, index), decode).expectDb() + +proc getDataColumnSidecar*(db: BeaconChainDB, root: Eth2Digest, index: ColumnIndex, + value: var DataColumnSidecar): bool = + db.blobs.getSZSSZ(columnkey(root, index), value) == GetResult.found + proc getBlockSZ*( db: BeaconChainDB, key: Eth2Digest, data: var seq[byte], T: type phase0.TrustedSignedBeaconBlock): bool = diff --git a/beacon_chain/beacon_node.nim b/beacon_chain/beacon_node.nim index 71c3ab6d4a..987bb9d3fb 100644 --- a/beacon_chain/beacon_node.nim +++ b/beacon_chain/beacon_node.nim @@ -22,7 +22,8 @@ import ./el/el_manager, ./consensus_object_pools/[ blockchain_dag, blob_quarantine, block_quarantine, consensus_manager, - attestation_pool, sync_committee_msg_pool, validator_change_pool], + data_column_quarantine, attestation_pool, sync_committee_msg_pool, + validator_change_pool], ./spec/datatypes/[base, altair], ./spec/eth2_apis/dynamic_fee_recipients, ./sync/[sync_manager, request_manager], @@ -71,6 +72,7 @@ type dag*: ChainDAGRef quarantine*: ref Quarantine blobQuarantine*: ref BlobQuarantine + dataColumnQuarantine*: ref DataColumnQuarantine attestationPool*: ref AttestationPool syncCommitteeMsgPool*: ref SyncCommitteeMsgPool lightClientPool*: ref LightClientPool diff --git a/beacon_chain/conf.nim b/beacon_chain/conf.nim index c79631c080..5dd83c062d 100644 --- a/beacon_chain/conf.nim +++ b/beacon_chain/conf.nim @@ -1495,11 +1495,11 @@ proc loadKzgTrustedSetup*(): Result[void, string] = vendorDir & "/nim-kzg4844/kzg4844/csources/src/trusted_setup.txt") static: doAssert const_preset in ["mainnet", "gnosis", "minimal"] - Kzg.loadTrustedSetupFromString(trustedSetup) + Kzg.loadTrustedSetupFromString(trustedSetup, 0) proc loadKzgTrustedSetup*(trustedSetupPath: string): Result[void, string] = try: - Kzg.loadTrustedSetupFromString(readFile(trustedSetupPath)) + Kzg.loadTrustedSetupFromString(readFile(trustedSetupPath), 0) except IOError as err: err(err.msg) diff --git a/beacon_chain/consensus_object_pools/block_quarantine.nim b/beacon_chain/consensus_object_pools/block_quarantine.nim index 22d3098275..868db23424 100644 --- a/beacon_chain/consensus_object_pools/block_quarantine.nim +++ b/beacon_chain/consensus_object_pools/block_quarantine.nim @@ -24,6 +24,7 @@ const ## Enough for finalization in an alternative fork MaxBlobless = SLOTS_PER_EPOCH ## Arbitrary + MaxColumnless = SLOTS_PER_EPOCH MaxUnviables = 16 * 1024 ## About a day of blocks - most likely not needed but it's quite cheap.. @@ -57,6 +58,8 @@ type ## all blobs for this block, we can proceed to resolving the ## block as well. A blobless block inserted into this table must ## have a resolved parent (i.e., it is not an orphan). + + columnless: OrderedTable[Eth2Digest, ForkedSignedBeaconBlock] unviable*: OrderedTable[Eth2Digest, tuple[]] ## Unviable blocks are those that come from a history that does not @@ -236,6 +239,18 @@ func cleanupBlobless(quarantine: var Quarantine, finalizedSlot: Slot) = quarantine.addUnviable k quarantine.blobless.del k +func cleanupColumnless(quarantine: var Quarantine, finalizedSlot: Slot) = + var toDel: seq[Eth2Digest] + + for k,v in quarantine.columnless: + withBlck(v): + if not isViable(finalizedSlot, forkyBlck.message.slot): + toDel.add k + + for k in toDel: + quarantine.addUnviable k + quarantine.columnless.del k + func clearAfterReorg*(quarantine: var Quarantine) = ## Clear missing and orphans to start with a fresh slate in case of a reorg ## Unviables remain unviable and are not cleared. @@ -336,3 +351,39 @@ func popBlobless*( iterator peekBlobless*(quarantine: var Quarantine): ForkedSignedBeaconBlock = for k, v in quarantine.blobless.mpairs(): yield v + +proc addColumnless*( + quarantine: var Quarantine, finalizedSlot: Slot, + signedBlock: deneb.SignedBeaconBlock | electra.SignedBeaconBlock): bool = + + if not isViable(finalizedSlot, signedBlock.message.slot): + quarantine.addUnviable(signedBlock.root) + return false + + quarantine.cleanupColumnless(finalizedSlot) + + if quarantine.columnless.lenu64 >= MaxColumnless: + var oldest_columnless_key: Eth2Digest + for k in quarantine.columnless.keys: + oldest_columnless_key = k + break + quarantine.columnless.del oldest_columnless_key + + debug "block quarantine: Adding columnless", blck = shortLog(signedBlock) + quarantine.columnless[signedBlock.root] = + ForkedSignedBeaconBlock.init(signedBlock) + quarantine.missing.del(signedBlock.root) + true + +func popColumnless*( + quarantine: var Quarantine, + root: Eth2Digest): Opt[ForkedSignedBeaconBlock] = + var blck: ForkedSignedBeaconBlock + if quarantine.columnless.pop(root, blck): + Opt.some(blck) + else: + Opt.none(ForkedSignedBeaconBlock) + +iterator peekColumnless*(quarantine: var Quarantine): ForkedSignedBeaconBlock = + for k,v in quarantine.columnless.mpairs(): + yield v \ No newline at end of file diff --git a/beacon_chain/consensus_object_pools/data_column_quarantine.nim b/beacon_chain/consensus_object_pools/data_column_quarantine.nim new file mode 100644 index 0000000000..32051f5145 --- /dev/null +++ b/beacon_chain/consensus_object_pools/data_column_quarantine.nim @@ -0,0 +1,102 @@ +# beacon_chain +# Copyright (c) 2018-2024 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. + +{.push raises: [].} + +import + std/tables, + ../spec/[helpers, eip7594_helpers] + +from std/sequtils import mapIt +from std/strutils import join + +const + MaxDataColumns = 3 * SLOTS_PER_EPOCH * NUMBER_OF_COLUMNS + ## Same limit as `MaxOrphans` in `block_quarantine` + ## data columns may arrive before an orphan is tagged `columnless` + +type + DataColumnQuarantine* = object + data_columns*: + OrderedTable[(Eth2Digest, ColumnIndex), ref DataColumnSidecar] + onDataColumnSidecarCallback*: OnDataColumnSidecarCallback + + DataColumnFetchRecord* = object + block_root*: Eth2Digest + indices*: seq[ColumnIndex] + + OnDataColumnSidecarCallback = proc(data: DataColumnSidecar) {.gcsafe, raises: [].} + +func shortLog*(x: seq[ColumnIndex]): string = + "<" & x.mapIt($it).join(", ") & ">" + +func shortLog*(x: seq[DataColumnFetchRecord]): string = + "[" & x.mapIt(shortLog(it.block_root) & shortLog(it.indices)).join(", ") & "]" + +func put*(quarantine: var DataColumnQuarantine, dataColumnSidecar: ref DataColumnSidecar) = + if quarantine.data_columns.lenu64 >= MaxDataColumns: + # FIFO if full. For example, sync manager and request manager can race to + # put data columns in at the same time, so one gets blob insert -> block resolve + # -> data columns insert sequence, which leaves garbage data columns. + # + # This also therefore automatically garbage-collects otherwise valid garbage + # data columns which are correctly signed, point to either correct block roots or a + # block root which isn't ever seen, and then are for any reason simply never + # used. + var oldest_column_key: (Eth2Digest, ColumnIndex) + for k in quarantine.data_columns.keys: + oldest_column_key = k + break + quarantine.data_columns.del(oldest_column_key) + let block_root = hash_tree_root(dataColumnSidecar.signed_block_header.message) + discard quarantine.data_columns.hasKeyOrPut( + (block_root, dataColumnSidecar.index), dataColumnSidecar) + +func hasDataColumn*( + quarantine: DataColumnQuarantine, + slot: Slot, + proposer_index: uint64, + index: ColumnIndex): bool = + for data_column_sidecar in quarantine.data_columns.values: + template block_header: untyped = data_column_sidecar.signed_block_header.message + if block_header.slot == slot and + block_header.proposer_index == proposer_index and + data_column_sidecar.index == index: + return true + false + +func popDataColumns*( + quarantine: var DataColumnQuarantine, digest: Eth2Digest, + blck: deneb.SignedBeaconBlock | electra.SignedBeaconBlock): + seq[ref DataColumnSidecar] = + var r: seq[ref DataColumnSidecar] + for idx in 0..= ConsensusFork.Deneb: if blobsOpt.isSome: let blobs = blobsOpt.get() let kzgCommits = signedBlock.message.body.blob_kzg_commitments.asSeq if blobs.len > 0 or kzgCommits.len > 0: - let r = validate_blobs(kzgCommits, blobs.mapIt(it.blob), + let r = validate_blobs(kzgCommits, blobs.mapIt(KzgBlob(bytes: it.blob)), blobs.mapIt(it.kzg_proof)) if r.isErr(): debug "backfill blob validation failed", @@ -201,6 +212,23 @@ proc storeBackfillBlock( if not blobsOk: return err(VerifierError.Invalid) + + when typeof(signedBlock).kind >= ConsensusFork.Deneb: + if dataColumnsOpt.isSome: + let data_columns = dataColumnsOpt.get() + if data_columns.len > 0: + for i in 0..= ConsensusFork.Deneb: + var data_column_sidecars: DataColumnSidecars + for i in 0.. 0 or kzgCommits.len > 0: - let r = validate_blobs(kzgCommits, blobs.mapIt(it.blob), + let r = validate_blobs(kzgCommits, blobs.mapIt(KzgBlob(bytes: it.blob)), blobs.mapIt(it.kzg_proof)) if r.isErr(): debug "blob validation failed", @@ -588,6 +644,23 @@ proc storeBlock( msg = r.error() return err((VerifierError.Invalid, ProcessingStatus.completed)) + if dataColumnsOpt.isSome: + let data_column_sidecars = dataColumnsOpt.get + if data_column_sidecars.len > 0: + for i in 0..= ConsensusFork.Deneb: + # if self.blobQuarantine[].hasBlobs(signedBlock): + # Opt.some(self.blobQuarantine[].popBlobs(signedBlock.root, signedBlock)) + # else: + # discard self.quarantine[].addBlobless(self.dag.finalizedHead.slot, + # signedBlock) + # return v + # else: + # Opt.none(BlobSidecars) + + # self.blockProcessor[].enqueueBlock( + # src, ForkedSignedBeaconBlock.init(signedBlock), + # blobs, + # Opt.none(DataColumnSidecars), + # maybeFinalized = maybeFinalized, + # validationDur = nanoseconds( + # (self.getCurrentBeaconTime() - wallTime).nanoseconds)) + + let data_columns = when typeof(signedBlock).kind >= ConsensusFork.Deneb: - if self.blobQuarantine[].hasBlobs(signedBlock): - Opt.some(self.blobQuarantine[].popBlobs(signedBlock.root, signedBlock)) + if self.dataColumnQuarantine[].hasDataColumns(signedBlock): + Opt.some(self.dataColumnQuarantine[].popDataColumns(signedBlock.root, signedBlock)) else: - discard self.quarantine[].addBlobless(self.dag.finalizedHead.slot, - signedBlock) + discard self.quarantine[].addColumnless(self.dag.finalizedHead.slot, + signedBlock) return v else: - Opt.none(BlobSidecars) + Opt.none(DataColumnSidecars) self.blockProcessor[].enqueueBlock( src, ForkedSignedBeaconBlock.init(signedBlock), - blobs, + Opt.none(BlobSidecars), + data_columns, maybeFinalized = maybeFinalized, validationDur = nanoseconds( (self.getCurrentBeaconTime() - wallTime).nanoseconds)) @@ -315,7 +340,8 @@ proc processBlobSidecar*( if self.blobQuarantine[].hasBlobs(forkyBlck): self.blockProcessor[].enqueueBlock( MsgSource.gossip, blobless, - Opt.some(self.blobQuarantine[].popBlobs(block_root, forkyBlck))) + Opt.some(self.blobQuarantine[].popBlobs(block_root, forkyBlck)), + Opt.none(DataColumnSidecars)) else: discard self.quarantine[].addBlobless( self.dag.finalizedHead.slot, forkyBlck) @@ -345,17 +371,32 @@ proc processDataColumnSidecar*( debug "Data column received", delay let v = - self.dag.validateDataColumnSidecar(self.quarantine, self.blobQuarantine, + self.dag.validateDataColumnSidecar(self.quarantine, self.dataColumnQuarantine, dataColumnSidecar, wallTime, subnet_id) if v.isErr(): debug "Dropping data column", error = v.error() - blob_sidecars_dropped.inc(1, [$v.error[0]]) + data_column_sidecars_dropped.inc(1, [$v.error[0]]) return v - debug "Data column validated" + debug "Data column validated, putting data column in quarantine" + self.dataColumnQuarantine[].put(newClone(dataColumnSidecar)) - # TODO do something with it! + let block_root = hash_tree_root(block_header) + if (let o = self.quarantine[].popColumnless(block_root); o.isSome): + let columnless = o.unsafeGet() + withBlck(columnless): + when consensusFork >= ConsensusFork.Deneb: + if self.dataColumnQuarantine[].hasDataColumns(forkyBlck): + self.blockProcessor[].enqueueBlock( + MsgSource.gossip, columnless, + Opt.none(BlobSidecars), + Opt.some(self.dataColumnQuarantine[].popDataColumns(block_root, forkyBlck))) + else: + discard self.quarantine[].addColumnless( + self.dag.finalizedHead.slot, forkyBlck) + else: + raiseAssert "Could not have been added as columnless" data_column_sidecars_received.inc() data_column_sidecar_delay.observe(delay.toFloatSeconds()) diff --git a/beacon_chain/gossip_processing/gossip_validation.nim b/beacon_chain/gossip_processing/gossip_validation.nim index 958380e046..227dd71d30 100644 --- a/beacon_chain/gossip_processing/gossip_validation.nim +++ b/beacon_chain/gossip_processing/gossip_validation.nim @@ -16,7 +16,7 @@ import beaconstate, state_transition_block, forks, helpers, network, signatures, eip7594_helpers], ../consensus_object_pools/[ attestation_pool, blockchain_dag, blob_quarantine, block_quarantine, - spec_cache, light_client_pool, sync_committee_msg_pool, + data_column_quarantine, spec_cache, light_client_pool, sync_committee_msg_pool, validator_change_pool], ".."/[beacon_clock], ./batch_validation @@ -474,7 +474,7 @@ proc validateBlobSidecar*( # blob_sidecar.blob, blob_sidecar.kzg_commitment, blob_sidecar.kzg_proof)`. block: let ok = verifyProof( - blob_sidecar.blob, + KzgBlob(bytes: blob_sidecar.blob), blob_sidecar.kzg_commitment, blob_sidecar.kzg_proof).valueOr: return dag.checkedReject("BlobSidecar: blob verify failed") @@ -490,7 +490,7 @@ proc validateBlobSidecar*( # https://github.com/ethereum/consensus-specs/blob/5f48840f4d768bf0e0a8156a3ed06ec333589007/specs/_features/eip7594/p2p-interface.md#the-gossip-domain-gossipsub proc validateDataColumnSidecar*( dag: ChainDAGRef, quarantine: ref Quarantine, - blobQuarantine: ref BlobQuarantine, data_column_sidecar: DataColumnSidecar, + dataColumnQuarantine: ref DataColumnQuarantine, data_column_sidecar: DataColumnSidecar, wallTime: BeaconTime, subnet_id: uint64): Result[void, ValidationError] = template block_header: untyped = data_column_sidecar.signed_block_header.message @@ -518,30 +518,23 @@ proc validateDataColumnSidecar*( if not (block_header.slot > dag.finalizedHead.slot): return errIgnore("DataColumnSidecar: slot already finalized") - # [REJECT] The sidecar's `kzg_commitments` inclusion proof is valid as verified by - # `verify_data_column_sidecar_inclusion_proof(sidecar)`. - block: - let v = check_data_column_sidecar_inclusion_proof(data_column_sidecar) - if v.isErr: - return dag.checkedReject(v.error) - - # # [REJECT] The sidecar's column data is valid as - # # verified by `verify_data_column_kzg_proofs(sidecar)` - block: - let r = check_data_column_sidecar_kzg_proofs(data_column_sidecar) - if r.isErr: - return dag.checkedReject(r.error) - # [IGNORE] The sidecar is the first sidecar for the tuple # (block_header.slot, block_header.proposer_index, blob_sidecar.index) # with valid header signature, sidecar inclusion proof, and kzg proof. let block_root = hash_tree_root(block_header) if dag.getBlockRef(block_root).isSome(): return errIgnore("DataColumnSidecar: already have block") - if blobQuarantine[].hasBlob( + if dataColumnQuarantine[].hasDataColumn( block_header.slot, block_header.proposer_index, data_column_sidecar.index): return errIgnore("DataColumnSidecar: already have valid data column from same proposer") + # [REJECT] The sidecar's `kzg_commitments` inclusion proof is valid as verified by + # `verify_data_column_sidecar_inclusion_proof(sidecar)`. + block: + let v = check_data_column_sidecar_inclusion_proof(data_column_sidecar) + if v.isErr: + return dag.checkedReject(v.error) + # [IGNORE] The sidecar's block's parent (defined by # `block_header.parent_root`) has been seen (via both gossip and # non-gossip sources) (a client MAY queue sidecars for processing @@ -549,13 +542,37 @@ proc validateDataColumnSidecar*( # # [REJECT] The sidecar's block's parent (defined by # `block_header.parent_root`) passes validation. - # let parent = dag.getBlockRef(block_header.parent_root).valueOr: - # if block_header.parent_root in quarantine[].unviable: - # quarantine[].addUnviable(block_root) - # return dag.checkedReject("DataColumnSidecar: parent not validated") - # else: - # quarantine[].addMissing(block_header.parent_root) - # return errIgnore("DataColumnSidecar: parent not found") + let parent = dag.getBlockRef(block_header.parent_root).valueOr: + if block_header.parent_root in quarantine[].unviable: + quarantine[].addUnviable(block_root) + return dag.checkedReject("DataColumnSidecar: parent not validated") + else: + quarantine[].addMissing(block_header.parent_root) + return errIgnore("DataColumnSidecar: parent not found") + + # [REJECT] The sidecar is from a higher slot than the sidecar's + # block's parent (defined by `block_header.parent_root`). + if not (block_header.slot > parent.bid.slot): + return dag.checkedReject("DataColumnSidecar: slot lower than parents'") + + # [REJECT] The current finalized_checkpoint is an ancestor of the sidecar's + # block -- i.e. `get_checkpoint_block(store, block_header.parent_root, + # store.finalized_checkpoint.epoch) == store.finalized_checkpoint.root`. + let + finalized_checkpoint = getStateField(dag.headState, finalized_checkpoint) + ancestor = get_ancestor(parent, finalized_checkpoint.epoch.start_slot) + + if ancestor.isNil: + # This shouldn't happen: we should always be able to trace the parent back + # to the finalized checkpoint (else it wouldn't be in the DAG) + return errIgnore("DataColumnSidecar: Can't find ancestor") + + if not ( + finalized_checkpoint.root == ancestor.root or + finalized_checkpoint.root.isZero): + quarantine[].addUnviable(block_root) + return dag.checkedReject( + "DataColumnSidecar: Finalized checkpoint not an ancestor") # [REJECT] The sidecar is proposed by the expected `proposer_index` # for the block's slot in the context of the current shuffling @@ -564,47 +581,34 @@ proc validateDataColumnSidecar*( # shuffling, the sidecar MAY be queued for later processing while proposers # for the block's branch are calculated -- in such a case do not # REJECT, instead IGNORE this message. - # let proposer = getProposer(dag, parent, block_header.slot).valueOr: - # warn "cannot compute proposer for blob" - # return errIgnore("DataColumnSidecar: Cannot compute proposer") # internal issue + let proposer = getProposer(dag, parent, block_header.slot).valueOr: + warn "cannot compute proposer for data column" + return errIgnore("DataColumnSidecar: Cannot compute proposer") # internal issue - # if uint64(proposer) != block_header.proposer_index: - # return dag.checkedReject("DataColumnSidecar: Unexpected proposer") + if uint64(proposer) != block_header.proposer_index: + return dag.checkedReject("DataColumnSidecar: Unexpected proposer") # [REJECT] The proposer signature of `blob_sidecar.signed_block_header`, # is valid with respect to the `block_header.proposer_index` pubkey. - # if not verify_block_signature( - # dag.forkAtEpoch(block_header.slot.epoch), - # getStateField(dag.headState, genesis_validators_root), - # block_header.slot, - # block_root, - # dag.validatorKey(proposer).get(), - # data_column_sidecar.signed_block_header.signature): - # return dag.checkedReject("DataColumnSidecar: Invalid proposer signature") - - # # [REJECT] The sidecar is from a higher slot than the sidecar's - # # block's parent (defined by `block_header.parent_root`). - # if not (block_header.slot > parent.bid.slot): - # return dag.checkedReject("DataColumnSidecar: slot lower than parents'") + if not verify_block_signature( + dag.forkAtEpoch(block_header.slot.epoch), + getStateField(dag.headState, genesis_validators_root), + block_header.slot, + block_root, + dag.validatorKey(proposer).get(), + data_column_sidecar.signed_block_header.signature): + return dag.checkedReject("DataColumnSidecar: Invalid proposer signature") - # [REJECT] The current finalized_checkpoint is an ancestor of the sidecar's - # block -- i.e. `get_checkpoint_block(store, block_header.parent_root, - # store.finalized_checkpoint.epoch) == store.finalized_checkpoint.root`. - # let - # finalized_checkpoint = getStateField(dag.headState, finalized_checkpoint) - # ancestor = get_ancestor(parent, finalized_checkpoint.epoch.start_slot) - - # if ancestor.isNil: - # # This shouldn't happen: we should always be able to trace the parent back - # # to the finalized checkpoint (else it wouldn't be in the DAG) - # return errIgnore("DataColumnSidecar: Can't find ancestor") - - # if not ( - # finalized_checkpoint.root == ancestor.root or - # finalized_checkpoint.root.isZero): - # quarantine[].addUnviable(block_root) - # return dag.checkedReject( - # "DataColumnSidecar: Finalized checkpoint not an ancestor") + # [REJECT] The sidecar's column data is valid as + # verified by `verify_data_column_kzg_proofs(sidecar)` + block: + let r = check_data_column_sidecar_kzg_proofs(data_column_sidecar) + if r.isErr: + return dag.checkedReject(r.error) + + # Send notification about new data column sidecar via callback + if not(isNil(dataColumnQuarantine.onDataColumnSidecarCallback)): + dataColumnQuarantine.onDataColumnSidecarCallback(data_column_sidecar) ok() diff --git a/beacon_chain/networking/eth2_discovery.nim b/beacon_chain/networking/eth2_discovery.nim index a8887aaf0e..0c82f8ead6 100644 --- a/beacon_chain/networking/eth2_discovery.nim +++ b/beacon_chain/networking/eth2_discovery.nim @@ -11,7 +11,7 @@ import std/[algorithm, sequtils], chronos, chronicles, stew/results, eth/p2p/discoveryv5/[enr, protocol, node, random2], - ../spec/datatypes/altair, + ../spec/datatypes/[altair, eip7594], ../spec/eth2_ssz_serialization, ".."/[conf, conf_light_client] @@ -127,6 +127,7 @@ proc queryRandom*( forkId: ENRForkID, wantedAttnets: AttnetBits, wantedSyncnets: SyncnetBits, + wantedCscnets: CscBits, minScore: int): Future[seq[Node]] {.async.} = ## Perform a discovery query for a random target ## (forkId) and matching at least one of the attestation subnets. @@ -151,6 +152,20 @@ proc queryRandom*( if not forkId.isCompatibleForkId(peerForkId): continue + let cscnetsBytes = n.record.get(enrCustodySubnetCountField, seq[byte]) + if cscnetsBytes.isOk(): + let cscnetsNode = + try: + SSZ.decode(cscnetsBytes.get(), CscBits) + except SszError as e: + debug "Could not decode the csc count ENR bitfield of peer", + peer = n.record.toURI(), exception = e.name, msg = e.msg + continue + + for i in 0..= node.cfg.ALTAIR_FORK_EPOCH: findLowSubnets(getSyncCommitteeTopic, SyncSubcommitteeIndex, SYNC_COMMITTEE_SUBNET_COUNT) else: - default(SyncnetBits) + default(SyncnetBits), + findLowSubnets(getDataColumnSidecarTopic, uint64, DATA_COLUMN_SIDECAR_SUBNET_COUNT.int) ) proc runDiscoveryLoop(node: Eth2Node) {.async.} = @@ -1556,23 +1559,29 @@ proc runDiscoveryLoop(node: Eth2Node) {.async.} = while true: let currentEpoch = node.getBeaconTime().slotOrZero.epoch - (wantedAttnets, wantedSyncnets) = node.getLowSubnets(currentEpoch) + (wantedAttnets, wantedSyncnets, wantedCscnets) = node.getLowSubnets(currentEpoch) wantedAttnetsCount = wantedAttnets.countOnes() wantedSyncnetsCount = wantedSyncnets.countOnes() + wantedCscnetsCount = wantedCscnets.countOnes() outgoingPeers = node.peerPool.lenCurrent({PeerType.Outgoing}) targetOutgoingPeers = max(node.wantedPeers div 10, 3) if wantedAttnetsCount > 0 or wantedSyncnetsCount > 0 or - outgoingPeers < targetOutgoingPeers: + wantedCscnetsCount > 0 or outgoingPeers < targetOutgoingPeers: let minScore = - if wantedAttnetsCount > 0 or wantedSyncnetsCount > 0: + if wantedAttnetsCount > 0 or wantedSyncnetsCount > 0 or + wantedCscnetsCount > 0: 1 else: 0 discoveredNodes = await node.discovery.queryRandom( - node.discoveryForkId, wantedAttnets, wantedSyncnets, minScore) + node.discoveryForkId, + wantedAttnets, + wantedSyncnets, + wantedCscnets, + minScore) let newPeers = block: var np = newSeq[PeerAddr]() @@ -1621,6 +1630,15 @@ proc runDiscoveryLoop(node: Eth2Node) {.async.} = # Also, give some time to dial the discovered nodes and update stats etc await sleepAsync(5.seconds) +proc getNodeIdFromPeer*(peer: Peer): NodeId= + # Convert peer id to node id by extracting the peer's public key + let nodeId = + block: + var key: eth2_network.PublicKey + discard peer.peerId.extractPublicKey(key) + keys.PublicKey.fromRaw(key.skkey.getBytes()).get().toNodeId() + nodeId + proc resolvePeer(peer: Peer) = # Resolve task which performs searching of peer's public key and recovery of # ENR using discovery5. We only resolve ENR for peers we know about to avoid @@ -1777,7 +1795,7 @@ proc new(T: type Eth2Node, let connectTimeout = chronos.seconds(10) seenThreshold = chronos.seconds(10) - type MetaData = altair.MetaData # Weird bug without this.. + type MetaData = eip7594.MetaData # Weird bug without this.. # Versions up to v22.3.0 would write an empty `MetaData` to #`data-dir/node-metadata.json` which would then be reloaded on startup - don't @@ -2059,12 +2077,32 @@ proc p2pProtocolBackendImpl*(p: P2PProtocol): Backend = import ./peer_protocol export peer_protocol +proc metadataV2ToV3(metadata: altair.MetaData): eip7594.MetaData = + eip7594.MetaData( + seq_number: metadata.seq_number, + attnets: metadata.attnets, + syncnets: metadata.syncnets) + +proc getMetadata_vx(node: Eth2Node, peer: Peer): + Future[NetRes[eip7594.MetaData]] + {.async: (raises: [CancelledError]).} = + let + res = + if node.cfg.EIP7594_FORK_EPOCH != FAR_FUTURE_EPOCH: + # Directly fetch eip7594 metadata if available + await getMetadata_v3(peer) + else: + let metadata_v2_result = await getMetadata_v2(peer) + metadata_v2_result.map(proc (altairData: altair.MetaData): eip7594.MetaData {.closure.} = + metadataV2ToV3(altairData) + ) + return res + proc updatePeerMetadata(node: Eth2Node, peerId: PeerId) {.async: (raises: [CancelledError]).} = trace "updating peer metadata", peerId - let peer = node.getPeer(peerId) - newMetadataRes = await peer.getMetadata_v2() + newMetadataRes = await node.getMetadata_vx(peer) newMetadata = newMetadataRes.valueOr: debug "Failed to retrieve metadata from peer!", peerId, error = newMetadataRes.error peer.failedMetadataRequests.inc() @@ -2663,6 +2701,14 @@ proc broadcastBlobSidecar*( topic = getBlobSidecarTopic(forkPrefix, subnet_id) node.broadcast(topic, blob) +proc broadcastDataColumnSidecar*( + node: Eth2Node, subnet_id: uint64, data_column: DataColumnSidecar): + Future[SendResult] {.async: (raises: [CancelledError], raw: true).} = + let + forkPrefix = node.forkDigestAtEpoch(node.getWallEpoch) + topic = getDataColumnSidecarTopic(forkPrefix, subnet_id) + node.broadcast(topic, data_column) + proc broadcastSyncCommitteeMessage*( node: Eth2Node, msg: SyncCommitteeMessage, subcommitteeIdx: SyncSubcommitteeIndex): diff --git a/beacon_chain/networking/peer_protocol.nim b/beacon_chain/networking/peer_protocol.nim index ff47b17dd3..59efc87094 100644 --- a/beacon_chain/networking/peer_protocol.nim +++ b/beacon_chain/networking/peer_protocol.nim @@ -177,6 +177,14 @@ p2pProtocol PeerSync(version = 1, proc getMetadata_v2(peer: Peer): altair.MetaData {.libp2pProtocol("metadata", 2).} = + let altair_metadata = altair.MetaData( + seq_number: peer.network.metadata.seq_number, + attnets: peer.network.metadata.attnets, + syncnets: peer.network.metadata.syncnets) + altair_metadata + + proc getMetadata_v3(peer: Peer): eip7594.MetaData + {.libp2pProtocol("metadata", 3).} = peer.network.metadata proc goodbye(peer: Peer, reason: uint64) diff --git a/beacon_chain/nimbus_beacon_node.nim b/beacon_chain/nimbus_beacon_node.nim index 13492e859d..1a80551bb9 100644 --- a/beacon_chain/nimbus_beacon_node.nim +++ b/beacon_chain/nimbus_beacon_node.nim @@ -14,11 +14,12 @@ import stew/[byteutils, io2], eth/p2p/discoveryv5/[enr, random2], ./consensus_object_pools/blob_quarantine, + ./consensus_object_pools/data_column_quarantine, ./consensus_object_pools/vanity_logs/vanity_logs, - ./networking/[topic_params, network_metadata_downloads], + ./networking/[topic_params, network_metadata_downloads, eth2_network], ./rpc/[rest_api, state_ttl_cache], ./spec/datatypes/[altair, bellatrix, phase0], - ./spec/[deposit_snapshots, engine_authentication, weak_subjectivity], + ./spec/[deposit_snapshots, eip7594_helpers, engine_authentication, weak_subjectivity], ./sync/[sync_protocol, light_client_protocol], ./validators/[keystore_management, beacon_validators], "."/[ @@ -29,6 +30,7 @@ when defined(posix): import system/ansi_c from ./spec/datatypes/deneb import SignedBeaconBlock +from ./spec/datatypes/electra import SignedBeaconBlock from libp2p/protocols/pubsub/gossipsub @@ -382,6 +384,7 @@ proc initFullNode( dag, attestationPool, onVoluntaryExitAdded, onBLSToExecutionChangeAdded, onProposerSlashingAdded, onAttesterSlashingAdded)) blobQuarantine = newClone(BlobQuarantine.init(onBlobSidecarAdded)) + dataColumnQuarantine = newClone(DataColumnQuarantine.init()) consensusManager = ConsensusManager.new( dag, attestationPool, quarantine, node.elManager, ActionTracker.init(node.network.nodeId, config.subscribeAllSubnets), @@ -390,16 +393,17 @@ proc initFullNode( blockProcessor = BlockProcessor.new( config.dumpEnabled, config.dumpDirInvalid, config.dumpDirIncoming, rng, taskpool, consensusManager, node.validatorMonitor, - blobQuarantine, getBeaconTime) + blobQuarantine, dataColumnQuarantine, getBeaconTime) blockVerifier = proc(signedBlock: ForkedSignedBeaconBlock, - blobs: Opt[BlobSidecars], maybeFinalized: bool): + blobs: Opt[BlobSidecars], data_columns: Opt[DataColumnSidecars], + maybeFinalized: bool): Future[Result[void, VerifierError]] {.async: (raises: [CancelledError], raw: true).} = # The design with a callback for block verification is unusual compared # to the rest of the application, but fits with the general approach # taken in the sync/request managers - this is an architectural compromise # that should probably be reimagined more holistically in the future. blockProcessor[].addBlock( - MsgSource.gossip, signedBlock, blobs, maybeFinalized = maybeFinalized) + MsgSource.gossip, signedBlock, blobs, data_columns, maybeFinalized = maybeFinalized) rmanBlockVerifier = proc(signedBlock: ForkedSignedBeaconBlock, maybeFinalized: bool): Future[Result[void, VerifierError]] {.async: (raises: [CancelledError]).} = @@ -415,12 +419,31 @@ proc initFullNode( else: let blobs = blobQuarantine[].popBlobs(forkyBlck.root, forkyBlck) await blockProcessor[].addBlock(MsgSource.gossip, signedBlock, - Opt.some(blobs), + Opt.some(blobs), Opt.none(DataColumnSidecars), maybeFinalized = maybeFinalized) else: await blockProcessor[].addBlock(MsgSource.gossip, signedBlock, - Opt.none(BlobSidecars), + Opt.none(BlobSidecars), Opt.none(DataColumnSidecars), maybeFinalized = maybeFinalized) + + # when consensusFork >= ConsensusFork.Deneb: + # if not dataColumnQuarantine[].hasDataColumns(forkyBlck): + # # We don't have all the data columns for this block, so we have + # # to put it in columnless quarantine. + # if not quarantine[].addColumnless(dag.finalizedHead.slot, forkyBlck): + # err(VerifierError.UnviableFork) + # else: + # err(VerifierError.MissingParent) + # else: + # let data_columns = dataColumnQuarantine[].popDataColumns(forkyBlck.root, forkyBlck) + # await blockProcessor[].addBlock(MsgSource.gossip, signedBlock, + # Opt.none(BlobSidecars), Opt.some(data_columns), + # maybeFinalized = maybeFinalized) + # else: + # await blockProcessor[].addBlock(MsgSource.gossip, signedBlock, + # Opt.none(BlobSidecars), Opt.none(DataColumnSidecars), + # maybeFinalized = maybeFinalized) + rmanBlockLoader = proc( blockRoot: Eth2Digest): Opt[ForkedTrustedSignedBeaconBlock] = dag.getForkedBlock(blockRoot) @@ -432,32 +455,44 @@ proc initFullNode( else: Opt.none(ref BlobSidecar) + rmanDataColumnLoader = proc( + columnId: DataColumnIdentifier): Opt[ref DataColumnSidecar] = + var data_column_sidecar = DataColumnSidecar.new() + if dag.db.getDataColumnSidecar(columnId.block_root, columnId.index, data_column_sidecar[]): + Opt.some data_column_sidecar + else: + Opt.none(ref DataColumnSidecar) + processor = Eth2Processor.new( config.doppelgangerDetection, blockProcessor, node.validatorMonitor, dag, attestationPool, validatorChangePool, node.attachedValidators, syncCommitteeMsgPool, - lightClientPool, quarantine, blobQuarantine, rng, getBeaconTime, taskpool) + lightClientPool, quarantine, blobQuarantine, dataColumnQuarantine, + rng, getBeaconTime, taskpool) + router = (ref MessageRouter)( + processor: processor, + network: node.network) + + var supernode = node.config.subscribeAllSubnets + let syncManager = newSyncManager[Peer, PeerId]( node.network.peerPool, dag.cfg.DENEB_FORK_EPOCH, dag.cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, - SyncQueueKind.Forward, getLocalHeadSlot, + supernode, SyncQueueKind.Forward, getLocalHeadSlot, getLocalWallSlot, getFirstSlotAtFinalizedEpoch, getBackfillSlot, getFrontfillSlot, dag.tail.slot, blockVerifier) backfiller = newSyncManager[Peer, PeerId]( node.network.peerPool, dag.cfg.DENEB_FORK_EPOCH, dag.cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, - SyncQueueKind.Backward, getLocalHeadSlot, + supernode, SyncQueueKind.Backward, getLocalHeadSlot, getLocalWallSlot, getFirstSlotAtFinalizedEpoch, getBackfillSlot, getFrontfillSlot, dag.backfill.slot, blockVerifier, - maxHeadAge = 0) - router = (ref MessageRouter)( - processor: processor, - network: node.network) + maxHeadAge = 0) requestManager = RequestManager.init( - node.network, dag.cfg.DENEB_FORK_EPOCH, getBeaconTime, + node.network, supernode, dag.cfg.DENEB_FORK_EPOCH, getBeaconTime, (proc(): bool = syncManager.inProgress), - quarantine, blobQuarantine, rmanBlockVerifier, - rmanBlockLoader, rmanBlobLoader) + quarantine, blobQuarantine, dataColumnQuarantine, rmanBlockVerifier, + rmanBlockLoader, rmanBlobLoader, rmanDataColumnLoader) if node.config.lightClientDataServe: proc scheduleSendingLightClientUpdates(slot: Slot) = @@ -481,6 +516,7 @@ proc initFullNode( node.dag = dag node.blobQuarantine = blobQuarantine + node.dataColumnQuarantine = dataColumnQuarantine node.quarantine = quarantine node.attestationPool = attestationPool node.syncCommitteeMsgPool = syncCommitteeMsgPool @@ -1104,10 +1140,17 @@ proc addCapellaMessageHandlers( node.addAltairMessageHandlers(forkDigest, slot) node.network.subscribe(getBlsToExecutionChangeTopic(forkDigest), basicParams) +proc fetchCustodySubnetCount* (node: BeaconNode): uint64= + var res = CUSTODY_REQUIREMENT.uint64 + if node.config.subscribeAllSubnets: + res = DATA_COLUMN_SIDECAR_SUBNET_COUNT.uint64 + res + proc addDenebMessageHandlers( node: BeaconNode, forkDigest: ForkDigest, slot: Slot) = node.addCapellaMessageHandlers(forkDigest, slot) - for topic in dataColumnSidecarTopics(forkDigest): + let targetSubnets = node.fetchCustodySubnetCount() + for topic in dataColumnSidecarTopics(forkDigest, targetSubnets): node.network.subscribe(topic, basicParams) proc addElectraMessageHandlers( @@ -1131,7 +1174,8 @@ proc removeCapellaMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = proc removeDenebMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = node.removeCapellaMessageHandlers(forkDigest) - for topic in dataColumnSidecarTopics(forkDigest): + let targetSubnets = node.fetchCustodySubnetCount() + for topic in dataColumnSidecarTopics(forkDigest, targetSubnets): node.network.unsubscribe(topic) proc removeElectraMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = @@ -1410,10 +1454,137 @@ proc pruneBlobs(node: BeaconNode, slot: Slot) = count = count + 1 debug "pruned blobs", count, blobPruneEpoch +proc pruneDataColumns(node: BeaconNode, slot: Slot) = + let dataColumnPruneEpoch = (slot.epoch - + node.dag.cfg.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS - 1) + if slot.is_epoch() and dataColumnPruneEpoch >= node.dag.cfg.DENEB_FORK_EPOCH: + var blocks: array[SLOTS_PER_EPOCH.int, BlockId] + var count = 0 + let startIndex = node.dag.getBlockRange( + dataColumnPruneEpoch.start_slot, 1, blocks.toopenArray(0, SLOTS_PER_EPOCH - 1)) + for i in startIndex..= columnsNeeded: + return true + false + +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/_features/eip7594/das-core.md#compute_extended_matrix +proc get_extended_sample_count*(samples_per_slot: int, + allowed_failures: int): + int = + # `get_extended_sample_count` computes the number of samples we + # should query from peers, given the SAMPLES_PER_SLOT and + # the number of allowed failures + + # Retrieving the column count + let columnsCount = NUMBER_OF_COLUMNS.int + + # If 50% of the columns are missing, we are able to reconstruct the data + # If 50% + 1 columns are missing, we are NO MORE able to reconstruct the data + let worstCaseConditionCount = (columnsCount div 2) + 1 + + # Compute the false positive threshold + let falsePositiveThreshold = hypergeom_cdf(0, columnsCount, worstCaseConditionCount, samples_per_slot) + + var sampleCount: int + + # Finally, compute the extended sample count + for i in samples_per_slot .. columnsCount + 1: + if hypergeom_cdf(allowed_failures, columnsCount, worstCaseConditionCount, i) <= falsePositiveThreshold: + sampleCount = i + break + sampleCount = i + + return sampleCount diff --git a/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim b/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim index e9d5edac53..815f67cfc0 100644 --- a/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim +++ b/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim @@ -53,6 +53,7 @@ RestJson.useDefaultSerializationFor( Checkpoint, Consolidation, ContributionAndProof, + DataColumnSidecar, DataEnclosedObject, DataMetaEnclosedObject, DataOptimisticAndFinalizedObject, @@ -1358,7 +1359,7 @@ proc readValue*(reader: var JsonReader[RestJson], value: var (KzgCommitment|KzgProof)) {. raises: [IOError, SerializationError].} = try: - hexToByteArray(reader.readValue(string), distinctBase(value)) + hexToByteArray(reader.readValue(string), distinctBase(value.bytes)) except ValueError: raiseUnexpectedValue(reader, "KzgCommitment value should be a valid hex string") @@ -1366,7 +1367,7 @@ proc readValue*(reader: var JsonReader[RestJson], proc writeValue*( writer: var JsonWriter[RestJson], value: KzgCommitment | KzgProof ) {.raises: [IOError].} = - writeValue(writer, hexOriginal(distinctBase(value))) + writeValue(writer, hexOriginal(distinctBase(value.bytes))) ## GraffitiBytes proc writeValue*( diff --git a/beacon_chain/spec/helpers.nim b/beacon_chain/spec/helpers.nim index b4521250a6..33f9590ef9 100644 --- a/beacon_chain/spec/helpers.nim +++ b/beacon_chain/spec/helpers.nim @@ -527,3 +527,27 @@ proc blockToBlockHeader*(blck: ForkyBeaconBlock): ExecutionBlockHeader = proc compute_execution_block_hash*(blck: ForkyBeaconBlock): Eth2Digest = rlpHash blockToBlockHeader(blck) + +from std/math import exp, ln +from std/sequtils import foldl + +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/_features/eip7594/das-core.md#compute_extended_matrix +func ln_binomial(n, k: int): float64 = + if k > n: + low(float64) + else: + template ln_factorial(n: int): float64 = + (2 .. n).foldl(a + ln(b.float64), 0.0) + ln_factorial(n) - ln_factorial(k) - ln_factorial(n - k) + +func hypergeom_cdf*(k: int, population: int, successes: int, draws: int): + float64 = + if k < draws + successes - population: + 0.0 + elif k >= min(successes, draws): + 1.0 + else: + let ln_denom = ln_binomial(population, draws) + (0 .. k).foldl(a + exp( + ln_binomial(successes, b) + + ln_binomial(population - successes, draws - b) - ln_denom), 0.0) \ No newline at end of file diff --git a/beacon_chain/spec/network.nim b/beacon_chain/spec/network.nim index 6867d07daa..b49746c4e3 100644 --- a/beacon_chain/spec/network.nim +++ b/beacon_chain/spec/network.nim @@ -34,6 +34,10 @@ const MAX_REQUEST_BLOB_SIDECARS*: uint64 = MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.2/specs/_features/eip7594/p2p-interface.md#configuration + MAX_REQUEST_DATA_COLUMNS*: uint64 = + MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS + defaultEth2TcpPort* = 9000 defaultEth2TcpPortDesc* = $defaultEth2TcpPort @@ -43,6 +47,7 @@ const enrAttestationSubnetsField* = "attnets" enrSyncSubnetsField* = "syncnets" + enrCustodySubnetCountField* = "csc" enrForkIdField* = "eth2" template eth2Prefix(forkDigest: ForkDigest): string = @@ -227,11 +232,6 @@ iterator blobSidecarTopics*(forkDigest: ForkDigest): string = yield getBlobSidecarTopic(forkDigest, subnet_id) -const - KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH* = 32 - MAX_REQUEST_DATA_COLUMN_SIDECARS* = MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS - MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS* = 4096 - func getDataColumnSidecarTopic*(forkDigest: ForkDigest, subnet_id: uint64): string = eth2Prefix(forkDigest) & "data_column_sidecar_" & $subnet_id & "/ssz_snappy" @@ -239,6 +239,6 @@ func getDataColumnSidecarTopic*(forkDigest: ForkDigest, func compute_subnet_for_data_column_sidecar*(column_index: ColumnIndex): uint64 = uint64(column_index mod DATA_COLUMN_SIDECAR_SUBNET_COUNT) -iterator dataColumnSidecarTopics*(forkDigest: ForkDigest): string = - for subnet_id in 0'u64.. len(colIdList): + return false + for column in columns: + let block_root = hash_tree_root(column.signed_block_header.message) + var found = false + for id in colIdList: + if id.block_root == block_root and id.index == column.index: + found = true + break + if not found: + return false + column[].verify_data_column_sidecar_inclusion_proof().isOkOr: + return false + true + proc requestBlocksByRoot(rman: RequestManager, items: seq[Eth2Digest]) {.async: (raises: [CancelledError]).} = var peer: Peer try: @@ -232,6 +268,98 @@ proc fetchBlobsFromNetwork(self: RequestManager, if not(isNil(peer)): self.network.peerPool.release(peer) +proc constructValidCustodyPeers(rman: RequestManager, + peers: openArray[Peer]): + seq[Peer] = + let localCustodySubnetCount = + if rman.supernode: + DATA_COLUMN_SIDECAR_SUBNET_COUNT.uint64 + else: + CUSTODY_REQUIREMENT + + # Fetching the local cusotrdy columns + let + localNodeId = rman.network.nodeId + localCustodyColumns = + localNodeId.get_custody_columns(localCustodySubnetCount).get + + var validPeers: seq[Peer] + + for peer in peers: + # Get the custody subnet count of the remote peer + let remoteCustodySubnetCount = + peer.fetchCustodyColumnCountFromRemotePeer() + + # Extract remote peer's nodeID from peerID + # Fetch custody columns from remote peer + let + remoteNodeId = getNodeIdFromPeer(peer) + remoteCustodyColumns = + remoteNodeId.get_custody_columns(remoteCustodySubnetCount).get + + # If the remote peer custodies less columns than + # our local node + # We skip it + if remoteCustodyColumns.len < localCustodyColumns.len: + continue + + # If the remote peer custodies all the possible columns + if remoteCustodyColumns.len == NUMBER_OF_COLUMNS: + validPeers.add(peer) + + # Filtering out the inval;id peers + for column in localCustodyColumns: + if column notin remoteCustodyColumns: + continue + + # Otherwise add the peer to the set of valid peers + validPeers.add(peer) + validPeers + +proc fetchDataColumnsFromNetwork(rman: RequestManager, + colIdList: seq[DataColumnIdentifier]) + {.async: (raises: [CancelledError]).} = + var peer: Peer + var peers: seq[Peer] + try: + peer = await rman.network.peerPool.acquire() + + # Create a peer list, which shall be later trimmed off as to which + # of the peers have the valid custody columns + peers.add(peer) + let validPeers = rman.constructValidCustodyPeers(peers) + if peer in validPeers: + debug "Requesting data columns by root", peer = peer, columns = shortLog(colIdList), + peer_score = peer.getScore() + let columns = await dataColumnSidecarsByRoot(peer, DataColumnIdentifierList colIdList) + + if columns.isOk: + let ucolumns = columns.get() + if not checkResponse(colIdList, ucolumns.asSeq()): + debug "Mismatched response to data columns by root", + peer = peer, columns = shortLog(colIdList), ucolumns = len(ucolumns) + # peer.updateScore(PeerScoreBadResponse) + return + + for col in ucolumns: + rman.dataColumnQuarantine[].put(col) + var curRoot: Eth2Digest + for col in ucolumns: + let block_root = hash_tree_root(col.signed_block_header.message) + if block_root != curRoot: + curRoot = block_root + if (let o = rman.quarantine[].popColumnless(curRoot); o.isSome): + let col = o.unsafeGet() + discard await rman.blockVerifier(col, false) + else: + debug "Data columns by root request failed", + peer = peer, columns = shortLog(colIdList), err = columns.error() + # peer.updateScore(PeerScoreNoValues) + + finally: + if not(isNil(peer)): + rman.network.peerPool.release(peer) + proc requestManagerBlockLoop( rman: RequestManager) {.async: (raises: [CancelledError]).} = while true: @@ -400,10 +528,116 @@ proc requestManagerBlobLoop( blobs_count = len(blobIds), sync_speed = speed(start, finish) +proc getMissingDataColumns(rman: RequestManager): seq[DataColumnIdentifier] = + let + wallTime = rman.getBeaconTime() + wallSlot = wallTime.slotOrZero() + delay = wallTime - wallSlot.start_beacon_time() + + const waitDur = TimeDiff(nanoseconds: DATA_COLUMN_GOSSIP_WAIT_TIME_NS) + + var + fetches: seq[DataColumnIdentifier] + ready: seq[Eth2Digest] + for columnless in rman.quarantine[].peekColumnless(): + withBlck(columnless): + when consensusFork >= ConsensusFork.Deneb: + # granting data columns a chance to arrive over gossip + if forkyBlck.message.slot == wallSlot and delay < waitDur: + debug "Not handling missing data columns early in slot" + continue + + if not rman.dataColumnQuarantine[].hasDataColumns(forkyBlck): + let missing = rman.dataColumnQuarantine[].dataColumnFetchRecord(forkyBlck) + if len(missing.indices) == 0: + warn "quarantine is missing data columns, but missing indices are empty", + blk = columnless.root, + commitments = len(forkyBlck.message.body.blob_kzg_commitments) + for idx in missing.indices: + let id = DataColumnIdentifier(block_root: columnless.root, index: idx) + if id notin fetches: + fetches.add(id) + else: + # this is a programming error and it not should occur + warn "missing data column handler found columnless block with all data columns", + blk = columnless.root, + commitments=len(forkyBlck.message.body.blob_kzg_commitments) + ready.add(columnless.root) + + for root in ready: + let columnless = rman.quarantine[].popColumnless(root).valueOr: + continue + discard rman.blockVerifier(columnless, false) + fetches + +proc requestManagerDataColumnLoop( + rman: RequestManager) {.async: (raises: [CancelledError]).} = + while true: + + await sleepAsync(POLL_INTERVAL) + if rman.inhibit(): + continue + + let missingColumnIds = rman.getMissingDataColumns() + if missingColumnIds.len == 0: + continue + + var columnIds: seq[DataColumnIdentifier] + if rman.dataColumnLoader == nil: + columnIds = missingColumnIds + else: + var + blockRoots: seq[Eth2Digest] + curRoot: Eth2Digest + for columnId in missingColumnIds: + if columnId.block_root != curRoot: + curRoot = columnId.block_root + blockRoots.add curRoot + let data_column_sidecar = rman.dataColumnLoader(columnId).valueOr: + columnIds.add columnId + if blockRoots.len > 0 and blockRoots[^1] == curRoot: + # A data column is missing, remove from list of fully available data columns + discard blockRoots.pop() + continue + debug "Loaded orphaned data columns from storage", columnId + rman.dataColumnQuarantine[].put(data_column_sidecar) + var verifiers = newSeqOfCap[ + Future[Result[void, VerifierError]] + .Raising([CancelledError])](blockRoots.len) + for blockRoot in blockRoots: + let blck = rman.quarantine[].popColumnless(blockRoot).valueOr: + continue + verifiers.add rman.blockVerifier(blck, maybeFinalized = false) + try: + await allFutures(verifiers) + except CancelledError as exc: + var futs = newSeqOfCap[Future[void].Raising([])](verifiers.len) + for verifier in verifiers: + futs.add verifier.cancelAndWait() + await noCancel allFutures(futs) + raise exc + if columnIds.len > 0: + debug "Requesting detected missing data columns", columns = shortLog(columnIds) + let start = SyncMoment.now(0) + var workers: + array[PARALLEL_REQUESTS_DATA_COLUMNS, Future[void].Raising([CancelledError])] + for i in 0..= wallEpoch - man.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS) +proc shouldGetDataColumns[A, B](man: SyncManager[A, B], e: Epoch): bool = + let wallEpoch = man.getLocalWallSlot().epoch + e >= man.DENEB_FORK_EPOCH and + (wallEpoch < man.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS or + e >= wallEpoch - man.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS) + proc getBlobSidecars[A, B](man: SyncManager[A, B], peer: A, req: SyncRequest): Future[BlobSidecarsRes] {.async: (raises: [CancelledError], raw: true).} = @@ -256,6 +268,139 @@ func checkBlobs(blobs: seq[BlobSidecars]): Result[void, string] = ? blob_sidecar[].verify_blob_sidecar_inclusion_proof() ok() +proc getDataColumnSidecars[A, B](man: SyncManager[A, B], peer: A, + req: SyncRequest): Future[DataColumnSidecarsRes] + {.async: (raises: [CancelledError], raw: true).} = + mixin getScore, `==` + + logScope: + peer_score = peer.getScore() + peer_speed = peer.netKbps() + sync_ident = man.ident + direction = man.direction + topics = "syncman" + + doAssert(not(req.isEmpty()), "Request must not be empty!") + debug "Requesting data column sidecars from peer", request = req + dataColumnSidecarsByRange(peer, req.slot, req.count, req.columns) + +func groupDataColumns*[T](req: SyncRequest[T], + blocks: seq[ref ForkedSignedBeaconBlock], + data_columns: seq[ref DataColumnSidecar]): + Result[seq[DataColumnSidecars], string] = + var + grouped = newSeq[DataColumnSidecars](len(blocks)) + column_cursor = 0 + for block_idx, blck in blocks: + withBlck(blck[]): + when consensusFork >= ConsensusFork.Deneb: + template kzgs: untyped = forkyBlck.message.body.blob_kzg_commitments + if kzgs.len == 0: + continue + # Clients MUST include all data column sidecars of each block from which they include data column sidecars. + # The following data column sidecars, where they exist, MUST be sent in consecutive (slot, index) order. + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/_features/eip7594/p2p-interface.md + let header = forkyBlck.toSignedBeaconBlockHeader() + for column_idx, kzg_commitment in kzgs: + if column_cursor >= data_columns.len: + return err("DataColumnSidecar: response too short") + let data_column_sidecar = data_columns[column_cursor] + if kzg_commitment notin data_column_sidecar.kzg_commitments: + return err("DataColumnSidecar: unexpected kzg_commitment") + if data_column_sidecar.signed_block_header != header: + return err("DataColumnSidecar: unexpected signed_block_header") + grouped[block_idx].add(data_column_sidecar) + inc column_cursor + + if column_cursor != len(data_columns): + # we reached end of blocks without consuming all data columns so either + # the peer we got too few blocks in the paired request, or the + # peer is sending us spurious data columns. + Result[seq[DataColumnSidecars], string].err "invalid block or data column sequence" + else: + Result[seq[DataColumnSidecars], string].ok grouped + +func checkDataColumns(data_columns: seq[DataColumnSidecars]): Result[void, string] = + for data_column_sidecars in data_columns: + for data_column_sidecar in data_column_sidecars: + ? data_column_sidecar[].verify_data_column_sidecar_inclusion_proof() + ok() + +proc fetchCustodyColumnCountFromRemotePeer*(peer: Peer): + uint64 = + # Fetches the custody column count from a remote peer + # if the peer advertises their custody column count + # via the `csc` ENR field. If the peer does NOT, then + # the default value is assume, i.e, CUSTODY_REQUIREMENT + + let enrOpt = peer.enr + if enrOpt.isNone: + debug "Could not get ENR from peer", + peer_id = peer.peerId + return 0 + + else: + let + enr = enrOpt.get + enrFieldOpt = + enr.get(enrCustodySubnetCountField, uint64) + + if not enrFieldOpt.isOk: + debug "Issue with fetching `csc` field from ENR", + enr = enr + else: + return(enrFieldOpt.get) + +proc checkValidPeerCustody*[A, B](man: SyncManager[A, B], peer: A): bool = + # `constructValidaCustodyPeers` returns a list of peers that are an overall + # superset of the given local node's custody columns and the custody columns + # of the remote peers + + # Get the local custody subnet count + + let localCustodySubnetCount = + if man.supernode: + DATA_COLUMN_SIDECAR_SUBNET_COUNT.uint64 + else: + CUSTODY_REQUIREMENT + + # Get the local custody columns + let + localNodeId = peer.getNodeIdFromPeer() + localCustodyColumns = + localNodeId.get_custody_columns(localCustodySubnetCount).get + + var validPeerIds: seq[PeerId] + + # Get the custody subnet counts of the remote peer + let remoteCustodySubnetCount = + peer.fetchCustodyColumnCountFromRemotePeer() + + # Extract remote peer's nodeID from peerID + # Fetch custody columns fromm remote peer + let + remoteNodeId = peer.getNodeIdFromPeer() + remoteCustodyColumns = + remoteNodeId.get_custody_columns(remoteCustodySubnetCount).get + + # If the remote peer custodies less columns than our local node + # We skip it + if remoteCustodyColumns.len < localCustodyColumns.len: + return false + + # If the remote peer custodies all the possible columns + if remoteCustodyColumns.len == NUMBER_OF_COLUMNS: + return true + + # Filtering out the invalid peers + for column in localCustodyColumns: + if column notin remoteCustodyColumns: + return true + + # Otherwise add the peer to the set + # of valid peerIds + true + proc syncStep[A, B](man: SyncManager[A, B], index: int, peer: A) {.async: (raises: [CancelledError]).} = logScope: @@ -472,6 +617,67 @@ proc syncStep[A, B](man: SyncManager[A, B], index: int, peer: A) else: Opt.none(seq[BlobSidecars]) + let shouldGetDataColumns = + if not man.shouldGetDataColumns(req.slot.epoch): + false + else: + var hasColumns = false + for blck in blockData: + withBlck(blck[]): + when consensusFork >= ConsensusFork.Deneb: + if forkyBlck.message.body.blob_kzg_commitments.len > 0: + hasColumns = true + break + hasColumns + + let dataColumnData = + if shouldGetDataColumns: + if man.checkValidPeerCustody(peer): + let data_columns = await man.getDataColumnSidecars(peer, req) + if data_columns.isErr(): + # peer.updateScore(PeerScoreNoValues) + man.queue.push(req) + debug "Failed to receive data columns on request", + request = req, err = data_columns.error + return + let dataColumnData = data_columns.get().asSeq() + let dataColumnSmap = getShortMap(req, dataColumnData) + debug "Received data columns on request", data_columns_count = len(dataColumnData), + data_columns_map = dataColumnSmap, request = req + + if len(dataColumnData) > 0: + let slots = mapIt(dataColumnData, it[].signed_block_header.message.slot) + let uniqueSlots = foldl(slots, combine(a, b), @[slots[0]]) + if not(checkResponse(req, uniqueSlots)): + # peer.updateScore(PeerScoreBadResponse) + man.queue.push(req) + warn "Received data columns sequence is not in requested range", + data_columns_count = len(dataColumnData), data_columns_map = getShortMap(req, dataColumnData), + request = req + return + let groupedDataColumns = groupDataColumns(req, blockData, dataColumnData) + if groupedDataColumns.isErr(): + # peer.updateScore(PeerScoreNoValues) + man.queue.push(req) + # warn "Received data columns is inconsistent", + # data_columns_map = getShortMap(req, dataColumnData), request = req, msg=groupedDataColumns.error() + return + if (let checkRes = groupedDataColumns.get.checkDataColumns(); checkRes.isErr): + # peer.updateScore(PeerScoreBadResponse) + man.queue.push(req) + warn "Received data columns is invalid", + data_columns_count = len(dataColumnData), + data_columns_map = getShortMap(req, dataColumnData), + request = req, + msg = checkRes.error + return + Opt.some(groupedDataColumns.get()) + else: + Opt.none(seq[DataColumnSidecars]) + else: + Opt.none(seq[DataColumnSidecars]) + + if len(blockData) == 0 and man.direction == SyncQueueKind.Backward and req.contains(man.getSafeSlot()): # The sync protocol does not distinguish between: @@ -496,7 +702,7 @@ proc syncStep[A, B](man: SyncManager[A, B], index: int, peer: A) # TODO descore peers that lie maybeFinalized = lastSlot < peerFinalized - await man.queue.push(req, blockData, blobData, maybeFinalized, proc() = + await man.queue.push(req, blockData, Opt.none(seq[BlobSidecars]), dataColumnData, maybeFinalized, proc() = man.workers[index].status = SyncWorkerStatus.Processing) proc syncWorker[A, B](man: SyncManager[A, B], index: int) {.async: (raises: [CancelledError]).} = diff --git a/beacon_chain/sync/sync_protocol.nim b/beacon_chain/sync/sync_protocol.nim index e744d3b2f5..c9d20c21b2 100644 --- a/beacon_chain/sync/sync_protocol.nim +++ b/beacon_chain/sync/sync_protocol.nim @@ -9,7 +9,7 @@ import chronicles, chronos, snappy, snappy/codec, - ../spec/datatypes/[phase0, altair, bellatrix, capella, deneb], + ../spec/datatypes/[phase0, altair, bellatrix, capella, deneb, eip7594], ../spec/[helpers, forks, network], ".."/[beacon_clock], ../networking/eth2_network, @@ -24,6 +24,8 @@ const ## Allow syncing ~64 blocks/sec (minus request costs) blobResponseCost = allowedOpsPerSecondCost(1000) ## Multiple can exist per block, they are much smaller than blocks + dataColumnResponseCost = allowedOpsPerSecondCost(4000) + ## 1 blob has an equivalent memory of 8 data columns type BeaconSyncNetworkState* {.final.} = ref object of RootObj @@ -36,7 +38,8 @@ type slot: Slot BlockRootsList* = List[Eth2Digest, Limit MAX_REQUEST_BLOCKS] - BlobIdentifierList* = List[BlobIdentifier, Limit (MAX_REQUEST_BLOB_SIDECARS)] + BlobIdentifierList* = List[BlobIdentifier, Limit MAX_REQUEST_BLOB_SIDECARS] + DataColumnIdentifierList* = List[DataColumnIdentifier, Limit MAX_REQUEST_DATA_COLUMNS] proc readChunkPayload*( conn: Connection, peer: Peer, MsgType: type (ref ForkedSignedBeaconBlock)): @@ -109,6 +112,26 @@ proc readChunkPayload*( else: return neterr InvalidContextBytes +proc readChunkPayload*( + conn: Connection, peer: Peer, MsgType: type (ref DataColumnSidecar)): + Future[NetRes[MsgType]] {.async: (raises: [CancelledError]).} = + var contextBytes: ForkDigest + try: + await conn.readExactly(addr contextBytes, sizeof contextBytes) + except CancelledError as exc: + raise exc + except CatchableError: + return neterr UnexpectedEOF + + if contextBytes == peer.network.forkDigests.deneb: + let res = await readChunkPayload(conn, peer, DataColumnSidecar) + if res.isOk: + return ok newClone(res.get) + else: + return err(res.error) + else: + return neterr InvalidContextBytes + {.pop.} # TODO fix p2p macro for raises p2pProtocol BeaconSync(version = 1, @@ -368,6 +391,113 @@ p2pProtocol BeaconSync(version = 1, debug "BlobSidecar range request done", peer, startSlot, count = reqCount, found + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.2/specs/_features/eip7594/p2p-interface.md#datacolumnsidecarsbyroot-v1 + proc dataColumnSidecarsByRoot( + peer: Peer, + columnIds: DataColumnIdentifierList, + response: MultipleChunksResponse[ + ref DataColumnSidecar, Limit(MAX_REQUEST_DATA_COLUMNS)]) + {.async, libp2pProtocol("data_column_sidecars_by_root", 1).} = + + trace "got data columns range request", peer, len = columnIds.len + if columnIds.len == 0: + raise newException(InvalidInputsError, "No data columns requested") + + if columnIds.lenu64 > MAX_REQUEST_DATA_COLUMNS: + raise newException(InvalidInputsError, "Exceeding data column request limit") + + let + dag = peer.networkState.dag + count = columnIds.len + + var + found = 0 + bytes: seq[byte] + + for i in 0..= dag.head.slot.epoch: + GENESIS_EPOCH + else: + dag.head.slot.epoch - dag.cfg.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS + + if startSlot.epoch < epochBoundary: + raise newException(ResourceUnavailableError, DataColumnsOutOfRange) + + var blockIds: array[int(MAX_REQUEST_DATA_COLUMNS), BlockId] + let + count = int min(reqCount, blockIds.lenu64) + endIndex = count - 1 + startIndex = + dag.getBlockRange(startSlot, 1, blockIds.toOpenArray(0, endIndex)) + + var + found = 0 + bytes: seq[byte] + + for i in startIndex..endIndex: + for j in 0..= dag.cfg.BELLATRIX_FORK_EPOCH and + not dag.head.executionValid: + continue + + let uncompressedLen = uncompressedLenFramed(bytes).valueOr: + warn "Cannot read data column sidecar size, database, corrupt", + bytes = bytes.len(), blck = shortLog(blockIds[i]) + continue + + peer.awaitQuota(dataColumnResponseCost, "data_column_sidecars_by_range/1") + peer.network.awaitQuota(dataColumnResponseCost, "data_column_sidecars_by_range/1") + + await response.writeBytesSZ( + uncompressedLen, bytes, + peer.network.forkDigestAtEpoch(blockIds[i].slot.epoch).data) + inc found + else: + break + + debug "DataColumnSidecar range request done", + peer, startSlot, count = reqCount, columns = reqColumns, found + proc init*(T: type BeaconSync.NetworkState, dag: ChainDAGRef): T = T( dag: dag, diff --git a/beacon_chain/sync/sync_queue.nim b/beacon_chain/sync/sync_queue.nim index 66d7bbc1b1..a492557466 100644 --- a/beacon_chain/sync/sync_queue.nim +++ b/beacon_chain/sync/sync_queue.nim @@ -26,7 +26,8 @@ type GetSlotCallback* = proc(): Slot {.gcsafe, raises: [].} ProcessingCallback* = proc() {.gcsafe, raises: [].} BlockVerifier* = proc(signedBlock: ForkedSignedBeaconBlock, - blobs: Opt[BlobSidecars], maybeFinalized: bool): + blobs: Opt[BlobSidecars], data_columns: Opt[DataColumnSidecars], + maybeFinalized: bool): Future[Result[void, VerifierError]] {.async: (raises: [CancelledError]).} SyncQueueKind* {.pure.} = enum @@ -37,12 +38,14 @@ type index*: uint64 slot*: Slot count*: uint64 + columns*: List[ColumnIndex, NUMBER_OF_COLUMNS] item*: T SyncResult*[T] = object request*: SyncRequest[T] data*: seq[ref ForkedSignedBeaconBlock] blobs*: Opt[seq[BlobSidecars]] + data_columns*: Opt[seq[DataColumnSidecars]] GapItem*[T] = object start*: Slot @@ -131,6 +134,27 @@ proc getShortMap*[T](req: SyncRequest[T], res.add('|') res +proc getShortMap*[T](req: SyncRequest[T], + data: openArray[ref DataColumnSidecar]): string = + # Returns all slot numbers in ``data`` as a placement map + var res = newStringOfCap(req.count * MAX_BLOBS_PER_BLOCK) + var cur: uint64 = 0 + for slot in req.slot..= lenu64(data): + res.add('|') + continue + if slot == data[cur].signed_block_header.message.slot: + for k in cur..= lenu64(data) or slot != data[k].signed_block_header.message.slot: + res.add('|') + break + else: + inc(cur) + res.add('|') + else: + res.add('|') + res + proc contains*[T](req: SyncRequest[T], slot: Slot): bool {.inline.} = slot >= req.slot and slot < req.slot + req.count @@ -546,6 +570,13 @@ func getOpt(blobs: Opt[seq[BlobSidecars]], i: int): Opt[BlobSidecars] = else: Opt.none(BlobSidecars) +func getOpt(data_columns: Opt[seq[DataColumnSidecars]], i: int): + Opt[DataColumnSidecars] = + if data_columns.isSome: + Opt.some(data_columns.get()[i]) + else: + Opt.none(DataColumnSidecars) + iterator blocks[T](sq: SyncQueue[T], sr: SyncResult[T]): (ref ForkedSignedBeaconBlock, Opt[BlobSidecars]) = case sq.kind @@ -556,6 +587,16 @@ iterator blocks[T](sq: SyncQueue[T], for i in countdown(len(sr.data) - 1, 0): yield (sr.data[i], sr.blobs.getOpt(i)) +iterator das_blocks[T](sq: SyncQueue[T], + sr: SyncResult[T]): (ref ForkedSignedBeaconBlock, Opt[DataColumnSidecars]) = + case sq.kind + of SyncQueueKind.Forward: + for i in countup(0, len(sr.data) - 1): + yield (sr.data[i], sr.data_columns.getOpt(i)) + of SyncQueueKind.Backward: + for i in countdown(len(sr.data) - 1, 0): + yield (sr.data[i], sr.data_columns.getOpt(i)) + proc advanceOutput*[T](sq: SyncQueue[T], number: uint64) = case sq.kind of SyncQueueKind.Forward: @@ -609,6 +650,7 @@ func numAlreadyKnownSlots[T](sq: SyncQueue[T], sr: SyncRequest[T]): uint64 = proc push*[T](sq: SyncQueue[T], sr: SyncRequest[T], data: seq[ref ForkedSignedBeaconBlock], blobs: Opt[seq[BlobSidecars]], + data_columns: Opt[seq[DataColumnSidecars]], maybeFinalized: bool = false, processingCb: ProcessingCallback = nil) {.async: (raises: [CancelledError]).} = logScope: @@ -636,7 +678,7 @@ proc push*[T](sq: SyncQueue[T], sr: SyncRequest[T], # SyncQueue reset happens. We are exiting to wake up sync-worker. return else: - let syncres = SyncResult[T](request: sr, data: data, blobs: blobs) + let syncres = SyncResult[T](request: sr, data: data, blobs: blobs, data_columns: data_columns) sq.readyQueue.push(syncres) break @@ -687,7 +729,7 @@ proc push*[T](sq: SyncQueue[T], sr: SyncRequest[T], var i=0 for blk, blb in sq.blocks(item): - res = await sq.blockVerifier(blk[], blb, maybeFinalized) + res = await sq.blockVerifier(blk[], blb, Opt.none(DataColumnSidecars), maybeFinalized) inc(i) if res.isOk(): @@ -716,6 +758,37 @@ proc push*[T](sq: SyncQueue[T], sr: SyncRequest[T], blocks_map = getShortMap(req, item.data) req.item.updateScore(PeerScoreBadValues) break + + var counter = 0 + for blk, col in sq.das_blocks(item): + res = await sq.blockVerifier(blk[], Opt.none(BlobSidecars), col, maybeFinalized) + inc counter + + if res.isOk: + goodBlock = some(blk[].slot) + else: + case res.error() + of VerifierError.MissingParent: + missingParentSlot = some(blk[].slot) + break + of VerifierError.Duplicate: + # Keep going, happens naturally + discard + of VerifierError.UnviableFork: + # Keep going so as to register other unviable blocks with the + # quarantine + if unviableBlock.isNone: + # Remember the first unviable block, so we can log it + unviableBlock = some((blk[].root, blk[].slot)) + + of VerifierError.Invalid: + hasInvalidBlock = true + + let req = item.request + notice "Received invalid sequence of blocks", request = req, + blocks_count = len(item.data), + blocks_map = getShortMap(req, item.data) + # req.item.updateScore(PeerScoreBadValues) # When errors happen while processing blocks, we retry the same request # with, hopefully, a different peer diff --git a/beacon_chain/validators/beacon_validators.nim b/beacon_chain/validators/beacon_validators.nim index c4375f3ca6..ec179784f6 100644 --- a/beacon_chain/validators/beacon_validators.nim +++ b/beacon_chain/validators/beacon_validators.nim @@ -375,6 +375,8 @@ proc createAndSendAttestation(node: BeaconNode, node.config.dumpDirOutgoing, registered.data, registered.validator.pubkey) + + proc getBlockProposalEth1Data*(node: BeaconNode, state: ForkedHashedBeaconState): BlockProposalEth1Data = diff --git a/beacon_chain/validators/message_router.nim b/beacon_chain/validators/message_router.nim index 625057f78a..44ce411e48 100644 --- a/beacon_chain/validators/message_router.nim +++ b/beacon_chain/validators/message_router.nim @@ -13,8 +13,11 @@ import chronicles, metrics, ../spec/network, + ../spec/eip7594_helpers, ../consensus_object_pools/spec_cache, - ../gossip_processing/eth2_processor, + ../gossip_processing/[ + eth2_processor, + block_processor], ../networking/eth2_network, ./activity_metrics, ../spec/datatypes/deneb @@ -109,8 +112,10 @@ proc routeSignedBeaconBlock*( let blobs = blobsOpt.get() let kzgCommits = blck.message.body.blob_kzg_commitments.asSeq if blobs.len > 0 or kzgCommits.len > 0: - let res = validate_blobs(kzgCommits, blobs.mapIt(it.blob), - blobs.mapIt(it.kzg_proof)) + let res = validate_blobs( + kzgCommits, + blobs.mapIt(KzgBlob(bytes: it.blob)), + blobs.mapIt(it.kzg_proof)) if res.isErr(): warn "blobs failed validation", blockRoot = shortLog(blck.root), @@ -119,7 +124,6 @@ proc routeSignedBeaconBlock*( signature = shortLog(blck.signature), msg = res.error() return err(res.error()) - let sendTime = router[].getCurrentBeaconTime() delay = sendTime - blck.message.slot.block_deadline() @@ -142,6 +146,7 @@ proc routeSignedBeaconBlock*( blockRoot = shortLog(blck.root), blck = shortLog(blck.message), signature = shortLog(blck.signature), error = res.error() + # PREVENT PROPOSING BLOB SIDECARS IN PEERDAS DEVNET var blobRefs = Opt.none(BlobSidecars) if blobsOpt.isSome(): let blobs = blobsOpt.get() @@ -159,9 +164,34 @@ proc routeSignedBeaconBlock*( else: notice "Blob sent", blob = shortLog(blobs[i]) blobRefs = Opt.some(blobs.mapIt(newClone(it))) - + + var dataColumnRefs = Opt.none(DataColumnSidecars) + when typeof(blck).kind >= ConsensusFork.Deneb: + if blobsOpt.isSome(): + let blobs = blobsOpt.get() + if blobs.len != 0: + let dataColumnsOpt = newClone get_data_column_sidecars(blck, blobs.mapIt(KzgBlob(bytes: it.blob))) + if not dataColumnsOpt[].isOk: + debug "Issue with computing data column from blob bundle" + let data_columns = dataColumnsOpt[].get() + var das_workers = newSeq[Future[SendResult]](len(dataColumnsOpt[].get())) + for i in 0.. 0.Gwei + ok() + + for path in walkTests(OpSyncAggregateDir): + runTest[SyncAggregate, typeof applySyncAggregate]( + OpSyncAggregateDir, suiteName, "Sync Aggregate", "sync_aggregate", + applySyncAggregate, path) + suite baseDescription & "Voluntary Exit " & preset(): proc applyVoluntaryExit( - preState: var phase0.BeaconState, voluntaryExit: SignedVoluntaryExit): + preState: var altair.BeaconState, voluntaryExit: SignedVoluntaryExit): Result[void, cstring] = var cache: StateCache if process_voluntary_exit( diff --git a/tests/consensus_spec/phase0/test_fixture_ssz_consensus_objects.nim b/tests/consensus_spec/phase0/test_fixture_ssz_consensus_objects.nim index b2282e0ea9..6d765c0ec6 100644 --- a/tests/consensus_spec/phase0/test_fixture_ssz_consensus_objects.nim +++ b/tests/consensus_spec/phase0/test_fixture_ssz_consensus_objects.nim @@ -108,10 +108,10 @@ suite "EF - Phase 0 - SSZ consensus objects " & preset(): let hash = loadExpectedHashTreeRoot(path) case sszType: - of "AggregateAndProof": checkSSZ(AggregateAndProof, path, hash) - of "Attestation": checkSSZ(Attestation, path, hash) + of "AggregateAndProof": checkSSZ(phase0.AggregateAndProof, path, hash) + of "Attestation": checkSSZ(phase0.Attestation, path, hash) of "AttestationData": checkSSZ(AttestationData, path, hash) - of "AttesterSlashing": checkSSZ(AttesterSlashing, path, hash) + of "AttesterSlashing": checkSSZ(phase0.AttesterSlashing, path, hash) of "BeaconBlock": checkSSZ(phase0.BeaconBlock, path, hash) of "BeaconBlockBody": checkSSZ(phase0.BeaconBlockBody, path, hash) of "BeaconBlockHeader": checkSSZ(BeaconBlockHeader, path, hash) @@ -125,11 +125,12 @@ suite "EF - Phase 0 - SSZ consensus objects " & preset(): of "Fork": checkSSZ(Fork, path, hash) of "ForkData": checkSSZ(ForkData, path, hash) of "HistoricalBatch": checkSSZ(HistoricalBatch, path, hash) - of "IndexedAttestation": checkSSZ(IndexedAttestation, path, hash) + of "IndexedAttestation": + checkSSZ(phase0.IndexedAttestation, path, hash) of "PendingAttestation": checkSSZ(PendingAttestation, path, hash) of "ProposerSlashing": checkSSZ(ProposerSlashing, path, hash) of "SignedAggregateAndProof": - checkSSZ(SignedAggregateAndProof, path, hash) + checkSSZ(phase0.SignedAggregateAndProof, path, hash) of "SignedBeaconBlock": checkSSZ(phase0.SignedBeaconBlock, path, hash) of "SignedBeaconBlockHeader": checkSSZ(SignedBeaconBlockHeader, path, hash) @@ -138,4 +139,4 @@ suite "EF - Phase 0 - SSZ consensus objects " & preset(): of "Validator": checkSSZ(Validator, path, hash) of "VoluntaryExit": checkSSZ(VoluntaryExit, path, hash) else: - raise newException(ValueError, "Unsupported test: " & sszType) + raise newException(ValueError, "Unsupported test: " & sszType) \ No newline at end of file diff --git a/tests/consensus_spec/test_fixture_fork.nim b/tests/consensus_spec/test_fixture_fork.nim index a4c7e236ba..d9230c3617 100644 --- a/tests/consensus_spec/test_fixture_fork.nim +++ b/tests/consensus_spec/test_fixture_fork.nim @@ -78,11 +78,11 @@ suite "EF - Deneb - Fork " & preset(): runTest(capella.BeaconState, deneb.BeaconState, "Deneb", OpForkDir, upgrade_to_deneb, suiteName, path) -from ../../beacon_chain/spec/datatypes/electra import BeaconState - -suite "EF - Electra - Fork " & preset(): - const OpForkDir = - SszTestsDir/const_preset/"electra"/"fork"/"fork"/"pyspec_tests" - for kind, path in walkDir(OpForkDir, relative = true, checkDir = true): - runTest(deneb.BeaconState, electra.BeaconState, "Electra", OpForkDir, - upgrade_to_electra, suiteName, path) \ No newline at end of file +# from ../../beacon_chain/spec/datatypes/electra import BeaconState + +# suite "EF - Electra - Fork " & preset(): +# const OpForkDir = +# SszTestsDir/const_preset/"electra"/"fork"/"fork"/"pyspec_tests" +# for kind, path in walkDir(OpForkDir, relative = true, checkDir = true): +# runTest(deneb.BeaconState, electra.BeaconState, "Electra", OpForkDir, +# upgrade_to_electra, suiteName, path) \ No newline at end of file diff --git a/tests/consensus_spec/test_fixture_fork_choice.nim b/tests/consensus_spec/test_fixture_fork_choice.nim index 166a5e68e8..63e0a94097 100644 --- a/tests/consensus_spec/test_fixture_fork_choice.nim +++ b/tests/consensus_spec/test_fixture_fork_choice.nim @@ -136,7 +136,8 @@ proc loadOps( blobs: distinctBase(parseTest( path/(step["blobs"].getStr()) & ".ssz_snappy", SSZ, List[KzgBlob, Limit MAX_BLOBS_PER_BLOCK])), - proofs: step["proofs"].mapIt(KzgProof.fromHex(it.getStr()))) + proofs: step["proofs"].mapIt( + KzgProof(bytes: fromHex(array[48, byte], it.getStr())))) else: Opt.none(BlobData) else: diff --git a/tests/consensus_spec/test_fixture_kzg.nim b/tests/consensus_spec/test_fixture_kzg.nim index 029007673b..88777c9d43 100644 --- a/tests/consensus_spec/test_fixture_kzg.nim +++ b/tests/consensus_spec/test_fixture_kzg.nim @@ -10,11 +10,9 @@ import std/json, - yaml, + yaml/tojson, kzg4844/kzg_ex, - stint, - chronicles, - stew/[byteutils, results], + stew/byteutils, ../testutil, ./fixtures_utils, ./os_ops @@ -43,13 +41,13 @@ block: template sourceDir: string = currentSourcePath.rsplit(DirSep, 1)[0] doAssert Kzg.loadTrustedSetup( sourceDir & - "/../../vendor/nim-kzg4844/kzg4844/csources/src/trusted_setup.txt").isOk + "/../../vendor/nim-kzg4844/kzg4844/csources/src/trusted_setup.txt", 0).isOk proc runBlobToKzgCommitmentTest(suiteName, suitePath, path: string) = let relativePathComponent = path.relativeTestPathComponent(suitePath) test "KZG - Blob to KZG commitment - " & relativePathComponent: let - data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0] + data = loadToJson(os_ops.readFile(path/"data.yaml"))[0] output = data["output"] blob = fromHex[131072](data["input"]["blob"].getStr) @@ -60,18 +58,18 @@ proc runBlobToKzgCommitmentTest(suiteName, suitePath, path: string) = if blob.isNone: check output.kind == JNull else: - let commitment = blobToKzgCommitment(blob.get) + let commitment = blobToKzgCommitment(KzgBlob(bytes: blob.get)) check: if commitment.isErr: output.kind == JNull else: - commitment.get == fromHex[48](output.getStr).get + commitment.get().bytes == fromHex[48](output.getStr).get proc runVerifyKzgProofTest(suiteName, suitePath, path: string) = let relativePathComponent = path.relativeTestPathComponent(suitePath) test "KZG - Verify KZG proof - " & relativePathComponent: let - data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0] + data = loadToJson(os_ops.readFile(path/"data.yaml"))[0] output = data["output"] commitment = fromHex[48](data["input"]["commitment"].getStr) z = fromHex[32](data["input"]["z"].getStr) @@ -85,7 +83,10 @@ proc runVerifyKzgProofTest(suiteName, suitePath, path: string) = if commitment.isNone or z.isNone or y.isNone or proof.isNone: check output.kind == JNull else: - let v = verifyProof(commitment.get, z.get, y.get, proof.get) + let v = verifyProof( + KzgCommitment(bytes: commitment.get), + KzgBytes32(bytes: z.get), KzgBytes32(bytes: y.get), + KzgBytes48(bytes: proof.get)) check: if v.isErr: output.kind == JNull @@ -96,7 +97,7 @@ proc runVerifyBlobKzgProofTest(suiteName, suitePath, path: string) = let relativePathComponent = path.relativeTestPathComponent(suitePath) test "KZG - Verify blob KZG proof - " & relativePathComponent: let - data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0] + data = loadToJson(os_ops.readFile(path/"data.yaml"))[0] output = data["output"] blob = fromHex[131072](data["input"]["blob"].getStr) commitment = fromHex[48](data["input"]["commitment"].getStr) @@ -110,7 +111,10 @@ proc runVerifyBlobKzgProofTest(suiteName, suitePath, path: string) = if blob.isNone or commitment.isNone or proof.isNone: check output.kind == JNull else: - let v = verifyBlobKzgProof(blob.get, commitment.get, proof.get) + let v = verifyBlobKzgProof( + KzgBlob(bytes: blob.get), + KzgBytes48(bytes: commitment.get), + KzgBytes48(bytes: proof.get)) check: if v.isErr: output.kind == JNull @@ -121,7 +125,7 @@ proc runVerifyBlobKzgProofBatchTest(suiteName, suitePath, path: string) = let relativePathComponent = path.relativeTestPathComponent(suitePath) test "KZG - Verify blob KZG proof batch - " & relativePathComponent: let - data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0] + data = loadToJson(os_ops.readFile(path/"data.yaml"))[0] output = data["output"] blobs = data["input"]["blobs"].mapIt(fromHex[131072](it.getStr)) commitments = data["input"]["commitments"].mapIt(fromHex[48](it.getStr)) @@ -137,7 +141,9 @@ proc runVerifyBlobKzgProofBatchTest(suiteName, suitePath, path: string) = check output.kind == JNull else: let v = verifyBlobKzgProofBatch( - blobs.mapIt(it.get), commitments.mapIt(it.get), proofs.mapIt(it.get)) + blobs.mapIt(KzgBlob(bytes: it.get)), + commitments.mapIt(KzgCommitment(bytes: it.get)), + proofs.mapIt(KzgProof(bytes: it.get))) check: if v.isErr: output.kind == JNull @@ -148,7 +154,7 @@ proc runComputeKzgProofTest(suiteName, suitePath, path: string) = let relativePathComponent = path.relativeTestPathComponent(suitePath) test "KZG - Compute KZG proof - " & relativePathComponent: let - data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0] + data = loadToJson(os_ops.readFile(path/"data.yaml"))[0] output = data["output"] blob = fromHex[131072](data["input"]["blob"].getStr) z = fromHex[32](data["input"]["z"].getStr) @@ -160,7 +166,8 @@ proc runComputeKzgProofTest(suiteName, suitePath, path: string) = if blob.isNone or z.isNone: check output.kind == JNull else: - let p = computeKzgProof(blob.get, z.get) + let p = computeKzgProof( + KzgBlob(bytes: blob.get), KzgBytes32(bytes: z.get)) if p.isErr: check output.kind == JNull else: @@ -168,14 +175,14 @@ proc runComputeKzgProofTest(suiteName, suitePath, path: string) = proof = fromHex[48](output[0].getStr) y = fromHex[32](output[1].getStr) check: - p.get.proof == proof.get - p.get.y == y.get + p.get.proof.bytes == proof.get + p.get.y.bytes == y.get proc runComputeBlobKzgProofTest(suiteName, suitePath, path: string) = let relativePathComponent = path.relativeTestPathComponent(suitePath) test "KZG - Compute blob KZG proof - " & relativePathComponent: let - data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0] + data = loadToJson(os_ops.readFile(path/"data.yaml"))[0] output = data["output"] blob = fromHex[131072](data["input"]["blob"].getStr) commitment = fromHex[48](data["input"]["commitment"].getStr) @@ -187,39 +194,18 @@ proc runComputeBlobKzgProofTest(suiteName, suitePath, path: string) = if blob.isNone or commitment.isNone: check output.kind == JNull else: - let p = computeBlobKzgProof(blob.get, commitment.get) + let p = computeBlobKzgProof( + KzgBlob(bytes: blob.get), KzgBytes48(bytes: commitment.get)) if p.isErr: check output.kind == JNull else: - check p.get == fromHex[48](output.getStr).get + check p.get.bytes == fromHex[48](output.getStr).get -proc runComputeCellsTest(suiteName, suitePath, path: string) = - let relativePathComponent = path.relativeTestPathComponent(suitePath) - test "KZG - Compute Cells - " & relativePathComponent: - let - data = yaml.loadToJson(os_ops.readFile(path/"data.yaml"))[0] - output = data["output"] - blob = fromHex[131072](data["input"]["blob"].getStr) - - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.2/tests/formats/kzg_7594/verify_cell_kzg_proof.md#condition - # If the blob is invalid (e.g. incorrect length or one of the 32-byte - # blocks does not represent a BLS field element) it should error, i.e. the - # the output should be `null`. - if blob.isNone: - check output.kind == JNull - else: - let p = computeCells(blob.get) - if p.isErr: - check output.kind == JNull - else: - for i in 0.. MAX_TOP_BYTE and i %% kzg_abi.BYTES_PER_FIELD_ELEMENT == 0: blob[i] = MAX_TOP_BYTE - blobs.add(blob) + blobs.add(KzgBlob(bytes: blob)) ok(blobs) @@ -63,7 +63,7 @@ suite "EIP-7594 Unit Tests": doAssert extended_matrix.get.len == kzg_abi.CELLS_PER_EXT_BLOB * blob_count let chunkSize = kzg_abi.CELLS_PER_EXT_BLOB - rows = chunks(extended_matrix.get.asSeq, kzg_abi.CELLS_PER_EXT_BLOB) + rows = chunks(extended_matrix.get, kzg_abi.CELLS_PER_EXT_BLOB) for row in rows: doAssert len(row) == kzg_abi.CELLS_PER_EXT_BLOB testComputeExtendedMatrix() @@ -82,15 +82,48 @@ suite "EIP-7594 Unit Tests": extended_matrix = compute_extended_matrix(blobs.get) # Construct a matrix with some entries missing - var partial_matrix: ExtendedMatrix - for blob_entries in chunks(extended_matrix.get.asSeq, kzg_abi.CELLS_PER_EXT_BLOB): + var partial_matrix: seq[MatrixEntry] + for blob_entries in chunks(extended_matrix.get, kzg_abi.CELLS_PER_EXT_BLOB): var blb_entry = blob_entries rng.shuffle(blb_entry) - discard partial_matrix.add(blob_entries[0..N_SAMPLES-1]) - - # Given the partial matrix, now recover the missing entries - let recovered_matrix = recover_matrix(partial_matrix, CellID(blob_count)) - - - - + partial_matrix.add(blob_entries[0..N_SAMPLES-1]) + + # Given the partial matrix, recover the missing entries + let recovered_matrix = recover_matrix(partial_matrix, blob_count) + + # Ensure that the recovered matrix matches the original matrix + doAssert recovered_matrix == extended_matrix, "Both matrices don't match!" + testRecoverMatrix() + +suite "EIP-7594 Sampling Tests": + test "EIP7594: Extended Sample Count": + proc testExtendedSampleCount() = + + let samplesPerSlot = 16 + const tests = [ + (0, 16), + (1, 20), + (2, 24), + (3, 27), + (4, 29), + (5, 32), + (6, 35), + (7, 37), + (8, 40), + (9, 42), + (10, 44), + (11, 47), + (12, 49), + (13, 51), + (14, 53), + (15, 55), + (16, 57), + (17, 59), + (18, 61), + (19, 63), + (20, 65) + ] + + for (allowed_failures, extendedSampleCount) in tests: + check: get_extended_sample_count(samplesPerSlot, allowed_failures) == extendedSampleCount + testExtendedSampleCount() diff --git a/tests/test_helpers.nim b/tests/test_helpers.nim index 1893e7a5b5..8366bf35de 100644 --- a/tests/test_helpers.nim +++ b/tests/test_helpers.nim @@ -67,3 +67,190 @@ suite "Spec helpers": process(fieldVar, i shl childDepth) i += 1 process(state, state.numLeaves) + + test "hypergeom_cdf": + # Generated with SciPy's hypergeom.cdf() function + const tests = [ + ( 0, 2, 1, 1, 0.5), + ( 8, 200, 162, 9, 0.85631007588636132), + ( 2, 20, 11, 5, 0.39551083591331271), + ( 2, 5, 4, 3, 0.59999999999999987), + ( 16, 100, 71, 28, 0.050496322336354399), + ( 1, 5, 2, 2, 0.90000000000000002), + ( 0, 5, 4, 1, 0.20000000000000004), + ( 27, 200, 110, 54, 0.24032479119039216), + ( 0, 10, 2, 5, 0.22222222222222224), + ( 3, 50, 27, 5, 0.77138514980460271), + ( 2, 50, 24, 8, 0.15067269856977925), + ( 4, 20, 16, 7, 0.10113519091847264), + ( 13, 500, 408, 15, 0.79686197891279686), + ( 0, 5, 3, 1, 0.40000000000000008), + ( 0, 20, 14, 2, 0.078947368421052627), + ( 49, 100, 62, 79, 0.6077614986362827), + ( 2, 10, 3, 6, 0.83333333333333337), + ( 0, 50, 31, 2, 0.13959183673469389), + ( 2, 5, 4, 3, 0.59999999999999987), + ( 4, 50, 21, 8, 0.81380887468704521), + ( 0, 10, 7, 2, 0.066666666666666652), + ( 0, 10, 1, 4, 0.59999999999999987), + ( 0, 20, 4, 2, 0.63157894736842102), + ( 0, 3, 2, 1, 0.33333333333333331), + ( 39, 500, 427, 51, 0.05047757656076568), + ( 2, 100, 6, 21, 0.89490672557682871), + ( 5, 20, 11, 9, 0.68904501071683733), + ( 0, 2, 1, 1, 0.5), + ( 0, 3, 1, 1, 0.66666666666666674), + ( 14, 50, 27, 30, 0.16250719969887772), + ( 0, 5, 4, 1, 0.20000000000000004), + ( 0, 5, 4, 1, 0.20000000000000004), + ( 2, 10, 8, 4, 0.13333333333333333), + ( 1, 5, 3, 2, 0.69999999999999996), + ( 25, 100, 77, 31, 0.79699287800204943), + ( 0, 3, 2, 1, 0.33333333333333331), + ( 7, 20, 15, 8, 0.94891640866873062), + ( 3, 50, 26, 7, 0.45339412360688952), + ( 1, 10, 8, 2, 0.37777777777777771), + ( 40, 200, 61, 134, 0.4491054454532335), + ( 1, 5, 2, 4, 0.40000000000000008), + ( 0, 10, 6, 1, 0.39999999999999991), + ( 1, 50, 10, 13, 0.19134773839560071), + ( 0, 2, 1, 1, 0.5), + ( 1, 20, 5, 2, 0.94736842105263153), + ( 7, 50, 12, 30, 0.57532691212157849), + ( 0, 3, 1, 1, 0.66666666666666674), + ( 6, 10, 7, 9, 0.69999999999999996), + ( 0, 20, 2, 1, 0.90000000000000002), + ( 2, 10, 5, 3, 0.91666666666666663), + ( 0, 10, 8, 1, 0.19999999999999998), + (258, 500, 372, 347, 0.53219975096883698), + ( 1, 3, 2, 2, 0.66666666666666674), + ( 45, 200, 129, 68, 0.69415691010446789), + ( 1, 10, 8, 2, 0.37777777777777771), + ( 0, 10, 2, 1, 0.80000000000000004), + ( 1, 10, 4, 5, 0.26190476190476192), + ( 3, 50, 36, 4, 0.74422492401215801), + ( 0, 20, 6, 1, 0.69999999999999996), + ( 0, 5, 2, 3, 0.10000000000000002), + ( 1, 200, 47, 9, 0.33197417194852796), + ( 20, 50, 32, 30, 0.78323921453982637), + ( 16, 50, 21, 34, 0.9149336897131396), + ( 17, 50, 38, 22, 0.69599001425795692), + ( 0, 5, 2, 3, 0.10000000000000002), + ( 1, 5, 3, 2, 0.69999999999999996), + ( 0, 10, 9, 1, 0.10000000000000001), + ( 0, 5, 2, 3, 0.10000000000000002), + ( 2, 10, 5, 6, 0.26190476190476192), + ( 0, 5, 2, 1, 0.59999999999999987), + ( 7, 20, 16, 9, 0.62538699690402466), + ( 1, 100, 27, 2, 0.92909090909090908), + ( 27, 100, 58, 50, 0.271780848715515), + ( 47, 100, 96, 51, 0.063730084348641039), + ( 1, 20, 6, 2, 0.92105263157894735), + ( 1, 10, 6, 2, 0.66666666666666674), + ( 0, 2, 1, 1, 0.5), + ( 0, 20, 11, 1, 0.45000000000000001), + ( 0, 3, 1, 1, 0.66666666666666674), + ( 0, 2, 1, 1, 0.5), + ( 0, 10, 1, 7, 0.29999999999999999), + ( 0, 2, 1, 1, 0.5), + ( 0, 100, 36, 1, 0.64000000000000001), + ( 1, 100, 68, 2, 0.53979797979797983), + ( 13, 200, 79, 29, 0.80029860188814683), + ( 0, 10, 5, 1, 0.49999999999999994), + ( 0, 3, 2, 1, 0.33333333333333331), + ( 13, 100, 64, 21, 0.5065368728909565), + ( 1, 10, 6, 4, 0.11904761904761905), + ( 0, 2, 1, 1, 0.5), + ( 0, 5, 1, 2, 0.59999999999999987), + ( 0, 2, 1, 1, 0.5), + ( 1, 5, 4, 2, 0.40000000000000008), + ( 14, 50, 41, 17, 0.65850372332742224), + ( 0, 2, 1, 1, 0.5), + ( 0, 3, 1, 1, 0.66666666666666674), + ( 1, 100, 2, 62, 0.61797979797979785), + ( 0, 2, 1, 1, 0.5), + ( 0, 2, 1, 1, 0.5), + ( 12, 500, 312, 16, 0.91020698917397613), + ( 0, 20, 2, 6, 0.47894736842105257), + ( 0, 3, 2, 1, 0.33333333333333331), + ( 1, 10, 3, 4, 0.66666666666666674), + ( 0, 3, 1, 1, 0.66666666666666674), + ( 0, 3, 2, 1, 0.33333333333333331), + ( 6, 50, 20, 14, 0.72026241648862666), + ( 3, 20, 14, 6, 0.22523219814241485), + ( 0, 2, 1, 1, 0.5), + ( 4, 100, 72, 7, 0.30429108474790234), + ( 0, 5, 1, 2, 0.59999999999999987), + ( 0, 10, 4, 1, 0.59999999999999998), + ( 1, 3, 2, 2, 0.66666666666666674), + ( 0, 3, 1, 1, 0.66666666666666674), + ( 22, 50, 46, 24, 0.66413373860182379), + ( 1, 5, 2, 4, 0.40000000000000008), + ( 62, 100, 80, 79, 0.3457586020522983), + ( 0, 3, 2, 1, 0.33333333333333331), + ( 0, 10, 2, 7, 0.066666666666666666), + ( 0, 2, 1, 1, 0.5), + ( 0, 5, 2, 1, 0.59999999999999987), + ( 42, 200, 145, 57, 0.65622325663713577), + ( 1, 20, 12, 3, 0.34385964912280703), + ( 0, 2, 1, 1, 0.5), + ( 2, 10, 4, 7, 0.33333333333333331), + ( 1, 5, 3, 2, 0.69999999999999996), + ( 0, 10, 6, 2, 0.1333333333333333), + ( 2, 10, 6, 5, 0.26190476190476192), + ( 0, 5, 2, 1, 0.59999999999999987), + ( 1, 3, 2, 2, 0.66666666666666674), + ( 0, 50, 25, 2, 0.24489795918367349), + ( 0, 50, 39, 1, 0.22), + ( 2, 5, 3, 3, 0.90000000000000002), + ( 9, 50, 46, 10, 0.60316977854971765), + ( 0, 5, 2, 1, 0.59999999999999987), + ( 72, 500, 324, 112, 0.49074275180525029), + ( 0, 50, 9, 7, 0.22507959200836167), + ( 0, 5, 2, 2, 0.30000000000000004), + ( 17, 100, 35, 60, 0.067474411926413541), + ( 15, 100, 83, 17, 0.83718038506483827), + ( 0, 10, 7, 1, 0.29999999999999999), + ( 28, 200, 87, 77, 0.071226044946921765), + (154, 500, 361, 212, 0.61327756805578304), + ( 1, 10, 2, 3, 0.93333333333333335), + ( 0, 10, 4, 4, 0.071428571428571425), + ( 0, 5, 1, 1, 0.79999999999999993), + ( 2, 5, 3, 4, 0.59999999999999987), + ( 0, 10, 4, 1, 0.59999999999999998), + ( 0, 3, 2, 1, 0.33333333333333331), + ( 0, 10, 3, 1, 0.69999999999999996), + ( 0, 50, 10, 1, 0.80000000000000004), + ( 0, 2, 1, 1, 0.5), + ( 0, 10, 1, 3, 0.69999999999999996), + ( 2, 20, 12, 4, 0.53457172342621262), + ( 0, 5, 4, 1, 0.20000000000000004), + ( 4, 20, 9, 7, 0.89821981424148611), + ( 2, 200, 188, 3, 0.17021775544388609), + (132, 500, 298, 215, 0.78880271135040059), + ( 2, 5, 4, 3, 0.59999999999999987), + ( 0, 2, 1, 1, 0.5), + ( 2, 10, 6, 5, 0.26190476190476192), + ( 0, 3, 1, 1, 0.66666666666666674), + (156, 200, 128, 174, 1), + ( 1, 20, 6, 4, 0.65737874097007221), + ( 0, 5, 0, 0, 1), + (488, 500, 198, 500, 1), + (143, 500, 8, 371, 1), + ( 2, 10, 6, 5, 0.26190476190476192), + ( 1, 5, 2, 4, 0.40000000000000008), + ( 0, 3, 2, 0, 1), + ( 12, 50, 7, 17, 1), + (129, 200, 43, 133, 1), + ( 0, 5, 3, 0, 1), + ( 0, 2, 1, 1, 0.5), + ( 5, 20, 20, 17, 0), + ( 4, 10, 4, 8, 1), + ( 46, 500, 478, 58, 5.1715118817799218e-07), + ( 0, 3, 2, 3, 0), + ( 0, 3, 1, 1, 0.66666666666666674), + ( 76, 500, 0, 120, 1), + ( 1, 100, 41, 12, 0.011989696504564528), + ] + for (k, population, successes, draws, val) in tests: + check: abs(hypergeom_cdf(k, population, successes, draws) - val) < 1e-11 \ No newline at end of file diff --git a/tests/test_rest_json_serialization.nim b/tests/test_rest_json_serialization.nim index ba0404f96c..6c9a7da696 100644 --- a/tests/test_rest_json_serialization.nim +++ b/tests/test_rest_json_serialization.nim @@ -213,7 +213,7 @@ from stew/byteutils import hexToByteArray func fromHex(T: typedesc[KzgCommitment], s: string): T {. raises: [ValueError].} = var res: T - hexToByteArray(s, res) + hexToByteArray(s, res.bytes) res suite "REST JSON encoding and decoding": diff --git a/tests/test_sync_manager.nim b/tests/test_sync_manager.nim index 65fa75cd01..0ed00e08ca 100644 --- a/tests/test_sync_manager.nim +++ b/tests/test_sync_manager.nim @@ -50,7 +50,7 @@ func collector(queue: AsyncQueue[BlockEntry]): BlockVerifier = # testing goes, this is risky because it might introduce differences between # the BlockProcessor and this test proc verify(signedBlock: ForkedSignedBeaconBlock, blobs: Opt[BlobSidecars], - maybeFinalized: bool): + data_columns: Opt[DataColumnSidecars], maybeFinalized: bool): Future[Result[void, VerifierError]] {.async: (raises: [CancelledError], raw: true).} = let fut = Future[Result[void, VerifierError]].Raising([CancelledError]).init() try: queue.addLastNoWait(BlockEntry(blck: signedBlock, resfut: fut)) @@ -354,7 +354,7 @@ suite "SyncManager test suite": if request.isEmpty(): break await queue.push(request, getSlice(chain, start, request), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await validatorFut.cancelAndWait() waitFor runSmokeTest() @@ -429,7 +429,7 @@ suite "SyncManager test suite": var r13 = queue.pop(finishSlot, p3) var f13 = queue.push(r13, chain.getSlice(startSlot, r13), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check: f13.finished == false @@ -438,7 +438,7 @@ suite "SyncManager test suite": of SyncQueueKind.Backward: counter == int(finishSlot) var f11 = queue.push(r11, chain.getSlice(startSlot, r11), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check: case kkind @@ -448,7 +448,7 @@ suite "SyncManager test suite": f13.finished == false var f12 = queue.push(r12, chain.getSlice(startSlot, r12), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await allFutures(f11, f12, f13) check: f12.finished == true and f12.failed == false @@ -551,7 +551,7 @@ suite "SyncManager test suite": check response[0][].slot >= getFowardSafeSlotCb() else: check response[^1][].slot <= getBackwardSafeSlotCb() - await queue.push(request, response, Opt.none(seq[BlobSidecars])) + await queue.push(request, response, Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await validatorFut.cancelAndWait() waitFor runTest() @@ -634,7 +634,7 @@ suite "SyncManager test suite": # Handle request 1. Should be re-enqueued as it simulates `Invalid`. let response1 = getSlice(chain, start, request1) - await queue.push(request1, response1, Opt.none(seq[BlobSidecars])) + await queue.push(request1, response1, Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) check debtLen(queue) == request2.count + request1.count # Request 1 should be discarded as it is no longer relevant. @@ -646,7 +646,7 @@ suite "SyncManager test suite": # Handle request 3. Should be re-enqueued as it simulates `Invalid`. let response3 = getSlice(chain, start, request3) - await queue.push(request3, response3, Opt.none(seq[BlobSidecars])) + await queue.push(request3, response3, Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) check debtLen(queue) == request3.count # Request 2 should be re-issued. @@ -660,7 +660,7 @@ suite "SyncManager test suite": # Handle request 4. Should be re-enqueued as it simulates `Invalid`. let response4 = getSlice(chain, start, request4) - await queue.push(request4, response4, Opt.none(seq[BlobSidecars])) + await queue.push(request4, response4, Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) check debtLen(queue) == request4.count # Advance `safeSlot` out of band. @@ -777,14 +777,14 @@ suite "SyncManager test suite": var r14 = queue.pop(finishSlot, p4) var f14 = queue.push(r14, chain.getSlice(startSlot, r14), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check: f14.finished == false counter == int(startSlot) var f12 = queue.push(r12, chain.getSlice(startSlot, r12), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check: counter == int(startSlot) @@ -792,7 +792,7 @@ suite "SyncManager test suite": f14.finished == false var f11 = queue.push(r11, chain.getSlice(startSlot, r11), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await allFutures(f11, f12) check: counter == int(startSlot + chunkSize + chunkSize) @@ -804,7 +804,7 @@ suite "SyncManager test suite": withBlck(missingSlice[0][]): forkyBlck.message.proposer_index = 0xDEADBEAF'u64 var f13 = queue.push(r13, missingSlice, - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await allFutures(f13, f14) check: f11.finished == true and f11.failed == false @@ -826,17 +826,17 @@ suite "SyncManager test suite": check r18.isEmpty() == true var f17 = queue.push(r17, chain.getSlice(startSlot, r17), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check f17.finished == false var f16 = queue.push(r16, chain.getSlice(startSlot, r16), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check f16.finished == false var f15 = queue.push(r15, chain.getSlice(startSlot, r15), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await allFutures(f15, f16, f17) check: f15.finished == true and f15.failed == false @@ -883,7 +883,7 @@ suite "SyncManager test suite": # Push a single request that will fail with all blocks being unviable var f11 = queue.push(r11, chain.getSlice(startSlot, r11), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) discard await f11.withTimeout(100.milliseconds) check: @@ -949,14 +949,14 @@ suite "SyncManager test suite": var r14 = queue.pop(finishSlot, p4) var f14 = queue.push(r14, chain.getSlice(startSlot, r14), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check: f14.finished == false counter == int(finishSlot) var f12 = queue.push(r12, chain.getSlice(startSlot, r12), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check: counter == int(finishSlot) @@ -964,7 +964,7 @@ suite "SyncManager test suite": f14.finished == false var f11 = queue.push(r11, chain.getSlice(startSlot, r11), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await allFutures(f11, f12) check: counter == int(finishSlot - chunkSize - chunkSize) @@ -975,7 +975,7 @@ suite "SyncManager test suite": var missingSlice = chain.getSlice(startSlot, r13) withBlck(missingSlice[0][]): forkyBlck.message.proposer_index = 0xDEADBEAF'u64 - var f13 = queue.push(r13, missingSlice, Opt.none(seq[BlobSidecars])) + var f13 = queue.push(r13, missingSlice, Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await allFutures(f13, f14) check: f11.finished == true and f11.failed == false @@ -993,12 +993,12 @@ suite "SyncManager test suite": check r17.isEmpty() == true var f16 = queue.push(r16, chain.getSlice(startSlot, r16), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await sleepAsync(100.milliseconds) check f16.finished == false var f15 = queue.push(r15, chain.getSlice(startSlot, r15), - Opt.none(seq[BlobSidecars])) + Opt.none(seq[BlobSidecars]), Opt.none(seq[DataColumnSidecars])) await allFutures(f15, f16) check: f15.finished == true and f15.failed == false diff --git a/vendor/nim-bearssl b/vendor/nim-bearssl index d81b37dc20..646fa2152b 160000 --- a/vendor/nim-bearssl +++ b/vendor/nim-bearssl @@ -1 +1 @@ -Subproject commit d81b37dc2011bf3a2bd93500489877c2ce8e6ac3 +Subproject commit 646fa2152b11980c24bf34b3e214b479c9d25f21 diff --git a/vendor/nim-blscurve b/vendor/nim-blscurve index d091a579a2..9c6e80c610 160000 --- a/vendor/nim-blscurve +++ b/vendor/nim-blscurve @@ -1 +1 @@ -Subproject commit d091a579a2e7c4668140e675a6fb2c78b8c6dc57 +Subproject commit 9c6e80c6109133c0af3025654f5a8820282cff05 diff --git a/vendor/nim-chronos b/vendor/nim-chronos index 8a306763ce..1b9d9253e8 160000 --- a/vendor/nim-chronos +++ b/vendor/nim-chronos @@ -1 +1 @@ -Subproject commit 8a306763cec8105fa83574b56734b0f66823f844 +Subproject commit 1b9d9253e89445d585d0fff39cc0d19254fdfd0d diff --git a/vendor/nim-eth2-scenarios b/vendor/nim-eth2-scenarios index 54675b5f1f..fc7a45a731 160000 --- a/vendor/nim-eth2-scenarios +++ b/vendor/nim-eth2-scenarios @@ -1 +1 @@ -Subproject commit 54675b5f1fd8156a508e75991693df57a281642e +Subproject commit fc7a45a731736248b96ad5827a8356c0e14d3b8c diff --git a/vendor/nim-faststreams b/vendor/nim-faststreams index 11b9d952a8..dbc4a95df6 160000 --- a/vendor/nim-faststreams +++ b/vendor/nim-faststreams @@ -1 +1 @@ -Subproject commit 11b9d952a80ec87e2443405a6a5382f9daac51f8 +Subproject commit dbc4a95df60238157dcf286f6125188cb72f37c1 diff --git a/vendor/nim-http-utils b/vendor/nim-http-utils index be57dbc902..98496aa24d 160000 --- a/vendor/nim-http-utils +++ b/vendor/nim-http-utils @@ -1 +1 @@ -Subproject commit be57dbc902d36f37540897e98c69aa80f868cb45 +Subproject commit 98496aa24d9364d1652e531f5f346de9b7cb3e15 diff --git a/vendor/nim-kzg4844 b/vendor/nim-kzg4844 index d915948dd5..e576c9bab9 160000 --- a/vendor/nim-kzg4844 +++ b/vendor/nim-kzg4844 @@ -1 +1 @@ -Subproject commit d915948dd58c2ad23b551cd408066046cf5e46db +Subproject commit e576c9bab93c425c6c8c0f3603d98a149599d942 diff --git a/vendor/nim-nat-traversal b/vendor/nim-nat-traversal index 54bf8aa291..9c7dc8c58f 160000 --- a/vendor/nim-nat-traversal +++ b/vendor/nim-nat-traversal @@ -1 +1 @@ -Subproject commit 54bf8aa2913e8550463779beeae4b469941e039c +Subproject commit 9c7dc8c58ff9c3dfb11c2d333171b47659ed824c diff --git a/vendor/nim-unicodedb b/vendor/nim-unicodedb index 3db16f8ece..8c8959d84c 160000 --- a/vendor/nim-unicodedb +++ b/vendor/nim-unicodedb @@ -1 +1 @@ -Subproject commit 3db16f8ece5d0eba310c8f1ed812c6ff5a21a34a +Subproject commit 8c8959d84c12ecda6ea14c67bd68675b1936f8cf