top of page

Need help with staking? Or just want to chat Cardano? join our discord server

How is a stake pool selected to mint a block? Slot Lottery Explained.

Updated: Jan 14, 2023

Cardano Explained Without Jargon & Within 199 words

OK, this is probably the most technical and mysterious topic I will explain without jargon. So, don't sue me if I need more than 199 words :-)

Firstly, for a stake pool to be allowed to mint a block, it needs to win a competition. We will use the metaphor of a limbo dancing competition. To win, the limbo dancer (the stake pool) has to get under the limbo bar!

ALL block winners are predetermined before each epoch starts

1,5 days before the epoch (5 day cycle) ends, all stake pools can be pretty sure how many blocks (if any) they are allowed to mint in the next epoch.

By combining four variables,

  1. Unique epoch ID ("nonce")

  2. Unique stake pool key ("VRF key")

  3. Stake amount ("Stake snapshot")

  4. Slot number in the next epoch,

a calculation can be done for all slots within the next epoch. Each second of an epoch will also have 1 slot. And since each epoch is 5 days exactly, there are 432.000 slots and the same amount of calculations to be done (using the above variables).

Each calculation combining the nonce (1), the VRF key (2), the stake snapshot (3) and the slot number (4) will give the pool 1 lottery ticket with a number on it. This number will either allow the pool to mint a block at that certain slot or it doesn't.

Even though the slot lottery numbers are randomly generated they are also deterministic when combined with epoch nonce and VRF key. This means that using the variables, all slot lottery numbers for the next epoch will always be the same. This is why the CNCLI tool can calculate all winners immediately after the epoch nonce is published (1,5 days before epoch ends). The tool just runs the calculation in advance (fast forwards), where the pool software itself does the same calculation in real-time. And both can be 100% sure to get the same lottery number.

What determines if a slot lottery number is a winner?

Each slot lottery number is generated using the pool's unique VRF key. we will call this number the "Limbo Dancer".

Next we take the pool's total active stake. We call this number the "Limbo Bar".

Whenever the "Limbo Dancer" goes lower than the "Limbo Bar", it wins the competition and that certain pool is allowed to mint a block at that certain slot. This explains why a pool with a higher stake will get more blocks in a certain epoch (statistically) than a pool with lower stake.

The higher the stake of the pool, the higher the "Limbo Bar" will be, therefore increasing the odds for the "Limbo Dancer" to go lower than the "Limbo Bar" and making the pool a winner to mint a block at that slot.

Here you can find a simplistic calculation of the odds of finding a block each epoch, depending on your pool's total stake.

What if two or more pools are winners for the same slot?

Although it doesn't happen very often, it is very well possible that two or more pools are elected winner for the same slot. We call this "slot battles". Whenever this happens the network elects the pool with the lowest "Limbo Dancer" to mint a block at that slot!

This is good news for smaller pools, cause a smaller pool needs a much lower "Limbo Dancer" in order for it to go under its relatively lower "Limbo Bar".

Why aren't blocks minted each second (every slot)?

All active pools will play this lottery game each second (each slot). But there will be enough slots in which none of the pools will win the lottery (hence have a low enough "Limbo Dancer" in relation to their "Limbo Bar"). The protocol is designed in such a way that on average there will be 1 block every 20 seconds (20 slots). Below you will find two more technically in depth video's of Andrew (developer of the CNCLI tool) about the slot lottery:

If you have more questions about Cardano or Staking Cardano, simply join our Discord server and ask me anything!

Please leave your comments below and let me know what other subjects you would want me to cover without Jargon & within 199 words.

1,055 views0 comments


Start staking with Yoroi Wallet!

  1. Open "Receive" tab, copy your wallet address and send ADA there.

  2. Open "Delegation List" tab and type "ADA4Good" in the search field.

  3. Press "DELEGATE" button and follow further instructions.

  4. Enjoy Staking with us!

bottom of page