# Consensus Layer

This layer performs two fundamental functions:

* Running the [Ouroboros](https://eprint.iacr.org/2016/889.pdf) consensus protocol. This layer takes decisions like adopting blocks, choosing between competing chains (if there are any), and decides when to produce blocks of its own; and&#x20;
* Maintaining all the state that is required to make the decisions taken in the consensus layer.
