Reading Guidelines - Algorand Specifications
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 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.
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:
Part
└── 1. Chapter (Normative / Non-Normative)
└── 1.1. Section
└── 1.1.1. Sub Section
Each Part begins with a Preamble, highlighting the covered functional blocks, usually divided into two Chapters: normative and non-normative (always present).
Notes like this are non-normative comments in the normative sections.
Important
EXAMPLE:
Sections like this are examples aiming to clarify the formal specifications.
Important
IMPLEMENTATION:
Sections like this contain links to the
go-algorandreference implementation.
The code-blocks may contain pseudocode or real code snippets.
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.
CC
Once MathJax rendering is correctly set, you should see a calligraphic “C”.
Readers used to classical \LaTeX\LaTeX-styled books can download the full PDF Book from the latest release artifacts.
⚠️ The PDF Book is a work in progress, it may contain formatting errors and missing graphic contents. You can track the progress of the PDF Book in this issue.