## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

- Auto
- Light
- Dark

# Algorand Specifications

The Algorand Foundation governs the development and maintenance of the Algorand protocol.

Protocol updates **SHALL** be executed through the following process:

The Algorand Foundation **SHALL** publish the _official_ protocol specification in the [public specifications’ repository](https://github.com/algorandfoundation/specs).

Each _protocol version_ **SHALL** be uniquely identified by the URL of the corresponding `git` release commit. This URL **MUST** include the cryptographic hash of the commit.

A protocol update **SHALL** become effective only if it is approved on-chain by a supermajority of block proposers. Each block proposer signals support for a protocol update by including the _identifier_ of the proposed protocol version as the next protocol version.

A protocol update **SHALL** be accepted if, for an interval of δdδd consecutive rounds, at least ττ of the finalized blocks reference the same next protocol version.

Upon acceptance, node operators **SHALL** be granted an additional δxδx rounds to update their node software in accordance with the new specification.

Upon completion of the grace period, the updated protocol specification **SHALL** take effect. From that point forward, blocks **MUST** be produced exclusively under the updated protocol rules.

* * *

> The values of the upgrade parameters are defined in the [Ledger Parameters Specification](https://specs.algorand.co/ledger/ledger-parameters#protocol-upgrade).
