Algorand Ledger Overview
The following is a non-normative specification of the Algorand Ledger.
The Algorand Ledger consists of
-
The Account Table, which records the current state of the Ledger as an aggregation of individual accounts’ states,
-
The Blockchain, which records the history of the accounts’ states updates since the genesis block up to the current state.
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.