Proof-of-stake & Byzantine consensus

epochs and slots

Proof-of-stake chains replace mining's open-ended race with a strict schedule, and Ethereum's clock is built from slots and epochs. A slot is a fixed twelve-second window in which exactly one validator is pseudo-randomly chosen to propose a block; thirty-two consecutive slots form an epoch, so one epoch lasts 6.4 minutes. Time is global and discrete: every node agrees on which slot number it is, and proposing or voting in the wrong slot simply does not count.

Within each slot, the protocol does two things. The designated proposer publishes a block, and a committee of validators assigned to that slot broadcasts attestations voting on the head of the chain. The full active validator set is partitioned across the 32 slots of an epoch so that, over the course of one epoch, every validator attests exactly once — spreading the enormous voting load evenly instead of asking a million validators to vote every twelve seconds. Proposer and committee assignments are derived from a shared, hard-to-predict randomness beacon (RANDAO), so an attacker cannot easily know in advance whom to target.

Epochs are the natural cadence for Casper FFG: checkpoints sit at epoch boundaries, justification and finalization are tallied per epoch, and rewards, penalties, and validator set changes (activations and exits) are processed at epoch transitions. This two-level structure is what lets Ethereum coordinate hundreds of thousands of validators deterministically — slots give fine-grained block production, epochs give the coarser rhythm for finality and accounting.

1 slot = 12 s · 1 epoch = 32 slots = 6.4 min · finality ≈ 2 epochs ≈ 12.8 min

A slot can be empty: if its assigned proposer is offline or censored, no block is produced for those twelve seconds and the chain skips to the next slot. Attestations still flow, so the chain keeps voting even through a missed proposal.