## 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

Blocks are data structures that store accounts’ state transitions in the blockchain,
global state fields, and information related to the agreement protocol.

A _block_ defines a _state transition_ of the Ledger.

Algorand block size is 55 MB.

Each block consists of a _header_ and a _body_.

- The _header_ contains metadata such as details about the block itself, the current
_round_, various hashes, rewards, etc.,

- The _body_ holds transaction data and account updates.

> For further details on the _block header_, refer to the Ledger [normative specification](https://specs.algorand.co/ledger/ledger-block).

The Ledger package in the `go-algorand` reference implementation includes functions
to effectively manage and interact with blocks.

Blocks are assembled in two steps: first by the `MakeBlock` function and then by
the `WithSeed`.

The following sections provide a brief explanation and examples for each field in
the block structure.

> For a formal specification of these fields, refer to the Ledger [normative specification](https://specs.algorand.co/ledger/ledger).
