mirror of
https://github.com/status-im/eth2.0-specs.git
synced 2025-01-12 19:54:34 +00:00
fix underflows in generate_seed, get_randao_mix, and get_active_index_roots
This commit is contained in:
parent
715dc32334
commit
b169c42339
@ -48,10 +48,10 @@ def compute_committee(indices: List[ValidatorIndex], seed: Bytes32, index: int,
|
|||||||
param_hash = (hash_tree_root(indices), seed, index, count)
|
param_hash = (hash_tree_root(indices), seed, index, count)
|
||||||
|
|
||||||
if param_hash in committee_cache:
|
if param_hash in committee_cache:
|
||||||
print("Cache hit, param_hash: ", param_hash)
|
# print("Cache hit, param_hash: ", param_hash)
|
||||||
return committee_cache[param_hash]
|
return committee_cache[param_hash]
|
||||||
else:
|
else:
|
||||||
print("Cache miss, param_hash: ", param_hash)
|
# print("Cache miss, param_hash: ", param_hash)
|
||||||
ret = _compute_committee(indices, seed, index, count)
|
ret = _compute_committee(indices, seed, index, count)
|
||||||
committee_cache[param_hash] = ret
|
committee_cache[param_hash] = ret
|
||||||
return ret
|
return ret
|
||||||
|
@ -800,7 +800,8 @@ def get_randao_mix(state: BeaconState,
|
|||||||
"""
|
"""
|
||||||
Return the randao mix at a recent ``epoch``.
|
Return the randao mix at a recent ``epoch``.
|
||||||
"""
|
"""
|
||||||
assert get_current_epoch(state) - LATEST_RANDAO_MIXES_LENGTH < epoch <= get_current_epoch(state)
|
min_epoch = epoch - LATEST_RANDAO_MIXES_LENGTH + 1 if epoch > LATEST_RANDAO_MIXES_LENGTH else GENESIS_EPOCH
|
||||||
|
assert min_epoch <= epoch <= get_current_epoch(state)
|
||||||
return state.latest_randao_mixes[epoch % LATEST_RANDAO_MIXES_LENGTH]
|
return state.latest_randao_mixes[epoch % LATEST_RANDAO_MIXES_LENGTH]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -812,7 +813,8 @@ def get_active_index_root(state: BeaconState,
|
|||||||
"""
|
"""
|
||||||
Return the index root at a recent ``epoch``.
|
Return the index root at a recent ``epoch``.
|
||||||
"""
|
"""
|
||||||
assert get_current_epoch(state) - LATEST_ACTIVE_INDEX_ROOTS_LENGTH + ACTIVATION_EXIT_DELAY < epoch <= get_current_epoch(state) + ACTIVATION_EXIT_DELAY
|
min_epoch = get_current_epoch(state) + ACTIVATION_EXIT_DELAY - LATEST_ACTIVE_INDEX_ROOTS_LENGTH + 1 if epoch > LATEST_ACTIVE_INDEX_ROOTS_LENGTH - ACTIVATION_EXIT_DELAY else GENESIS_EPOCH
|
||||||
|
assert min_epoch <= epoch <= get_current_epoch(state) + ACTIVATION_EXIT_DELAY
|
||||||
return state.latest_active_index_roots[epoch % LATEST_ACTIVE_INDEX_ROOTS_LENGTH]
|
return state.latest_active_index_roots[epoch % LATEST_ACTIVE_INDEX_ROOTS_LENGTH]
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -825,7 +827,7 @@ def generate_seed(state: BeaconState,
|
|||||||
Generate a seed for the given ``epoch``.
|
Generate a seed for the given ``epoch``.
|
||||||
"""
|
"""
|
||||||
return hash(
|
return hash(
|
||||||
get_randao_mix(state, epoch - MIN_SEED_LOOKAHEAD) +
|
get_randao_mix(state, epoch - MIN_SEED_LOOKAHEAD) if epoch >= MIN_SEED_LOOKAHEAD else ZERO_HASH +
|
||||||
get_active_index_root(state, epoch) +
|
get_active_index_root(state, epoch) +
|
||||||
int_to_bytes32(epoch)
|
int_to_bytes32(epoch)
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user