consolidate slot sanity checks across forks (#4418)
* consolidate slot sanity checks across forks * use `new` rather than `init` for constructor of `ref`s
This commit is contained in:
parent
bc996623e0
commit
cd993ca418
|
@ -36,6 +36,11 @@ ConsensusSpecPreset-mainnet
|
||||||
+ EF - Altair - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
+ EF - Altair - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
||||||
+ EF - Altair - Rewards - with_slashed_validators [Preset: mainnet] OK
|
+ EF - Altair - Rewards - with_slashed_validators [Preset: mainnet] OK
|
||||||
+ EF - Altair - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
+ EF - Altair - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
||||||
|
+ EF - Altair - Slots - double_empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - Altair - Slots - empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - Altair - Slots - over_epoch_boundary [Preset: mainnet] OK
|
||||||
|
+ EF - Altair - Slots - slots_1 [Preset: mainnet] OK
|
||||||
|
+ EF - Altair - Slots - slots_2 [Preset: mainnet] OK
|
||||||
+ EF - Altair - Transition - normal_transition [Preset: mainnet] OK
|
+ EF - Altair - Transition - normal_transition [Preset: mainnet] OK
|
||||||
+ EF - Altair - Transition - simple_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_first_post_block [Preset: mainnet] OK
|
||||||
|
@ -91,6 +96,11 @@ ConsensusSpecPreset-mainnet
|
||||||
+ EF - Bellatrix - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
+ EF - Bellatrix - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
||||||
+ EF - Bellatrix - Rewards - with_slashed_validators [Preset: mainnet] OK
|
+ EF - Bellatrix - Rewards - with_slashed_validators [Preset: mainnet] OK
|
||||||
+ EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
+ EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
||||||
|
+ EF - Bellatrix - Slots - double_empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - Bellatrix - Slots - empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - Bellatrix - Slots - over_epoch_boundary [Preset: mainnet] OK
|
||||||
|
+ EF - Bellatrix - Slots - slots_1 [Preset: mainnet] OK
|
||||||
|
+ EF - Bellatrix - Slots - slots_2 [Preset: mainnet] OK
|
||||||
+ EF - Bellatrix - Transition - normal_transition [Preset: mainnet] OK
|
+ EF - Bellatrix - Transition - normal_transition [Preset: mainnet] OK
|
||||||
+ EF - Bellatrix - Transition - simple_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_first_post_block [Preset: mainnet] OK
|
||||||
|
@ -146,6 +156,11 @@ ConsensusSpecPreset-mainnet
|
||||||
+ EF - Capella - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
+ EF - Capella - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
||||||
+ EF - Capella - Rewards - with_slashed_validators [Preset: mainnet] OK
|
+ EF - Capella - Rewards - with_slashed_validators [Preset: mainnet] OK
|
||||||
+ EF - Capella - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
+ EF - Capella - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
||||||
|
+ EF - Capella - Slots - double_empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - Capella - Slots - empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - Capella - Slots - over_epoch_boundary [Preset: mainnet] OK
|
||||||
|
+ EF - Capella - Slots - slots_1 [Preset: mainnet] OK
|
||||||
|
+ EF - Capella - Slots - slots_2 [Preset: mainnet] OK
|
||||||
+ EF - Capella - Transition - normal_transition [Preset: mainnet] OK
|
+ EF - Capella - Transition - normal_transition [Preset: mainnet] OK
|
||||||
+ EF - Capella - Transition - simple_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_first_post_block [Preset: mainnet] OK
|
||||||
|
@ -201,6 +216,11 @@ ConsensusSpecPreset-mainnet
|
||||||
+ EF - EIP4844 - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
+ EF - EIP4844 - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
||||||
+ EF - EIP4844 - Rewards - with_slashed_validators [Preset: mainnet] OK
|
+ EF - EIP4844 - Rewards - with_slashed_validators [Preset: mainnet] OK
|
||||||
+ EF - EIP4844 - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
+ EF - EIP4844 - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
||||||
|
+ EF - EIP4844 - Slots - double_empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - EIP4844 - Slots - empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - EIP4844 - Slots - over_epoch_boundary [Preset: mainnet] OK
|
||||||
|
+ EF - EIP4844 - Slots - slots_1 [Preset: mainnet] OK
|
||||||
|
+ EF - EIP4844 - Slots - slots_2 [Preset: mainnet] OK
|
||||||
+ EF - EIP4844 - Transition - normal_transition [Preset: mainnet] OK
|
+ EF - EIP4844 - Transition - normal_transition [Preset: mainnet] OK
|
||||||
+ EF - EIP4844 - Transition - simple_transition [Preset: mainnet] OK
|
+ EF - EIP4844 - Transition - simple_transition [Preset: mainnet] OK
|
||||||
+ EF - EIP4844 - Transition - transition_missing_first_post_block [Preset: mainnet] OK
|
+ EF - EIP4844 - Transition - transition_missing_first_post_block [Preset: mainnet] OK
|
||||||
|
@ -271,6 +291,11 @@ ConsensusSpecPreset-mainnet
|
||||||
+ EF - Phase 0 - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
+ EF - Phase 0 - Rewards - with_not_yet_activated_validators_leak [Preset: mainnet] OK
|
||||||
+ EF - Phase 0 - Rewards - with_slashed_validators [Preset: mainnet] OK
|
+ EF - Phase 0 - Rewards - with_slashed_validators [Preset: mainnet] OK
|
||||||
+ EF - Phase 0 - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
+ EF - Phase 0 - Rewards - with_slashed_validators_leak [Preset: mainnet] OK
|
||||||
|
+ EF - Phase 0 - Slots - double_empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - Phase 0 - Slots - empty_epoch [Preset: mainnet] OK
|
||||||
|
+ EF - Phase 0 - Slots - over_epoch_boundary [Preset: mainnet] OK
|
||||||
|
+ EF - Phase 0 - Slots - slots_1 [Preset: mainnet] OK
|
||||||
|
+ EF - Phase 0 - Slots - slots_2 [Preset: mainnet] OK
|
||||||
+ ForkChoice - mainnet/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_attestations_is_great OK
|
+ ForkChoice - mainnet/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_attestations_is_great OK
|
||||||
+ ForkChoice - mainnet/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_boost_n OK
|
+ ForkChoice - mainnet/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_boost_n OK
|
||||||
+ ForkChoice - mainnet/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_honest_ OK
|
+ ForkChoice - mainnet/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_honest_ OK
|
||||||
|
@ -351,11 +376,6 @@ ConsensusSpecPreset-mainnet
|
||||||
+ Light client - Single merkle proof - mainnet/eip4844/light_client/single_merkle_proof/Beac OK
|
+ Light client - Single merkle proof - mainnet/eip4844/light_client/single_merkle_proof/Beac OK
|
||||||
+ Light client - Single merkle proof - mainnet/eip4844/light_client/single_merkle_proof/Beac OK
|
+ Light client - Single merkle proof - mainnet/eip4844/light_client/single_merkle_proof/Beac OK
|
||||||
+ Light client - Single merkle proof - mainnet/eip4844/light_client/single_merkle_proof/Beac OK
|
+ Light client - Single merkle proof - mainnet/eip4844/light_client/single_merkle_proof/Beac OK
|
||||||
+ Slots - double_empty_epoch OK
|
|
||||||
+ Slots - empty_epoch OK
|
|
||||||
+ Slots - over_epoch_boundary OK
|
|
||||||
+ Slots - slots_1 OK
|
|
||||||
+ Slots - slots_2 OK
|
|
||||||
+ Sync - mainnet/bellatrix/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK
|
+ Sync - mainnet/bellatrix/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK
|
||||||
+ Sync - mainnet/capella/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK
|
+ Sync - mainnet/capella/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK
|
||||||
+ [Invalid] EF - Altair - Sanity - Blocks - expected_deposit_in_block [Preset: mainnet] OK
|
+ [Invalid] EF - Altair - Sanity - Blocks - expected_deposit_in_block [Preset: mainnet] OK
|
||||||
|
@ -744,7 +764,7 @@ ConsensusSpecPreset-mainnet
|
||||||
+ fork_random_low_balances OK
|
+ fork_random_low_balances OK
|
||||||
+ fork_random_misc_balances OK
|
+ fork_random_misc_balances OK
|
||||||
```
|
```
|
||||||
OK: 733/741 Fail: 0/741 Skip: 8/741
|
OK: 753/761 Fail: 0/761 Skip: 8/761
|
||||||
## Attestation
|
## Attestation
|
||||||
```diff
|
```diff
|
||||||
+ [Invalid] EF - Altair - Operations - Attestation - after_epoch_slots OK
|
+ [Invalid] EF - Altair - Operations - Attestation - after_epoch_slots OK
|
||||||
|
@ -2419,4 +2439,4 @@ OK: 63/63 Fail: 0/63 Skip: 0/63
|
||||||
OK: 51/51 Fail: 0/51 Skip: 0/51
|
OK: 51/51 Fail: 0/51 Skip: 0/51
|
||||||
|
|
||||||
---TOTAL---
|
---TOTAL---
|
||||||
OK: 2125/2133 Fail: 0/2133 Skip: 8/2133
|
OK: 2145/2153 Fail: 0/2153 Skip: 8/2153
|
||||||
|
|
|
@ -36,6 +36,11 @@ ConsensusSpecPreset-minimal
|
||||||
+ EF - Altair - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
+ EF - Altair - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
||||||
+ EF - Altair - Rewards - with_slashed_validators [Preset: minimal] OK
|
+ EF - Altair - Rewards - with_slashed_validators [Preset: minimal] OK
|
||||||
+ EF - Altair - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
+ EF - Altair - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
||||||
|
+ EF - Altair - Slots - double_empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - Altair - Slots - empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - Altair - Slots - over_epoch_boundary [Preset: minimal] OK
|
||||||
|
+ EF - Altair - Slots - slots_1 [Preset: minimal] OK
|
||||||
|
+ EF - Altair - Slots - slots_2 [Preset: minimal] OK
|
||||||
+ EF - Altair - Transition - normal_transition [Preset: minimal] OK
|
+ EF - Altair - Transition - normal_transition [Preset: minimal] OK
|
||||||
+ EF - Altair - Transition - simple_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_first_post_block [Preset: minimal] OK
|
||||||
|
@ -95,6 +100,11 @@ ConsensusSpecPreset-minimal
|
||||||
+ EF - Bellatrix - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
+ EF - Bellatrix - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
||||||
+ EF - Bellatrix - Rewards - with_slashed_validators [Preset: minimal] OK
|
+ EF - Bellatrix - Rewards - with_slashed_validators [Preset: minimal] OK
|
||||||
+ EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
+ EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
||||||
|
+ EF - Bellatrix - Slots - double_empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - Bellatrix - Slots - empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - Bellatrix - Slots - over_epoch_boundary [Preset: minimal] OK
|
||||||
|
+ EF - Bellatrix - Slots - slots_1 [Preset: minimal] OK
|
||||||
|
+ EF - Bellatrix - Slots - slots_2 [Preset: minimal] OK
|
||||||
+ EF - Bellatrix - Transition - normal_transition [Preset: minimal] OK
|
+ EF - Bellatrix - Transition - normal_transition [Preset: minimal] OK
|
||||||
+ EF - Bellatrix - Transition - simple_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_first_post_block [Preset: minimal] OK
|
||||||
|
@ -154,6 +164,11 @@ ConsensusSpecPreset-minimal
|
||||||
+ EF - Capella - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
+ EF - Capella - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
||||||
+ EF - Capella - Rewards - with_slashed_validators [Preset: minimal] OK
|
+ EF - Capella - Rewards - with_slashed_validators [Preset: minimal] OK
|
||||||
+ EF - Capella - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
+ EF - Capella - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
||||||
|
+ EF - Capella - Slots - double_empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - Capella - Slots - empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - Capella - Slots - over_epoch_boundary [Preset: minimal] OK
|
||||||
|
+ EF - Capella - Slots - slots_1 [Preset: minimal] OK
|
||||||
|
+ EF - Capella - Slots - slots_2 [Preset: minimal] OK
|
||||||
+ EF - Capella - Transition - normal_transition [Preset: minimal] OK
|
+ EF - Capella - Transition - normal_transition [Preset: minimal] OK
|
||||||
+ EF - Capella - Transition - simple_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_first_post_block [Preset: minimal] OK
|
||||||
|
@ -213,6 +228,11 @@ ConsensusSpecPreset-minimal
|
||||||
+ EF - EIP4844 - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
+ EF - EIP4844 - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
||||||
+ EF - EIP4844 - Rewards - with_slashed_validators [Preset: minimal] OK
|
+ EF - EIP4844 - Rewards - with_slashed_validators [Preset: minimal] OK
|
||||||
+ EF - EIP4844 - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
+ EF - EIP4844 - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
||||||
|
+ EF - EIP4844 - Slots - double_empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - EIP4844 - Slots - empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - EIP4844 - Slots - over_epoch_boundary [Preset: minimal] OK
|
||||||
|
+ EF - EIP4844 - Slots - slots_1 [Preset: minimal] OK
|
||||||
|
+ EF - EIP4844 - Slots - slots_2 [Preset: minimal] OK
|
||||||
+ EF - EIP4844 - Transition - normal_transition [Preset: minimal] OK
|
+ EF - EIP4844 - Transition - normal_transition [Preset: minimal] OK
|
||||||
+ EF - EIP4844 - Transition - simple_transition [Preset: minimal] OK
|
+ EF - EIP4844 - Transition - simple_transition [Preset: minimal] OK
|
||||||
+ EF - EIP4844 - Transition - transition_missing_first_post_block [Preset: minimal] OK
|
+ EF - EIP4844 - Transition - transition_missing_first_post_block [Preset: minimal] OK
|
||||||
|
@ -287,6 +307,11 @@ ConsensusSpecPreset-minimal
|
||||||
+ EF - Phase 0 - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
+ EF - Phase 0 - Rewards - with_not_yet_activated_validators_leak [Preset: minimal] OK
|
||||||
+ EF - Phase 0 - Rewards - with_slashed_validators [Preset: minimal] OK
|
+ EF - Phase 0 - Rewards - with_slashed_validators [Preset: minimal] OK
|
||||||
+ EF - Phase 0 - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
+ EF - Phase 0 - Rewards - with_slashed_validators_leak [Preset: minimal] OK
|
||||||
|
+ EF - Phase 0 - Slots - double_empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - Phase 0 - Slots - empty_epoch [Preset: minimal] OK
|
||||||
|
+ EF - Phase 0 - Slots - over_epoch_boundary [Preset: minimal] OK
|
||||||
|
+ EF - Phase 0 - Slots - slots_1 [Preset: minimal] OK
|
||||||
|
+ EF - Phase 0 - Slots - slots_2 [Preset: minimal] OK
|
||||||
+ ForkChoice - minimal/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_honest_ OK
|
+ ForkChoice - minimal/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_honest_ OK
|
||||||
+ ForkChoice - minimal/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_without_atte OK
|
+ ForkChoice - minimal/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_without_atte OK
|
||||||
+ ForkChoice - minimal/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_vanilla OK
|
+ ForkChoice - minimal/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_vanilla OK
|
||||||
|
@ -415,11 +440,6 @@ ConsensusSpecPreset-minimal
|
||||||
+ Light client - Update ranking - minimal/bellatrix/light_client/update_ranking/pyspec_tests 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/capella/light_client/update_ranking/pyspec_tests/u OK
|
||||||
+ Light client - Update ranking - minimal/eip4844/light_client/update_ranking/pyspec_tests/u OK
|
+ Light client - Update ranking - minimal/eip4844/light_client/update_ranking/pyspec_tests/u OK
|
||||||
+ Slots - double_empty_epoch OK
|
|
||||||
+ Slots - empty_epoch OK
|
|
||||||
+ Slots - over_epoch_boundary OK
|
|
||||||
+ Slots - slots_1 OK
|
|
||||||
+ Slots - slots_2 OK
|
|
||||||
+ Sync - minimal/bellatrix/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK
|
+ Sync - minimal/bellatrix/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK
|
||||||
+ Sync - minimal/capella/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK
|
+ Sync - minimal/capella/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK
|
||||||
+ [Invalid] EF - Altair - Sanity - Blocks - expected_deposit_in_block [Preset: minimal] OK
|
+ [Invalid] EF - Altair - Sanity - Blocks - expected_deposit_in_block [Preset: minimal] OK
|
||||||
|
@ -838,7 +858,7 @@ ConsensusSpecPreset-minimal
|
||||||
+ fork_random_low_balances OK
|
+ fork_random_low_balances OK
|
||||||
+ fork_random_misc_balances OK
|
+ fork_random_misc_balances OK
|
||||||
```
|
```
|
||||||
OK: 827/835 Fail: 0/835 Skip: 8/835
|
OK: 847/855 Fail: 0/855 Skip: 8/855
|
||||||
## Attestation
|
## Attestation
|
||||||
```diff
|
```diff
|
||||||
+ [Invalid] EF - Altair - Operations - Attestation - after_epoch_slots OK
|
+ [Invalid] EF - Altair - Operations - Attestation - after_epoch_slots OK
|
||||||
|
@ -2591,4 +2611,4 @@ OK: 68/68 Fail: 0/68 Skip: 0/68
|
||||||
OK: 52/52 Fail: 0/52 Skip: 0/52
|
OK: 52/52 Fail: 0/52 Skip: 0/52
|
||||||
|
|
||||||
---TOTAL---
|
---TOTAL---
|
||||||
OK: 2281/2289 Fail: 0/2289 Skip: 8/2289
|
OK: 2301/2309 Fail: 0/2309 Skip: 8/2309
|
||||||
|
|
|
@ -266,17 +266,28 @@ template toFork*[T: eip4844.BeaconState | eip4844.HashedBeaconState](
|
||||||
t: type T): BeaconStateFork =
|
t: type T): BeaconStateFork =
|
||||||
BeaconStateFork.EIP4844
|
BeaconStateFork.EIP4844
|
||||||
|
|
||||||
# TODO these cause stack overflows due to large temporaries getting allocated
|
# TODO when https://github.com/nim-lang/Nim/issues/21086 fixed, use return type
|
||||||
# template init*(T: type ForkedHashedBeaconState, data: phase0.HashedBeaconState): T =
|
# `ref T`
|
||||||
# T(kind: BeaconStateFork.Phase0, phase0Data: data)
|
func new*(T: type ForkedHashedBeaconState, data: phase0.BeaconState):
|
||||||
# template init*(T: type ForkedHashedBeaconState, data: altair.HashedBeaconState): T =
|
ref ForkedHashedBeaconState =
|
||||||
# T(kind: BeaconStateFork.Altair, altairData: data)
|
(ref T)(kind: BeaconStateFork.Phase0, phase0Data: phase0.HashedBeaconState(
|
||||||
# template init*(T: type ForkedHashedBeaconState, data: bellatrix.HashedBeaconState): T =
|
data: data, root: hash_tree_root(data)))
|
||||||
# T(kind: BeaconStateFork.Bellatrix, bellatrixData: data)
|
func new*(T: type ForkedHashedBeaconState, data: altair.BeaconState):
|
||||||
# template init*(T: type ForkedHashedBeaconState, data: capella.HashedBeaconState): T =
|
ref ForkedHashedBeaconState =
|
||||||
# T(kind: BeaconStateFork.Capella, capellaData: data)
|
(ref T)(kind: BeaconStateFork.Altair, altairData: altair.HashedBeaconState(
|
||||||
# template init*(T: type ForkedHashedBeaconState, data: eip4844.HashedBeaconState): T =
|
data: data, root: hash_tree_root(data)))
|
||||||
# T(kind: BeaconStateFork.EIP4844, eip4844Data: data)
|
func new*(T: type ForkedHashedBeaconState, data: bellatrix.BeaconState):
|
||||||
|
ref ForkedHashedBeaconState =
|
||||||
|
(ref T)(kind: BeaconStateFork.Bellatrix, bellatrixData: bellatrix.HashedBeaconState(
|
||||||
|
data: data, root: hash_tree_root(data)))
|
||||||
|
func new*(T: type ForkedHashedBeaconState, data: capella.BeaconState):
|
||||||
|
ref ForkedHashedBeaconState =
|
||||||
|
(ref T)(kind: BeaconStateFork.Capella, capellaData: capella.HashedBeaconState(
|
||||||
|
data: data, root: hash_tree_root(data)))
|
||||||
|
func new*(T: type ForkedHashedBeaconState, data: eip4844.BeaconState):
|
||||||
|
ref ForkedHashedBeaconState =
|
||||||
|
(ref T)(kind: BeaconStateFork.EIP4844, eip4844Data: eip4844.HashedBeaconState(
|
||||||
|
data: data, root: hash_tree_root(data)))
|
||||||
|
|
||||||
template init*(T: type ForkedBeaconBlock, blck: phase0.BeaconBlock): T =
|
template init*(T: type ForkedBeaconBlock, blck: phase0.BeaconBlock): T =
|
||||||
T(kind: BeaconBlockFork.Phase0, phase0Data: blck)
|
T(kind: BeaconBlockFork.Phase0, phase0Data: blck)
|
||||||
|
|
|
@ -205,8 +205,6 @@ func maybeUpgradeStateToCapella(
|
||||||
capellaData: capella.HashedBeaconState(
|
capellaData: capella.HashedBeaconState(
|
||||||
root: hash_tree_root(newState[]), data: newState[]))[]
|
root: hash_tree_root(newState[]), data: newState[]))[]
|
||||||
|
|
||||||
from ./datatypes/eip4844 import HashedBeaconState
|
|
||||||
|
|
||||||
func maybeUpgradeStateToEIP4844(
|
func maybeUpgradeStateToEIP4844(
|
||||||
cfg: RuntimeConfig, state: var ForkedHashedBeaconState) =
|
cfg: RuntimeConfig, state: var ForkedHashedBeaconState) =
|
||||||
# Both process_slots() and state_transition_block() call this, so only run it
|
# Both process_slots() and state_transition_block() call this, so only run it
|
||||||
|
|
|
@ -12,7 +12,6 @@ import
|
||||||
./test_fixture_light_client_sync_protocol,
|
./test_fixture_light_client_sync_protocol,
|
||||||
./test_fixture_operations,
|
./test_fixture_operations,
|
||||||
./test_fixture_sanity_blocks,
|
./test_fixture_sanity_blocks,
|
||||||
./test_fixture_sanity_slots,
|
|
||||||
./test_fixture_ssz_consensus_objects,
|
./test_fixture_ssz_consensus_objects,
|
||||||
./test_fixture_state_transition_epoch,
|
./test_fixture_state_transition_epoch,
|
||||||
./test_fixture_transition
|
./test_fixture_transition
|
||||||
|
|
|
@ -1,53 +0,0 @@
|
||||||
# beacon_chain
|
|
||||||
# Copyright (c) 2018-2022 Status Research & Development GmbH
|
|
||||||
# Licensed and distributed under either of
|
|
||||||
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
||||||
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
||||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
||||||
|
|
||||||
{.used.}
|
|
||||||
|
|
||||||
import
|
|
||||||
# Standard library
|
|
||||||
os, strutils,
|
|
||||||
# Beacon chain internals
|
|
||||||
../../../beacon_chain/spec/[forks, state_transition],
|
|
||||||
../../../beacon_chain/spec/datatypes/altair,
|
|
||||||
# Test utilities
|
|
||||||
../../testutil,
|
|
||||||
../fixtures_utils,
|
|
||||||
../../helpers/debug_state
|
|
||||||
|
|
||||||
const SanitySlotsDir = SszTestsDir/const_preset/"altair"/"sanity"/"slots"/"pyspec_tests"
|
|
||||||
|
|
||||||
proc runTest(identifier: string) =
|
|
||||||
let
|
|
||||||
testDir = SanitySlotsDir / identifier
|
|
||||||
num_slots = readLines(testDir / "slots.yaml", 2)[0].parseInt.uint64
|
|
||||||
|
|
||||||
proc `testImpl _ slots _ identifier`() =
|
|
||||||
test "Slots - " & identifier:
|
|
||||||
var
|
|
||||||
preState = newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, altair.BeaconState))
|
|
||||||
fhPreState = (ref ForkedHashedBeaconState)(
|
|
||||||
altairData: altair.HashedBeaconState(
|
|
||||||
data: preState[], root: hash_tree_root(preState[])),
|
|
||||||
kind: BeaconStateFork.Altair)
|
|
||||||
cache = StateCache()
|
|
||||||
info: ForkedEpochInfo
|
|
||||||
let postState = newClone(parseTest(testDir/"post.ssz_snappy", SSZ, altair.BeaconState))
|
|
||||||
|
|
||||||
check:
|
|
||||||
process_slots(
|
|
||||||
defaultRuntimeConfig, fhPreState[],
|
|
||||||
getStateField(fhPreState[], slot) + num_slots, cache, info, {}).isOk()
|
|
||||||
|
|
||||||
getStateRoot(fhPreState[]) == postState[].hash_tree_root()
|
|
||||||
let newPreState = newClone(fhPreState.altairData.data)
|
|
||||||
reportDiff(newPreState, postState)
|
|
||||||
|
|
||||||
`testImpl _ slots _ identifier`()
|
|
||||||
|
|
||||||
suite "EF - Altair - Sanity - Slots " & preset():
|
|
||||||
for kind, path in walkDir(SanitySlotsDir, relative = true, checkDir = true):
|
|
||||||
runTest(path)
|
|
|
@ -11,7 +11,6 @@ import
|
||||||
./test_fixture_fork,
|
./test_fixture_fork,
|
||||||
./test_fixture_operations,
|
./test_fixture_operations,
|
||||||
./test_fixture_sanity_blocks,
|
./test_fixture_sanity_blocks,
|
||||||
./test_fixture_sanity_slots,
|
|
||||||
./test_fixture_ssz_consensus_objects,
|
./test_fixture_ssz_consensus_objects,
|
||||||
./test_fixture_state_transition_epoch,
|
./test_fixture_state_transition_epoch,
|
||||||
./test_fixture_transition
|
./test_fixture_transition
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
# beacon_chain
|
|
||||||
# Copyright (c) 2018-2022 Status Research & Development GmbH
|
|
||||||
# Licensed and distributed under either of
|
|
||||||
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
||||||
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
||||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
||||||
|
|
||||||
{.used.}
|
|
||||||
|
|
||||||
import
|
|
||||||
# Standard library
|
|
||||||
os, strutils,
|
|
||||||
# Beacon chain internals
|
|
||||||
../../../beacon_chain/spec/[forks, state_transition],
|
|
||||||
../../../beacon_chain/spec/datatypes/bellatrix,
|
|
||||||
# Test utilities
|
|
||||||
../../testutil,
|
|
||||||
../fixtures_utils,
|
|
||||||
../../helpers/debug_state
|
|
||||||
|
|
||||||
const SanitySlotsDir = SszTestsDir/const_preset/"bellatrix"/"sanity"/"slots"/"pyspec_tests"
|
|
||||||
|
|
||||||
proc runTest(identifier: string) =
|
|
||||||
let
|
|
||||||
testDir = SanitySlotsDir / identifier
|
|
||||||
num_slots = readLines(testDir / "slots.yaml", 2)[0].parseInt.uint64
|
|
||||||
|
|
||||||
proc `testImpl _ slots _ identifier`() =
|
|
||||||
test "Slots - " & identifier:
|
|
||||||
var
|
|
||||||
preState = newClone(parseTest(
|
|
||||||
testDir/"pre.ssz_snappy", SSZ, bellatrix.BeaconState))
|
|
||||||
fhPreState = (ref ForkedHashedBeaconState)(
|
|
||||||
bellatrixData: bellatrix.HashedBeaconState(
|
|
||||||
data: preState[], root: hash_tree_root(preState[])),
|
|
||||||
kind: BeaconStateFork.Bellatrix)
|
|
||||||
cache = StateCache()
|
|
||||||
info = ForkedEpochInfo()
|
|
||||||
let postState = newClone(parseTest(
|
|
||||||
testDir/"post.ssz_snappy", SSZ, bellatrix.BeaconState))
|
|
||||||
|
|
||||||
check:
|
|
||||||
process_slots(
|
|
||||||
defaultRuntimeConfig, fhPreState[],
|
|
||||||
getStateField(fhPreState[], slot) + num_slots, cache, info, {}).isOk()
|
|
||||||
|
|
||||||
getStateRoot(fhPreState[]) == postState[].hash_tree_root()
|
|
||||||
let newPreState = newClone(fhPreState.bellatrixData.data)
|
|
||||||
reportDiff(newPreState, postState)
|
|
||||||
|
|
||||||
`testImpl _ slots _ identifier`()
|
|
||||||
|
|
||||||
suite "EF - Bellatrix - Sanity - Slots " & preset():
|
|
||||||
for kind, path in walkDir(SanitySlotsDir, relative = true, checkDir = true):
|
|
||||||
runTest(path)
|
|
|
@ -11,7 +11,6 @@ import
|
||||||
./test_fixture_fork,
|
./test_fixture_fork,
|
||||||
./test_fixture_operations,
|
./test_fixture_operations,
|
||||||
./test_fixture_sanity_blocks,
|
./test_fixture_sanity_blocks,
|
||||||
./test_fixture_sanity_slots,
|
|
||||||
./test_fixture_ssz_consensus_objects,
|
./test_fixture_ssz_consensus_objects,
|
||||||
./test_fixture_state_transition_epoch,
|
./test_fixture_state_transition_epoch,
|
||||||
./test_fixture_transition
|
./test_fixture_transition
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
# beacon_chain
|
|
||||||
# Copyright (c) 2022 Status Research & Development GmbH
|
|
||||||
# Licensed and distributed under either of
|
|
||||||
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
||||||
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
||||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
||||||
|
|
||||||
{.used.}
|
|
||||||
|
|
||||||
import
|
|
||||||
# Standard library
|
|
||||||
os, strutils,
|
|
||||||
# Beacon chain internals
|
|
||||||
../../../beacon_chain/spec/[forks, state_transition],
|
|
||||||
../../../beacon_chain/spec/datatypes/capella,
|
|
||||||
# Test utilities
|
|
||||||
../../testutil,
|
|
||||||
../fixtures_utils,
|
|
||||||
../../helpers/debug_state
|
|
||||||
|
|
||||||
const SanitySlotsDir = SszTestsDir/const_preset/"capella"/"sanity"/"slots"/"pyspec_tests"
|
|
||||||
|
|
||||||
proc runTest(identifier: string) =
|
|
||||||
let
|
|
||||||
testDir = SanitySlotsDir / identifier
|
|
||||||
num_slots = readLines(testDir / "slots.yaml", 2)[0].parseInt.uint64
|
|
||||||
|
|
||||||
proc `testImpl _ slots _ identifier`() =
|
|
||||||
test "Slots - " & identifier:
|
|
||||||
var
|
|
||||||
preState = newClone(parseTest(
|
|
||||||
testDir/"pre.ssz_snappy", SSZ, capella.BeaconState))
|
|
||||||
fhPreState = (ref ForkedHashedBeaconState)(
|
|
||||||
capellaData: capella.HashedBeaconState(
|
|
||||||
data: preState[], root: hash_tree_root(preState[])),
|
|
||||||
kind: BeaconStateFork.Capella)
|
|
||||||
cache = StateCache()
|
|
||||||
info = ForkedEpochInfo()
|
|
||||||
let postState = newClone(parseTest(
|
|
||||||
testDir/"post.ssz_snappy", SSZ, capella.BeaconState))
|
|
||||||
|
|
||||||
check:
|
|
||||||
process_slots(
|
|
||||||
defaultRuntimeConfig, fhPreState[],
|
|
||||||
getStateField(fhPreState[], slot) + num_slots, cache, info, {}).isOk()
|
|
||||||
|
|
||||||
getStateRoot(fhPreState[]) == postState[].hash_tree_root()
|
|
||||||
let newPreState = newClone(fhPreState.capellaData.data)
|
|
||||||
reportDiff(newPreState, postState)
|
|
||||||
|
|
||||||
`testImpl _ slots _ identifier`()
|
|
||||||
|
|
||||||
suite "EF - Capella - Sanity - Slots " & preset():
|
|
||||||
for kind, path in walkDir(SanitySlotsDir, relative = true, checkDir = true):
|
|
||||||
runTest(path)
|
|
|
@ -19,6 +19,7 @@ import
|
||||||
./test_fixture_fork_choice,
|
./test_fixture_fork_choice,
|
||||||
./test_fixture_light_client_single_merkle_proof,
|
./test_fixture_light_client_single_merkle_proof,
|
||||||
./test_fixture_light_client_sync,
|
./test_fixture_light_client_sync,
|
||||||
./test_fixture_light_client_update_ranking
|
./test_fixture_light_client_update_ranking,
|
||||||
|
./test_fixture_sanity_slots
|
||||||
|
|
||||||
summarizeLongTests("ConsensusSpecPreset")
|
summarizeLongTests("ConsensusSpecPreset")
|
||||||
|
|
|
@ -11,7 +11,6 @@ import
|
||||||
./test_fixture_fork,
|
./test_fixture_fork,
|
||||||
./test_fixture_operations,
|
./test_fixture_operations,
|
||||||
./test_fixture_sanity_blocks,
|
./test_fixture_sanity_blocks,
|
||||||
./test_fixture_sanity_slots,
|
|
||||||
./test_fixture_ssz_consensus_objects,
|
./test_fixture_ssz_consensus_objects,
|
||||||
./test_fixture_state_transition_epoch,
|
./test_fixture_state_transition_epoch,
|
||||||
./test_fixture_transition
|
./test_fixture_transition
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
# beacon_chain
|
|
||||||
# Copyright (c) 2022 Status Research & Development GmbH
|
|
||||||
# Licensed and distributed under either of
|
|
||||||
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
||||||
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
||||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
||||||
|
|
||||||
{.used.}
|
|
||||||
|
|
||||||
import
|
|
||||||
# Standard library
|
|
||||||
os, strutils,
|
|
||||||
# Beacon chain internals
|
|
||||||
../../../beacon_chain/spec/[forks, state_transition],
|
|
||||||
../../../beacon_chain/spec/datatypes/eip4844,
|
|
||||||
# Test utilities
|
|
||||||
../../testutil,
|
|
||||||
../fixtures_utils,
|
|
||||||
../../helpers/debug_state
|
|
||||||
|
|
||||||
const SanitySlotsDir = SszTestsDir/const_preset/"eip4844"/"sanity"/"slots"/"pyspec_tests"
|
|
||||||
|
|
||||||
proc runTest(identifier: string) =
|
|
||||||
let
|
|
||||||
testDir = SanitySlotsDir / identifier
|
|
||||||
num_slots = readLines(testDir / "slots.yaml", 2)[0].parseInt.uint64
|
|
||||||
|
|
||||||
proc `testImpl _ slots _ identifier`() =
|
|
||||||
test "Slots - " & identifier:
|
|
||||||
var
|
|
||||||
preState = newClone(parseTest(
|
|
||||||
testDir/"pre.ssz_snappy", SSZ, eip4844.BeaconState))
|
|
||||||
fhPreState = (ref ForkedHashedBeaconState)(
|
|
||||||
eip4844Data: eip4844.HashedBeaconState(
|
|
||||||
data: preState[], root: hash_tree_root(preState[])),
|
|
||||||
kind: BeaconStateFork.EIP4844)
|
|
||||||
cache = StateCache()
|
|
||||||
info = ForkedEpochInfo()
|
|
||||||
let postState = newClone(parseTest(
|
|
||||||
testDir/"post.ssz_snappy", SSZ, eip4844.BeaconState))
|
|
||||||
|
|
||||||
check:
|
|
||||||
process_slots(
|
|
||||||
defaultRuntimeConfig, fhPreState[],
|
|
||||||
getStateField(fhPreState[], slot) + num_slots, cache, info, {}).isOk()
|
|
||||||
|
|
||||||
getStateRoot(fhPreState[]) == postState[].hash_tree_root()
|
|
||||||
let newPreState = newClone(fhPreState.eip4844Data.data)
|
|
||||||
reportDiff(newPreState, postState)
|
|
||||||
|
|
||||||
`testImpl _ slots _ identifier`()
|
|
||||||
|
|
||||||
suite "EF - EIP4844 - Sanity - Slots " & preset():
|
|
||||||
for kind, path in walkDir(SanitySlotsDir, relative = true, checkDir = true):
|
|
||||||
runTest(path)
|
|
|
@ -10,6 +10,5 @@
|
||||||
import
|
import
|
||||||
./test_fixture_operations,
|
./test_fixture_operations,
|
||||||
./test_fixture_sanity_blocks,
|
./test_fixture_sanity_blocks,
|
||||||
./test_fixture_sanity_slots,
|
|
||||||
./test_fixture_ssz_consensus_objects,
|
./test_fixture_ssz_consensus_objects,
|
||||||
./test_fixture_state_transition_epoch
|
./test_fixture_state_transition_epoch
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
# beacon_chain
|
|
||||||
# Copyright (c) 2018-2022 Status Research & Development GmbH
|
|
||||||
# Licensed and distributed under either of
|
|
||||||
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
||||||
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
||||||
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
||||||
|
|
||||||
{.used.}
|
|
||||||
|
|
||||||
import
|
|
||||||
# Standard library
|
|
||||||
os, strutils,
|
|
||||||
# Beacon chain internals
|
|
||||||
../../../beacon_chain/spec/[forks, state_transition],
|
|
||||||
../../../beacon_chain/spec/datatypes/phase0,
|
|
||||||
# Test utilities
|
|
||||||
../../testutil,
|
|
||||||
../fixtures_utils,
|
|
||||||
../../helpers/debug_state
|
|
||||||
|
|
||||||
const SanitySlotsDir = SszTestsDir/const_preset/"phase0"/"sanity"/"slots"/"pyspec_tests"
|
|
||||||
|
|
||||||
proc runTest(identifier: string) =
|
|
||||||
let
|
|
||||||
testDir = SanitySlotsDir / identifier
|
|
||||||
num_slots = readLines(testDir / "slots.yaml", 2)[0].parseInt.uint64
|
|
||||||
|
|
||||||
proc `testImpl _ slots _ identifier`() =
|
|
||||||
test "Slots - " & identifier:
|
|
||||||
var
|
|
||||||
preState = newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, phase0.BeaconState))
|
|
||||||
fhPreState = (ref ForkedHashedBeaconState)(phase0Data: phase0.HashedBeaconState(
|
|
||||||
data: preState[], root: hash_tree_root(preState[])), kind: BeaconStateFork.Phase0)
|
|
||||||
cache = StateCache()
|
|
||||||
info: ForkedEpochInfo
|
|
||||||
let postState = newClone(parseTest(testDir/"post.ssz_snappy", SSZ, phase0.BeaconState))
|
|
||||||
|
|
||||||
check:
|
|
||||||
process_slots(
|
|
||||||
defaultRuntimeConfig,
|
|
||||||
fhPreState[], getStateField(fhPreState[], slot) + num_slots, cache,
|
|
||||||
info, {}).isOk()
|
|
||||||
|
|
||||||
getStateRoot(fhPreState[]) == postState[].hash_tree_root()
|
|
||||||
let newPreState = newClone(fhPreState.phase0Data.data)
|
|
||||||
reportDiff(newPreState, postState)
|
|
||||||
|
|
||||||
`testImpl _ slots _ identifier`()
|
|
||||||
|
|
||||||
suite "EF - Phase 0 - Sanity - Slots " & preset():
|
|
||||||
for kind, path in walkDir(SanitySlotsDir, relative = true, checkDir = true):
|
|
||||||
runTest(path)
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
# beacon_chain
|
||||||
|
# Copyright (c) 2018-2022 Status Research & Development GmbH
|
||||||
|
# Licensed and distributed under either of
|
||||||
|
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
||||||
|
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
||||||
|
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
||||||
|
|
||||||
|
{.used.}
|
||||||
|
|
||||||
|
import ../../beacon_chain/spec/forks
|
||||||
|
from std/os import walkDir, `/`
|
||||||
|
from std/strutils import parseInt
|
||||||
|
from ./fixtures_utils import SszTestsDir, parseTest
|
||||||
|
from ../testutil import check, preset, suite, test
|
||||||
|
from ../../beacon_chain/spec/state_transition import process_slots
|
||||||
|
from ../helpers/debug_state import reportDiff
|
||||||
|
|
||||||
|
proc runTest(T: type, testDir, forkName: static[string], identifier: string) =
|
||||||
|
let
|
||||||
|
testDir = testDir / identifier
|
||||||
|
num_slots = readLines(testDir / "slots.yaml", 2)[0].parseInt.uint64
|
||||||
|
|
||||||
|
proc `testImpl _ slots _ identifier`() =
|
||||||
|
test "EF - " & forkName & " - Slots - " & identifier & " [Preset: " & const_preset & "]":
|
||||||
|
let
|
||||||
|
preState = newClone(parseTest(testDir/"pre.ssz_snappy", SSZ, T))
|
||||||
|
postState = newClone(parseTest(testDir/"post.ssz_snappy", SSZ, T))
|
||||||
|
var
|
||||||
|
fhPreState = ForkedHashedBeaconState.new(preState[])
|
||||||
|
cache = StateCache()
|
||||||
|
info: ForkedEpochInfo
|
||||||
|
|
||||||
|
check:
|
||||||
|
process_slots(
|
||||||
|
defaultRuntimeConfig,
|
||||||
|
fhPreState[], getStateField(fhPreState[], slot) + num_slots, cache,
|
||||||
|
info, {}).isOk()
|
||||||
|
|
||||||
|
getStateRoot(fhPreState[]) == postState[].hash_tree_root()
|
||||||
|
|
||||||
|
withState(fhPreState[]):
|
||||||
|
when forkyState.data isnot typeof(postState[]):
|
||||||
|
doAssert false, "mismatched pre/post forks"
|
||||||
|
else:
|
||||||
|
reportDiff(forkyState.data, postState[])
|
||||||
|
|
||||||
|
`testImpl _ slots _ identifier`()
|
||||||
|
|
||||||
|
func sanitySlotsDir(preset_dir: string): string {.compileTime.} =
|
||||||
|
SszTestsDir/const_preset/preset_dir/"sanity"/"slots"/"pyspec_tests"
|
||||||
|
|
||||||
|
from ../../beacon_chain/spec/datatypes/phase0 import BeaconState
|
||||||
|
|
||||||
|
suite "EF - Phase 0 - Sanity - Slots " & preset():
|
||||||
|
const phase0SanitySlotsDir = sanitySlotsDir("phase0")
|
||||||
|
for kind, path in walkDir(
|
||||||
|
phase0SanitySlotsDir, relative = true, checkDir = true):
|
||||||
|
runTest(phase0.BeaconState, phase0SanitySlotsDir, "Phase 0", path)
|
||||||
|
|
||||||
|
from ../../beacon_chain/spec/datatypes/altair import BeaconState
|
||||||
|
|
||||||
|
suite "EF - Altair - Sanity - Slots " & preset():
|
||||||
|
const altairSanitySlotsDir = sanitySlotsDir("altair")
|
||||||
|
for kind, path in walkDir(
|
||||||
|
altairSanitySlotsDir, relative = true, checkDir = true):
|
||||||
|
runTest(altair.BeaconState, altairSanitySlotsDir, "Altair", path)
|
||||||
|
|
||||||
|
from ../../beacon_chain/spec/datatypes/bellatrix import BeaconState
|
||||||
|
|
||||||
|
suite "EF - Bellatrix - Sanity - Slots " & preset():
|
||||||
|
const bellatrixSanitySlotsDir = sanitySlotsDir("bellatrix")
|
||||||
|
for kind, path in walkDir(
|
||||||
|
bellatrixSanitySlotsDir, relative = true, checkDir = true):
|
||||||
|
runTest(bellatrix.BeaconState, bellatrixSanitySlotsDir, "Bellatrix", path)
|
||||||
|
|
||||||
|
from ../../../beacon_chain/spec/datatypes/capella import BeaconState
|
||||||
|
|
||||||
|
suite "EF - Capella - Sanity - Slots " & preset():
|
||||||
|
const capellaSanitySlotsDir = sanitySlotsDir("capella")
|
||||||
|
for kind, path in walkDir(
|
||||||
|
capellaSanitySlotsDir, relative = true, checkDir = true):
|
||||||
|
runTest(capella.BeaconState, capellaSanitySlotsDir, "Capella", path)
|
||||||
|
|
||||||
|
from ../../../beacon_chain/spec/datatypes/eip4844 import BeaconState
|
||||||
|
|
||||||
|
suite "EF - EIP4844 - Sanity - Slots " & preset():
|
||||||
|
const eip4844SanitySlotsDir = sanitySlotsDir("eip4844")
|
||||||
|
for kind, path in walkDir(
|
||||||
|
eip4844SanitySlotsDir, relative = true, checkDir = true):
|
||||||
|
runTest(eip4844.BeaconState, eip4844SanitySlotsDir, "EIP4844", path)
|
Loading…
Reference in New Issue