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

Reading Guidelines

The Algorand Specifications consist of normative and non-normative sections.

The normative sections formally define Algorand. The Algorand consensus protocol gates all the components of the normative sections. The scope of these sections is to provide a complete and correct specification of the Algorand protocol, regardless of the implementation. Therefore, the language used in those sections is formal, prescriptive, and succinct.

The non-normative sections provide context and auxiliary information for the Algorand implementation. The components of the non-normative sections are not enforced through the Algorand consensus protocol. The scope of these sections is to ease the understanding of the normative sections and provide readers with a comprehensive view of the Algorand reference implementation (go-algorand). Therefore, the language used in those sections is informal, descriptive, and discursive.

The current version of the Algorand Specifications reflects the latest version of the Algorand consensus protocol in its normative sections and is generally aligned with the latest stable release of go-algorand in its non-normative sections.

Specifications for previous consensus versions can be found via the link provided in the block’s current-protocol.upgrade-state field corresponding to the desired consensus version.

Contents Hierarchy

Node

The node functional diagram above provides an overview of the functional blocks that define the structure of the Algorand Specification.

Contents are organized in four hierarchical levels (see the navigation sidebar on the left):

Part
└── 1. Chapter (Normative / Non-Normative)
    └── 1.1. Section
        └── 1.1.1. Sub Section

Each Part begins with an Overview, highlighting the covered functional blocks, usually divided into two Chapters: normative and non-normative (always present).

The navigation sidebar can be folded up to the Chapter level by clicking the folding icon (>), next to the level name.

Formatting

Notes like this are non-normative comments in the normative sections.

📎 EXAMPLE

Sections like this are examples aiming to clarify the formal specifications.

⚙️ IMPLEMENTATION

Sections like this contain links to the go-algorand reference implementation.

The code-blocks may contain pseudocode or real code snippets.

Math Symbols

For a correct rendering of mathematical symbols and formulas, it is recommended to right-click on the symbol below, and select Math Settings -> Math Renderer -> Common HTML from the drop-down menu.

$$ \mathcal{C} $$

Once MathJax rendering is correctly set, you should see a calligraphic “C”.

PDF Book

Readers used to classical \( \text{\LaTeX} \)-styled books can download the full book from the latest release artifacts.