A block is a fundamental data structure for organizing Aleo transactions over time.
Components of a Block
An Aleo block is serialized in the following format:
|The hash of the block
|The hash of the previous block
|The header of the block
|The transactions in the block
|The ratifications for proving rewards in the block
|The coinbase puzzle solution constructed by accumulating the individual prover solutions.
|The signature for the block
The transactions are a list of all transactions that are included in the specified block.
The block header contains components that summarize the state of the specified block, as well as the state of the ledger at this point in history. See the components of a block header for more details.
Components of a Block Header
An Aleo block header is serialized in the following format:
|The Merkle root representing the blocks in the ledger up to the previous block.
|The Merkle root representing the transactions in the block.
|The Merkle root representing the on-chain finalize including the current block.
|The Merkle root representing the ratifications in the block.
|The accumulator point of the coinbase puzzle.
|The metadata of the block.
|The network ID of the block
|The round that produced this block - 8 bytes
|The height of this block - 4 bytes
|The total supply of microcredits - 8 bytes
|The cumulative weight for this block - 16 bytes
|The cumulative proof target for this block - 16 bytes
|The coinbase target for this block - 8 bytes
|The proof target for this block - 8 bytes
|The coinbase target for the last coinbase - 8 bytes
|The Unix timestamp (UTC) for the last coinbase - 8 bytes
|The Unix timestamp (UTC) for this block - 8 bytes