In Cardano, AFAICU, at the beginning of an epoch a snapshot is taken of the end state of previous epoch to see who staked, how much and where. But it seems that that state is not used as for that current epoch but for the next one instead. Is there a particular reason for this?

E.g is it because to have time to calculate slot leaders and then let them know that they need to start producing blocks? Are there other reasons?

It seems somewhat counterintuitive that by the time one is "staking" the actual funds might be long gone, delegated to another pool or not staked at all. Though I understand that this doesn't break the system and that it's just a delay.

1 Answer 1


The stake distribution for epoch N is not used as the basis for the epoch N + 1 reward calculations because at the start of epoch N + 1 there may be a rollback that may rollback as far as later blocks of epoch N which would require a recalculation of the stake distribution.

However rollbacks are limited to a maximum of 2160 blocks, so the stake distribution for epoch N cannot be rolled back after 2160 blocks have been produced in epoch N + 1. It is therefore safe to use the epoch N stake distribution for the reward calculation for epoch N + 2.

Similarly rewards earned in epoch N + 2 are not distributed until epoch N + 4, again to avoid the possibility of a rollback.

Finally, rollbacks are part of the normal operation of a blockchain.

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.