diff --git a/configs/mainnet.yaml b/configs/mainnet.yaml index 1a2e1ea83..45d5b6894 100644 --- a/configs/mainnet.yaml +++ b/configs/mainnet.yaml @@ -55,7 +55,7 @@ BLS_WITHDRAWAL_PREFIX: 0x00 SECONDS_PER_SLOT: 12 # 2**0 (= 1) slots 6 seconds MIN_ATTESTATION_INCLUSION_DELAY: 1 -# 2**6 (= 32) slots 6.4 minutes +# 2**5 (= 32) slots 6.4 minutes SLOTS_PER_EPOCH: 32 # 2**0 (= 1) epochs 6.4 minutes MIN_SEED_LOOKAHEAD: 1 diff --git a/specs/core/0_beacon-chain.md b/specs/core/0_beacon-chain.md index 9be1f07d8..8d8fd2c15 100644 --- a/specs/core/0_beacon-chain.md +++ b/specs/core/0_beacon-chain.md @@ -69,7 +69,7 @@ - [`compute_proposer_index`](#compute_proposer_index) - [`compute_committee`](#compute_committee) - [`compute_epoch_at_slot`](#compute_epoch_at_slot) - - [`compute_start_slot_of_epoch`](#compute_start_slot_of_epoch) + - [`compute_start_slot_at_epoch`](#compute_start_slot_at_epoch) - [`compute_activation_exit_epoch`](#compute_activation_exit_epoch) - [`compute_domain`](#compute_domain) - [Beacon state accessors](#beacon-state-accessors) @@ -739,10 +739,10 @@ def compute_epoch_at_slot(slot: Slot) -> Epoch: return Epoch(slot // SLOTS_PER_EPOCH) ``` -#### `compute_start_slot_of_epoch` +#### `compute_start_slot_at_epoch` ```python -def compute_start_slot_of_epoch(epoch: Epoch) -> Slot: +def compute_start_slot_at_epoch(epoch: Epoch) -> Slot: """ Return the start slot of ``epoch``. """ @@ -799,7 +799,7 @@ def get_block_root(state: BeaconState, epoch: Epoch) -> Hash: """ Return the block root at the start of a recent ``epoch``. """ - return get_block_root_at_slot(state, compute_start_slot_of_epoch(epoch)) + return get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch)) ``` #### `get_block_root_at_slot` diff --git a/specs/core/0_fork-choice.md b/specs/core/0_fork-choice.md index 552a3cb02..88edceaa0 100644 --- a/specs/core/0_fork-choice.md +++ b/specs/core/0_fork-choice.md @@ -118,7 +118,7 @@ def get_latest_attesting_balance(store: Store, root: Hash) -> Gwei: def get_head(store: Store) -> Hash: # Execute the LMD-GHOST fork choice head = store.justified_checkpoint.root - justified_slot = compute_start_slot_of_epoch(store.justified_checkpoint.epoch) + justified_slot = compute_start_slot_at_epoch(store.justified_checkpoint.epoch) while True: children = [ root for root in store.blocks.keys() @@ -156,7 +156,7 @@ def on_block(store: Store, block: BeaconBlock) -> None: store.finalized_checkpoint.root ) # Check that block is later than the finalized epoch slot - assert block.slot > compute_start_slot_of_epoch(store.finalized_checkpoint.epoch) + assert block.slot > compute_start_slot_at_epoch(store.finalized_checkpoint.epoch) # Check the block is valid and compute the post-state state = state_transition(pre_state, block) # Add new state for this block to the store @@ -182,11 +182,11 @@ def on_attestation(store: Store, attestation: Attestation) -> None: # Attestations cannot be from future epochs. If they are, delay consideration until the epoch arrives base_state = store.block_states[target.root].copy() - assert store.time >= base_state.genesis_time + compute_start_slot_of_epoch(target.epoch) * SECONDS_PER_SLOT + assert store.time >= base_state.genesis_time + compute_start_slot_at_epoch(target.epoch) * SECONDS_PER_SLOT # Store target checkpoint state if not yet seen if target not in store.checkpoint_states: - process_slots(base_state, compute_start_slot_of_epoch(target.epoch)) + process_slots(base_state, compute_start_slot_at_epoch(target.epoch)) store.checkpoint_states[target] = base_state target_state = store.checkpoint_states[target] diff --git a/specs/core/1_beacon-chain-misc.md b/specs/core/1_beacon-chain-misc.md index 6dd6e19c3..6a8d06d4a 100644 --- a/specs/core/1_beacon-chain-misc.md +++ b/specs/core/1_beacon-chain-misc.md @@ -203,7 +203,7 @@ class BeaconState(Container): ``` `period_committee_roots` values are initialized to `Bytes32()` (empty bytes value). -`next_shard_receipt_period` values are initialized to `compute_epoch_of_slot(PHASE_1_FORK_SLOT) // EPOCHS_PER_SHARD_PERIOD`. +`next_shard_receipt_period` values are initialized to `compute_epoch_at_slot(PHASE_1_FORK_SLOT) // EPOCHS_PER_SHARD_PERIOD`. #### `BeaconBlockBody` diff --git a/specs/light_client/sync_protocol.md b/specs/light_client/sync_protocol.md index c3b035270..ef9e2b7bc 100644 --- a/specs/light_client/sync_protocol.md +++ b/specs/light_client/sync_protocol.md @@ -84,7 +84,7 @@ def get_persistent_committee_pubkeys_and_balances(memory: LightClientMemory, """ Return pubkeys and balances for the persistent committee at ``epoch``. """ - current_period = compute_epoch_of_slot(memory.header.slot) // EPOCHS_PER_SHARD_PERIOD + current_period = compute_epoch_at_slot(memory.header.slot) // EPOCHS_PER_SHARD_PERIOD next_period = epoch // EPOCHS_PER_SHARD_PERIOD assert next_period in (current_period, current_period + 1) if next_period == current_period: @@ -114,7 +114,7 @@ The state of a light client is stored in a `memory` object of type `LightClientM ```python def update_memory(memory: LightClientMemory, update: LightClientUpdate) -> None: # Verify the update does not skip a period - current_period = compute_epoch_of_slot(memory.header.slot) // EPOCHS_PER_SHARD_PERIOD + current_period = compute_epoch_at_slot(memory.header.slot) // EPOCHS_PER_SHARD_PERIOD next_epoch = compute_epoch_of_shard_slot(update.header.slot) next_period = next_epoch // EPOCHS_PER_SHARD_PERIOD assert next_period in (current_period, current_period + 1) diff --git a/specs/validator/0_beacon-chain-validator.md b/specs/validator/0_beacon-chain-validator.md index 8e36e649f..27f0037fa 100644 --- a/specs/validator/0_beacon-chain-validator.md +++ b/specs/validator/0_beacon-chain-validator.md @@ -156,7 +156,7 @@ def get_committee_assignment(state: BeaconState, next_epoch = get_current_epoch(state) + 1 assert epoch <= next_epoch - start_slot = compute_start_slot_of_epoch(epoch) + start_slot = compute_start_slot_at_epoch(epoch) for slot in range(start_slot, start_slot + SLOTS_PER_EPOCH): for index in range(get_committee_count_at_slot(state, Slot(slot))): committee = get_beacon_committee(state, Slot(slot), CommitteeIndex(index)) @@ -310,7 +310,7 @@ Set `attestation_data.beacon_block_root = signing_root(head_block)`. *Note*: `epoch_boundary_block_root` can be looked up in the state using: -- Let `start_slot = compute_start_slot_of_epoch(get_current_epoch(head_state))`. +- Let `start_slot = compute_start_slot_at_epoch(get_current_epoch(head_state))`. - Let `epoch_boundary_block_root = signing_root(head_block) if start_slot == head_state.slot else get_block_root(state, start_slot)`. #### Construct attestation diff --git a/test_libs/pyspec/eth2spec/test/helpers/attestations.py b/test_libs/pyspec/eth2spec/test/helpers/attestations.py index 5e5073441..f3454fe4c 100644 --- a/test_libs/pyspec/eth2spec/test/helpers/attestations.py +++ b/test_libs/pyspec/eth2spec/test/helpers/attestations.py @@ -14,7 +14,7 @@ def build_attestation_data(spec, state, slot, index): else: block_root = spec.get_block_root_at_slot(state, slot) - current_epoch_start_slot = spec.compute_start_slot_of_epoch(spec.get_current_epoch(state)) + current_epoch_start_slot = spec.compute_start_slot_at_epoch(spec.get_current_epoch(state)) if slot < current_epoch_start_slot: epoch_boundary_root = spec.get_block_root(state, spec.get_previous_epoch(state)) elif slot == current_epoch_start_slot: diff --git a/test_libs/pyspec/eth2spec/test/helpers/state.py b/test_libs/pyspec/eth2spec/test/helpers/state.py index c5a9bd4ce..27e946cbb 100644 --- a/test_libs/pyspec/eth2spec/test/helpers/state.py +++ b/test_libs/pyspec/eth2spec/test/helpers/state.py @@ -53,7 +53,7 @@ def next_epoch_with_attestations(spec, if fill_cur_epoch and post_state.slot >= spec.MIN_ATTESTATION_INCLUSION_DELAY: slot_to_attest = post_state.slot - spec.MIN_ATTESTATION_INCLUSION_DELAY + 1 committees_per_slot = spec.get_committee_count_at_slot(state, slot_to_attest) - if slot_to_attest >= spec.compute_start_slot_of_epoch(spec.get_current_epoch(post_state)): + if slot_to_attest >= spec.compute_start_slot_at_epoch(spec.get_current_epoch(post_state)): for index in range(committees_per_slot): cur_attestation = get_valid_attestation(spec, post_state, slot_to_attest, index=index) block.body.attestations.append(cur_attestation) diff --git a/test_libs/pyspec/eth2spec/test/phase_0/epoch_processing/test_process_justification_and_finalization.py b/test_libs/pyspec/eth2spec/test/phase_0/epoch_processing/test_process_justification_and_finalization.py index 81f761a72..002d3b169 100644 --- a/test_libs/pyspec/eth2spec/test/phase_0/epoch_processing/test_process_justification_and_finalization.py +++ b/test_libs/pyspec/eth2spec/test/phase_0/epoch_processing/test_process_justification_and_finalization.py @@ -25,7 +25,7 @@ def add_mock_attestations(spec, state, epoch, source, target, sufficient_support total_balance = spec.get_total_active_balance(state) remaining_balance = total_balance * 2 // 3 - start_slot = spec.compute_start_slot_of_epoch(epoch) + start_slot = spec.compute_start_slot_at_epoch(epoch) for slot in range(start_slot, start_slot + spec.SLOTS_PER_EPOCH): committees_per_slot = spec.get_committee_count_at_slot(state, slot) for index in range(committees_per_slot): @@ -74,7 +74,7 @@ def get_checkpoints(spec, epoch): def put_checkpoints_in_block_roots(spec, state, checkpoints): for c in checkpoints: - state.block_roots[spec.compute_start_slot_of_epoch(c.epoch) % spec.SLOTS_PER_HISTORICAL_ROOT] = c.root + state.block_roots[spec.compute_start_slot_at_epoch(c.epoch) % spec.SLOTS_PER_HISTORICAL_ROOT] = c.root def finalize_on_234(spec, state, epoch, sufficient_support):