The Cardano blockchain is unique in many different aspects.
It’s a 3rd generation cryptocurrency which comes with on-chain governance, Proof of Stake validation, non-custodial staking delegation and many other exciting features.
As you may guess, there’s a powerful engine at the core of Cardano. It’s called the Ouroboros protocol.
In Ouroboros, block validators are randomly drawn from time to time.
A staking pool is simply a well managed computer, or network of computers, that is online 24×7 and verifies blocks on behalf of everyone the network.
So far, this is how most Delegated Proof of Stake systems work – nothing unique to Ouroboros yet.
What happens, though, if the randomly chosen block validator is offline precisely during his turn to valid? A block would be forever unverified! This can’t happen, so the Ouroboros protocol has an interesting way of dealing with this : give the validator a period of time to verify and publish the block. If they don’t, then pass the baton to the next guy so he can check the block.
This is where Ouroboros time slots come in.
The Cardano protocol divides time into epochs and slots. Each epoch is divided into N slots. (These parameters are fixed by the protocol developers and are hard coded into the epoch genesis block.)
For instance, during the Cardano Incentivized Testnet (ITN), an Epoch was exactly 24 hours. It is expected that the mainnet Epoch will be approximately 5 days long.
The epoch is made up of N time slots. Here’s where it gets interesting!
During every epoch, a special lottery is run throughout. From the first slot in an epoch, every staking pool and individual validator starts to process a secret and highly secure random number.
When the epoch ends, a special map is generated for the next epoch. This map contains a list of pairs like [(number1,pool1), (number2,pool2), …, (numberN,poolN)]. The numbers are slot numbers and the poolN’s are staking validator ID’s.
So, exactly at slot number N, a validator will craft a block and will broadcast it into the Cardano network. The entire network will then verify if this validator was entitled to produce a block at slot N. If positive, then the block itself is verified and then accepted or rejected.
The generation of this random number involves a cryptographic mechanism known as Verifiable Random Function – VRF, which we’ll look at next.
Continue reading about Verifiable Random Functions – VRF