commit
7e9b00fbb3
|
@ -647,7 +647,7 @@ def get_previous_epoch(state: BeaconState) -> Epoch:
|
||||||
Return the current epoch if it's genesis epoch.
|
Return the current epoch if it's genesis epoch.
|
||||||
"""
|
"""
|
||||||
current_epoch = get_current_epoch(state)
|
current_epoch = get_current_epoch(state)
|
||||||
return (current_epoch - 1) if current_epoch > GENESIS_EPOCH else current_epoch
|
return GENESIS_EPOCH if current_epoch == GENESIS_EPOCH else current_epoch - 1
|
||||||
```
|
```
|
||||||
|
|
||||||
### `get_current_epoch`
|
### `get_current_epoch`
|
||||||
|
@ -887,7 +887,7 @@ def get_shuffled_index(index: ValidatorIndex, index_count: int, seed: Bytes32) -
|
||||||
# See the 'generalized domain' algorithm on page 3
|
# See the 'generalized domain' algorithm on page 3
|
||||||
for round in range(SHUFFLE_ROUND_COUNT):
|
for round in range(SHUFFLE_ROUND_COUNT):
|
||||||
pivot = bytes_to_int(hash(seed + int_to_bytes(round, length=1))[0:8]) % index_count
|
pivot = bytes_to_int(hash(seed + int_to_bytes(round, length=1))[0:8]) % index_count
|
||||||
flip = (pivot - index) % index_count
|
flip = (pivot + index_count - index) % index_count
|
||||||
position = max(index, flip)
|
position = max(index, flip)
|
||||||
source = hash(seed + int_to_bytes(round, length=1) + int_to_bytes(position // 256, length=4))
|
source = hash(seed + int_to_bytes(round, length=1) + int_to_bytes(position // 256, length=4))
|
||||||
byte = source[(position % 256) // 8]
|
byte = source[(position % 256) // 8]
|
||||||
|
@ -1362,19 +1362,19 @@ def process_justification_and_finalization(state: BeaconState) -> None:
|
||||||
# Process finalizations
|
# Process finalizations
|
||||||
bitfield = state.justification_bitfield
|
bitfield = state.justification_bitfield
|
||||||
# The 2nd/3rd/4th most recent epochs are justified, the 2nd using the 4th as source
|
# The 2nd/3rd/4th most recent epochs are justified, the 2nd using the 4th as source
|
||||||
if (bitfield >> 1) % 8 == 0b111 and old_previous_justified_epoch == current_epoch - 3:
|
if (bitfield >> 1) % 8 == 0b111 and old_previous_justified_epoch + 3 == current_epoch:
|
||||||
state.finalized_epoch = old_previous_justified_epoch
|
state.finalized_epoch = old_previous_justified_epoch
|
||||||
state.finalized_root = get_block_root(state, state.finalized_epoch)
|
state.finalized_root = get_block_root(state, state.finalized_epoch)
|
||||||
# The 2nd/3rd most recent epochs are justified, the 2nd using the 3rd as source
|
# The 2nd/3rd most recent epochs are justified, the 2nd using the 3rd as source
|
||||||
if (bitfield >> 1) % 4 == 0b11 and old_previous_justified_epoch == current_epoch - 2:
|
if (bitfield >> 1) % 4 == 0b11 and old_previous_justified_epoch + 2 == current_epoch:
|
||||||
state.finalized_epoch = old_previous_justified_epoch
|
state.finalized_epoch = old_previous_justified_epoch
|
||||||
state.finalized_root = get_block_root(state, state.finalized_epoch)
|
state.finalized_root = get_block_root(state, state.finalized_epoch)
|
||||||
# The 1st/2nd/3rd most recent epochs are justified, the 1st using the 3rd as source
|
# The 1st/2nd/3rd most recent epochs are justified, the 1st using the 3rd as source
|
||||||
if (bitfield >> 0) % 8 == 0b111 and old_current_justified_epoch == current_epoch - 2:
|
if (bitfield >> 0) % 8 == 0b111 and old_current_justified_epoch + 2 == current_epoch:
|
||||||
state.finalized_epoch = old_current_justified_epoch
|
state.finalized_epoch = old_current_justified_epoch
|
||||||
state.finalized_root = get_block_root(state, state.finalized_epoch)
|
state.finalized_root = get_block_root(state, state.finalized_epoch)
|
||||||
# The 1st/2nd most recent epochs are justified, the 1st using the 2nd as source
|
# The 1st/2nd most recent epochs are justified, the 1st using the 2nd as source
|
||||||
if (bitfield >> 0) % 4 == 0b11 and old_current_justified_epoch == current_epoch - 1:
|
if (bitfield >> 0) % 4 == 0b11 and old_current_justified_epoch + 1 == current_epoch:
|
||||||
state.finalized_epoch = old_current_justified_epoch
|
state.finalized_epoch = old_current_justified_epoch
|
||||||
state.finalized_root = get_block_root(state, state.finalized_epoch)
|
state.finalized_root = get_block_root(state, state.finalized_epoch)
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue