Non-Normative - 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

Algorand Specifications

The following is a non-normative specification of the Algorand Ledger.

The Algorand Ledger consists of

This chapter aids implementors and readers in understanding the Ledger component, as well as bridging the gap between the normative specification and the go-algorand reference implementation.

Whenever possible, we illustrate how specific subcomponents may be implemented, providing design patterns from the reference implementation.

Besides the actual Ledger as an ordered sequence of blocks, several subcomponents are defined to look up, commit, validate, and assemble said blocks and their corresponding certificates.

Some constructs are built to optimize specific fields look up in these blocks for a given round, or to get the state implicitly defined by an aggregate of their history up to a certain round. These constructs are called Trackers, and their usage and implementation details are addressed in the corresponding section.

This chapter also includes the Transaction Pool, a queue of transactions that plays a key role in the assembly of a new block, the Transaction Tail used for efficient deduplication, and a dive into the protocol Rewards system.