2

What I'm trying to find out is: After how many Slots will an Epoch be finalized (theoretically)?

The first block in each epoch is a checkpoint and validators then vote on pairs of checkpoints that are considered valid [link]

Once a checkpoint gains a supermajority vote (2/3 of staked ETH), it becomes justified. When its child checkpoint gets justified, it is upgraded to finalized link

Let's have the following:

  • 3 Epochs:

    • Epoch-A in stage justified, Checkpoint is A
    • Epoch-B in stage proposed, Checkpoint is B and B is a child checkpoint of A
    • Epoch-C in stage proposed, Checkpoint is C and C is a child checkpoint of B
  • The Chain is processing Epoch-C

  • When 2/3 of the validators vote on the pair checkpoint (B, C) then checkpoint B will be set as justified. Because checkpoint B is a child checkpoint of A then Checkpoint A will be finalized means Epoch-A is finalized.

Question: Is the following conclusion correct?

In a perfect world (no latency, no voting conflicts, no empty slots, and everyone votes) Epoch-A will be finalized after the 22nd Slot of Epoch-C. This means the last Block in Epoch-A will be finalized after about 54 Blocks and the first Block in Epoch-A after 85 Blocks. Is this correct or am I missing something :D?

2 Answers 2

1

To answer your question, I restate what is exactly justification and finalization:

All validators make one FFG vote per epoch. This vote contains a checkpoint source and a checkpoint target. If validators constituting more than 2/3 of the total stake make the same FFG vote (same source and target), the target gets justified, and we say there is a supermajority link between the source and the target. If a justified checkpoint is the source of a supermajority link having as target the checkpoint of the next epoch, the checkpoint source gets finalized¹.

So: After how many Slots will an Epoch be finalized (theoretically)?

It is important to remind here that a finalized epoch is an epoch where its checkpoint is finalized. You also rightfully precise the conditions:

no latency, no voting conflicts, no empty slots, and everyone votes

The answer is 54 slots.

We can see this with an example: Starting at epoch A, the checkpoint will be justified after 22 slots since 2/3 of the validators will have voted and made the same FFG vote. Then the epoch finishes, and epoch B starts. The checkpoint of epoch B gets justified after 22 slots since 2/3 of the validators will have voted and made the same FFG vote. This finalized the checkpoint of epoch A. The finalization has occurred in 54 slots.

This is true theoretically (as stated in the question). In practice however, validators wait for the end of an epoch to finalize new checkpoints. The response can thus be 64 slots.


  1. I voluntarily omit one case of finalization for simplicity.
2
  • Thanks. this means if an epoch ended without finality because of "1 vote". the clients wait for an extra epoch to mark it as finalized, right?.
    – Majd TL
    Nov 10, 2022 at 9:17
  • Not really. So let's say that during epoch A, its checkpoint gets justified. Then, during the following epoch, epoch B, if the checkpoint of epoch B gets justified this will finalize the checkpoint of epoch A. However, if your question is: what happens if the checkpoint of epoch B is not justified during epoch B? Then the checkpoint of epoch A is not justified. If during epoch C, checkpoint B gets justified this will finalize checkpoint A.
    – upavloff
    Nov 11, 2022 at 13:52
0

As far as I understood, an epoch, along with all the blocks of which it is composed, is only considered finalized after the progression of two more epochs after it. In other words, it takes two justified epochs (a “justified” epoch meaning the majority of validators agreed on it) for those epochs, and all the blocks inside of them, to be considered finalized.

In a perfect world (no latency, no voting conflicts, no empty slots, and everyone votes), this means Epoch-A will be finalized after all the slots of Epoch-C have been justified. That is to say, Epoch-A will be finalized after 64-95 slots have been justified.

See:

https://www.coindesk.com/tech/2021/01/08/ethereum-20-explained-in-4-easy-metrics/

https://notes.ethereum.org/@vbuterin/single_slot_finality

3
  • But as I see here imgur.com/a/sKfdpgb Epoch 151831 (A) is finalized even when 151833 (C) is not even done (still missing 3 slots).
    – Majd TL
    Oct 7, 2022 at 7:40
  • Is this in a perfect world as you said? Oct 7, 2022 at 13:36
  • you said, "after the progression of two more epochs after it". but "Epoch 141831" has been finalized before the end of "Epoch 141833". IDK maybe beaconcha.in has some delay in showing slots
    – Majd TL
    Oct 7, 2022 at 14:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.