<p>The stake distribution for epoch <code>N</code> is not used as the basis for the epoch <code>N + 1</code> reward calculations because at the start of epoch <code>N + 1</code> there may be a rollback that may rollback as far as later blocks of epoch <code>N</code> which would require a recalculation of the stake distribution.</p>
<p>However rollbacks are limited to a maximum of 2160 blocks, so the stake distribution for epoch <code>N</code> cannot be rolled back after 2160 blocks have been produced in epoch <code>N + 1</code>. It is therefore safe to use the epoch <code>N</code> stake distribution for the reward calculation for epoch <code>N + 2</code>.</p>
<p>Similarly rewards earned in epoch <code>N + 2</code> are not distributed until epoch <code>N + 4</code>, again to avoid the possibility of a rollback.</p>
<p>Finally, rollbacks are part of the normal operation of a blockchain.</p>

CC BY-SA 4.0
2022-10-15T08:19:04.163Z
2022-10-16T21:34:38.843Z
2022-10-16T21:34:38.843Z
Erik de Castro Lopo
<p>In Cardano, AFAICU, at the beginning of an epoch a snapshot is taken of the <em>end state</em> of previous epoch to see who staked, how much and where. But it seems that <em>that state</em> is not used as for that current epoch but for the next one instead. Is there a particular reason for this?</p>
<p>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?</p>
<p>It seems somewhat counterintuitive that by the time one is &quot;staking&quot; 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.</p>

<staking><rewards>
Why does staking happen with a delay?
# Why does staking happen with a delay?

(Asked by: username_0 on 2022-10-14)

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.

**Tags:** staking, rewards

---

## 1 answers

### Answer by username_1 on 2022-10-15. Score: 1 | Accepted answer

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.


---

