diff --git a/ConsensusSpecPreset-mainnet.md b/ConsensusSpecPreset-mainnet.md index 588512d14..f35de0c85 100644 --- a/ConsensusSpecPreset-mainnet.md +++ b/ConsensusSpecPreset-mainnet.md @@ -2561,13 +2561,15 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + 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_has_compounding_withdrawal_credential [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_pre_activation [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 +OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Electra - Operations - Attestation [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -3026,6 +3028,13 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing SignedContributionAndProof OK + Testing SignedVoluntaryExit OK + Testing SigningData OK ++ Testing StableAttestation OK ++ Testing StableAttesterSlashing OK ++ Testing StableBeaconBlockBody OK ++ Testing StableBeaconState OK ++ Testing StableExecutionPayload OK ++ Testing StableExecutionPayloadHeader OK ++ Testing StableIndexedAttestation OK + Testing SyncAggregate OK + Testing SyncAggregatorSelectionData OK + Testing SyncCommittee OK @@ -3036,7 +3045,7 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK + Testing WithdrawalRequest OK ``` -OK: 54/54 Fail: 0/54 Skip: 0/54 +OK: 61/61 Fail: 0/61 Skip: 0/61 ## EF - Electra - Sanity - Blocks [Preset: mainnet] ```diff + [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_eth1_deposits_overl OK @@ -3180,8 +3189,12 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Light client - Single merkle proof - mainnet/deneb/light_client/single_merkle_proof/Beacon OK + Light client - Single merkle proof - mainnet/deneb/light_client/single_merkle_proof/Beacon OK + Light client - Single merkle proof - mainnet/deneb/light_client/single_merkle_proof/Beacon OK ++ Light client - Single merkle proof - mainnet/electra/light_client/single_merkle_proof/Beac OK ++ Light client - Single merkle proof - mainnet/electra/light_client/single_merkle_proof/Beac OK ++ Light client - Single merkle proof - mainnet/electra/light_client/single_merkle_proof/Beac OK ++ Light client - Single merkle proof - mainnet/electra/light_client/single_merkle_proof/Beac OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 +OK: 18/18 Fail: 0/18 Skip: 0/18 ## EF - Merkle proof [Preset: mainnet] ```diff Merkle proof - Single merkle proof - eip7594 Skip @@ -3189,8 +3202,12 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + Merkle proof - Single merkle proof - mainnet/deneb/merkle_proof/single_merkle_proof/Beacon OK + Merkle proof - Single merkle proof - mainnet/deneb/merkle_proof/single_merkle_proof/Beacon OK + Merkle proof - Single merkle proof - mainnet/deneb/merkle_proof/single_merkle_proof/Beacon OK ++ Merkle proof - Single merkle proof - mainnet/electra/merkle_proof/single_merkle_proof/Beac OK ++ Merkle proof - Single merkle proof - mainnet/electra/merkle_proof/single_merkle_proof/Beac OK ++ Merkle proof - Single merkle proof - mainnet/electra/merkle_proof/single_merkle_proof/Beac OK ++ Merkle proof - Single merkle proof - mainnet/electra/merkle_proof/single_merkle_proof/Beac OK ``` -OK: 4/5 Fail: 0/5 Skip: 1/5 +OK: 8/9 Fail: 0/9 Skip: 1/9 ## EF - Phase 0 - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK @@ -3693,4 +3710,4 @@ OK: 69/88 Fail: 0/88 Skip: 19/88 OK: 3/3 Fail: 0/3 Skip: 0/3 ---TOTAL--- -OK: 2971/2991 Fail: 0/2991 Skip: 20/2991 +OK: 2988/3008 Fail: 0/3008 Skip: 20/3008 diff --git a/ConsensusSpecPreset-minimal.md b/ConsensusSpecPreset-minimal.md index d4bb95796..5a9a43b45 100644 --- a/ConsensusSpecPreset-minimal.md +++ b/ConsensusSpecPreset-minimal.md @@ -2689,14 +2689,16 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + 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_has_compounding_withdrawal_credential [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_pre_activation [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 +OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Electra - Operations - Attestation [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -3179,6 +3181,13 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing SignedContributionAndProof OK + Testing SignedVoluntaryExit OK + Testing SigningData OK ++ Testing StableAttestation OK ++ Testing StableAttesterSlashing OK ++ Testing StableBeaconBlockBody OK ++ Testing StableBeaconState OK ++ Testing StableExecutionPayload OK ++ Testing StableExecutionPayloadHeader OK ++ Testing StableIndexedAttestation OK + Testing SyncAggregate OK + Testing SyncAggregatorSelectionData OK + Testing SyncCommittee OK @@ -3189,7 +3198,7 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK + Testing WithdrawalRequest OK ``` -OK: 54/54 Fail: 0/54 Skip: 0/54 +OK: 61/61 Fail: 0/61 Skip: 0/61 ## EF - Electra - Sanity - Blocks [Preset: minimal] ```diff + [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_eth1_deposits_overl OK @@ -3345,40 +3354,55 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Light client - Single merkle proof - minimal/deneb/light_client/single_merkle_proof/Beacon OK + Light client - Single merkle proof - minimal/deneb/light_client/single_merkle_proof/Beacon OK + Light client - Single merkle proof - minimal/deneb/light_client/single_merkle_proof/Beacon OK ++ Light client - Single merkle proof - minimal/electra/light_client/single_merkle_proof/Beac OK ++ Light client - Single merkle proof - minimal/electra/light_client/single_merkle_proof/Beac OK ++ Light client - Single merkle proof - minimal/electra/light_client/single_merkle_proof/Beac OK ++ Light client - Single merkle proof - minimal/electra/light_client/single_merkle_proof/Beac OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 +OK: 18/18 Fail: 0/18 Skip: 0/18 ## EF - Light client - Sync [Preset: minimal] ```diff + Light client - Sync - minimal/altair/light_client/sync/pyspec_tests/advance_finality_witho OK + Light client - Sync - minimal/altair/light_client/sync/pyspec_tests/capella_store_with_leg OK + Light client - Sync - minimal/altair/light_client/sync/pyspec_tests/deneb_store_with_legac OK ++ Light client - Sync - minimal/altair/light_client/sync/pyspec_tests/electra_store_with_leg OK + Light client - Sync - minimal/altair/light_client/sync/pyspec_tests/light_client_sync OK + Light client - Sync - minimal/altair/light_client/sync/pyspec_tests/supply_sync_committee_ OK + Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/advance_finality_wi OK + Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/capella_deneb_fork OK ++ Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/capella_electra_for OK + Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/capella_fork OK + Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/capella_store_with_ OK + Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/deneb_store_with_le OK ++ Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/electra_store_with_ OK + Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/light_client_sync OK + Light client - Sync - minimal/bellatrix/light_client/sync/pyspec_tests/supply_sync_committ OK + Light client - Sync - minimal/capella/light_client/sync/pyspec_tests/advance_finality_with OK ++ Light client - Sync - minimal/capella/light_client/sync/pyspec_tests/deneb_electra_fork OK + Light client - Sync - minimal/capella/light_client/sync/pyspec_tests/deneb_fork OK + Light client - Sync - minimal/capella/light_client/sync/pyspec_tests/deneb_store_with_lega OK ++ Light client - Sync - minimal/capella/light_client/sync/pyspec_tests/electra_store_with_le OK + Light client - Sync - minimal/capella/light_client/sync/pyspec_tests/light_client_sync OK + Light client - Sync - minimal/capella/light_client/sync/pyspec_tests/supply_sync_committee OK + Light client - Sync - minimal/deneb/light_client/sync/pyspec_tests/advance_finality_withou OK ++ Light client - Sync - minimal/deneb/light_client/sync/pyspec_tests/electra_fork OK ++ Light client - Sync - minimal/deneb/light_client/sync/pyspec_tests/electra_store_with_lega OK + Light client - Sync - minimal/deneb/light_client/sync/pyspec_tests/light_client_sync OK + Light client - Sync - minimal/deneb/light_client/sync/pyspec_tests/supply_sync_committee_f OK ++ Light client - Sync - minimal/electra/light_client/sync/pyspec_tests/advance_finality_with OK ++ Light client - Sync - minimal/electra/light_client/sync/pyspec_tests/light_client_sync OK ++ Light client - Sync - minimal/electra/light_client/sync/pyspec_tests/supply_sync_committee OK ``` -OK: 20/20 Fail: 0/20 Skip: 0/20 +OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Light client - Update ranking [Preset: minimal] ```diff + Light client - Update ranking - minimal/altair/light_client/update_ranking/pyspec_tests/up OK + Light client - Update ranking - minimal/bellatrix/light_client/update_ranking/pyspec_tests OK + Light client - Update ranking - minimal/capella/light_client/update_ranking/pyspec_tests/u OK + Light client - Update ranking - minimal/deneb/light_client/update_ranking/pyspec_tests/upd OK ++ Light client - Update ranking - minimal/electra/light_client/update_ranking/pyspec_tests/u OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 +OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Merkle proof [Preset: minimal] ```diff Merkle proof - Single merkle proof - eip7594 Skip @@ -3386,8 +3410,12 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Merkle proof - Single merkle proof - minimal/deneb/merkle_proof/single_merkle_proof/Beacon OK + Merkle proof - Single merkle proof - minimal/deneb/merkle_proof/single_merkle_proof/Beacon OK + Merkle proof - Single merkle proof - minimal/deneb/merkle_proof/single_merkle_proof/Beacon OK ++ Merkle proof - Single merkle proof - minimal/electra/merkle_proof/single_merkle_proof/Beac OK ++ Merkle proof - Single merkle proof - minimal/electra/merkle_proof/single_merkle_proof/Beac OK ++ Merkle proof - Single merkle proof - minimal/electra/merkle_proof/single_merkle_proof/Beac OK ++ Merkle proof - Single merkle proof - minimal/electra/merkle_proof/single_merkle_proof/Beac OK ``` -OK: 4/5 Fail: 0/5 Skip: 1/5 +OK: 8/9 Fail: 0/9 Skip: 1/9 ## EF - Phase 0 - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK @@ -4019,4 +4047,4 @@ OK: 185/207 Fail: 0/207 Skip: 22/207 OK: 3/3 Fail: 0/3 Skip: 0/3 ---TOTAL--- -OK: 3266/3289 Fail: 0/3289 Skip: 23/3289 +OK: 3294/3317 Fail: 0/3317 Skip: 23/3317 diff --git a/beacon_chain/spec/datatypes/electra.nim b/beacon_chain/spec/datatypes/electra.nim index cd05f6e00..29818802e 100644 --- a/beacon_chain/spec/datatypes/electra.nim +++ b/beacon_chain/spec/datatypes/electra.nim @@ -730,15 +730,16 @@ func normalize_merkle_branch*[N]( res # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/altair/light-client/sync-protocol.md#is_valid_normalized_merkle_branch -func is_valid_normalized_merkle_branch[N]( +func is_valid_normalized_merkle_branch*[N]( leaf: Eth2Digest, branch: array[N, Eth2Digest], - gindex: static GeneralizedIndex, + gindex: GeneralizedIndex, root: Eth2Digest): bool = - const + let depth = log2trunc(gindex) index = get_subtree_index(gindex) - num_extra = branch.len - depth + doAssert branch.len >= depth, "Branch is set up in a way that always fails" + let num_extra = branch.len - depth for i in 0 ..< num_extra: if not branch[i].isZero: return false diff --git a/tests/testdbutil.nim b/tests/testdbutil.nim index 48df0f222..f32ffff1c 100644 --- a/tests/testdbutil.nim +++ b/tests/testdbutil.nim @@ -31,6 +31,8 @@ proc makeTestDB*( cfg.CAPELLA_FORK_EPOCH = 90000.Epoch if cfg.DENEB_FORK_EPOCH == FAR_FUTURE_EPOCH: cfg.DENEB_FORK_EPOCH = 100000.Epoch + if cfg.ELECTRA_FORK_EPOCH == FAR_FUTURE_EPOCH: + cfg.ELECTRA_FORK_EPOCH = 110000.Epoch var genState = (ref ForkedHashedBeaconState)( kind: ConsensusFork.Phase0, @@ -98,4 +100,4 @@ proc getEarliestInvalidBlockRoot*( break curBlck = curBlck.parent - curBlck.root \ No newline at end of file + curBlck.root