Ouroboros Praos

Ouroboros Praos is a proof-of-stake consensus mechanism developed by IOHK and is an updated version of Ouroboros Classic.


What Is Ouroboros Praos?

Ouroboros Praos is an improvement over Ouroboros Classic, the first version of the consensus protocol developed by IOHK. It was the first proof-of-stake algorithm to be formally proven secure in a rigorous cryptographic model.
Ouroboros Praos improves upon classic’s security guarantees, introducing a novel “layered” approach to the protocol, which allows it to scale gracefully with the size of the network. The algorithm is provably secure in the asynchronous setting, making a common and standard cryptographic assumption

Praos is not only a technically superior protocol but also one that is easier for developers to integrate into their applications in comparison to its predecessors. As such, it has been selected for implementation in Cardano.

The Ouroboros Praos proof-of-stake protocol is the second iteration of Ouroboros, the first provably secure proof-of-stake protocol, developed by IOHK’s research team. Like Ouroboros Genesis, Ouroboros Praos is a provably secure proof-of-stake blockchain protocol, which allows users to run a node and mint new blocks when they are randomly selected.

Praos stands for “self-sufficient”, as this iteration of the protocol provides stronger guarantees than Ouroboros Genesis in terms of scalability and security. As with all IOHK research papers, this has been published in an academic journal (the Journal of Cryptographic Engineering).

Ouroboros Praos operates on a two-tier system: the main chain is comprised of epochs (collections of blocks), and each epoch contains slots (opportunities to mint blocks). The time taken for each epoch depends on the total number of stake pools on the network.

The main advantage of having pool operators (who run stake pools) as part of the system is that it makes the network more accessible. 

What Makes Ouroboros Praos Different?

One of the main differences between Ouroboros and Ouroboros Praos is what they each require from their individual staking pools.

With Ouroboros, every pool needed to have a single leader that was responsible for producing blocks. This meant that every pool required at least one account in order to start staking, which means that all of the computational work was done by that one account.

With Ouroboros Praos, however, pools don’t need to have a leader. They can instead share responsibilities with all accounts in the pool. This means that computational work can be shared amongst multiple accounts instead of just one, so there’s less pressure put on anyone’s account.

The other two forms of the Ouroboros algorithm are Ouroboros Genesis and Ouroboros Classic.

Ouroboros Genesis uses a verifiable random function (VRF) in addition to the traditional Proof-of-Stake (PoS) mechanism used in Ouroboros Classic. VRF is a cryptographic primitive that allows a party to generate a random output at any time and get it publicly verified by other parties. In the context of Ouroboros, VRF is used to determine the leader that commits blocks to the ledger in each slot. VRF improves our ability to provide security and decentralization for Ouroboros Genesis, compared with Ouroboros Classic. Additionally, this enables Ouroboros Genesis to be more scalable than Ouroboros Classic for certain adversarial models.