add a few more preset/config invariants

This commit is contained in:
Danny Ryan 2021-06-07 07:55:04 -06:00
parent b5f9b5d74f
commit 7710d4fa5c
No known key found for this signature in database
GPG Key ID: 2765A792E42CE07A
1 changed files with 20 additions and 1 deletions

View File

@ -18,13 +18,28 @@ def test_validators(spec, state):
check_bound(spec.MAX_COMMITTEES_PER_SLOT, 1, MAX_UINT_64) check_bound(spec.MAX_COMMITTEES_PER_SLOT, 1, MAX_UINT_64)
check_bound(spec.TARGET_COMMITTEE_SIZE, 1, MAX_UINT_64) check_bound(spec.TARGET_COMMITTEE_SIZE, 1, MAX_UINT_64)
check_bound(spec.MAX_VALIDATORS_PER_COMMITTEE, 1, spec.VALIDATOR_REGISTRY_LIMIT) # Note: can be less if you assume stricters bounds on validator set based on total ETH supply
maximum_validators_per_committee = (
spec.VALIDATOR_REGISTRY_LIMIT
// spec.SLOTS_PER_EPOCH
// spec.MAX_COMMITTEES_PER_SLOT
)
check_bound(spec.MAX_VALIDATORS_PER_COMMITTEE, 1, maximum_validators_per_committee)
check_bound(spec.config.MIN_PER_EPOCH_CHURN_LIMIT, 1, spec.VALIDATOR_REGISTRY_LIMIT) check_bound(spec.config.MIN_PER_EPOCH_CHURN_LIMIT, 1, spec.VALIDATOR_REGISTRY_LIMIT)
check_bound(spec.config.CHURN_LIMIT_QUOTIENT, 1, spec.VALIDATOR_REGISTRY_LIMIT) check_bound(spec.config.CHURN_LIMIT_QUOTIENT, 1, spec.VALIDATOR_REGISTRY_LIMIT)
check_bound(spec.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT, spec.TARGET_COMMITTEE_SIZE, MAX_UINT_64) check_bound(spec.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT, spec.TARGET_COMMITTEE_SIZE, MAX_UINT_64)
@with_all_phases
@spec_state_test
def test_balances(spec, state):
assert spec.MAX_EFFECTIVE_BALANCE % spec.EFFECTIVE_BALANCE_INCREMENT == 0
check_bound(spec.MIN_DEPOSIT_AMOUNT, 1, MAX_UINT_64)
check_bound(spec.MAX_EFFECTIVE_BALANCE, spec.MIN_DEPOSIT_AMOUNT, MAX_UINT_64)
check_bound(spec.MAX_EFFECTIVE_BALANCE, spec.EFFECTIVE_BALANCE_INCREMENT, MAX_UINT_64)
@with_all_phases @with_all_phases
@spec_state_test @spec_state_test
def test_hysteresis_quotient(spec, state): def test_hysteresis_quotient(spec, state):
@ -47,6 +62,10 @@ def test_incentives(spec, state):
@spec_state_test @spec_state_test
def test_time(spec, state): def test_time(spec, state):
assert spec.SLOTS_PER_EPOCH <= spec.SLOTS_PER_HISTORICAL_ROOT assert spec.SLOTS_PER_EPOCH <= spec.SLOTS_PER_HISTORICAL_ROOT
assert spec.MIN_SEED_LOOKAHEAD < spec.MAX_SEED_LOOKAHEAD
assert spec.SLOTS_PER_HISTORICAL_ROOT % spec.SLOTS_PER_EPOCH == 0
check_bound(spec.SLOTS_PER_HISTORICAL_ROOT, spec.SLOTS_PER_EPOCH, MAX_UINT_64)
check_bound(spec.MIN_ATTESTATION_INCLUSION_DELAY, 1, spec.SLOTS_PER_EPOCH)
@with_all_phases @with_all_phases