<!-- tempo-docs-context -->
> Source: [/docs/protocol/blockspace/overview](https://tempo.xyz/developers/docs/protocol/blockspace/overview.md)
> Section: [Tempo EVM](https://tempo.xyz/developers/docs/development.md). Build on Tempo EVM: wallets and keys, payments, transactions and fees, TIP-20 Tokens, contracts, exchange, network details, nodes, protocol specifications, and changelog.
> [Documentation index](https://tempo.xyz/developers/llms.txt) · [Docs skill](https://tempo.xyz/developers/SKILL.md)

> Tempo MCP: Use `search`, `find_pages`, `read_page`, and `code` at `https://mcp.tempo.xyz` for Tempo and related documentation.
> If an indexed page is missing or reflects an older site, read this site’s [documentation index](https://tempo.xyz/developers/llms.txt) and Markdown pages directly.

[**Specification**](https://tempo.xyz/developers/docs/protocol)

# Blockspace overview: understanding payment lanes

## Abstract

This specification defines the structure of valid blocks in the Tempo blockchain.

## Motivation

Tempo blocks extend the Ethereum block format in multiple ways: there are new header fields to account for payment lanes and shared gas accounting, and system transactions are added to the block body for the fee AMM and other protocol operations. This specification contains all the modifications to the block format.

## Specification

### Header fields

Tempo extends an Ethereum header with gas-accounting fields, a millisecond timestamp component, and consensus context.

```rust title="Header struct"
pub struct Header {
    pub general_gas_limit: u64,
    pub shared_gas_limit: u64,
    pub timestamp_millis_part: u64,
    pub inner: alloy_consensus::Header,
    pub consensus_context: Option<TempoConsensusContext>,
}

pub struct TempoConsensusContext {
    pub epoch: u64,
    pub view: u64,
    pub parent_view: u64,
    pub proposer: PublicKey, // Valid 32-byte Ed25519 public key
}
```

* `inner` is the canonical Ethereum header (parent\_hash, state\_root, gas\_limit, etc.).
* `general_gas_limit` and `shared_gas_limit` partition the canonical `gas_limit` for payment and non-payment capacity (see [payment lane specification](https://tempo.xyz/developers/docs/protocol/blockspace/payment-lane-specification)).
* `timestamp_millis_part` stores the sub‑second component; the full timestamp is `inner.timestamp * 1000 + timestamp_millis_part` .

Current non-genesis headers MUST contain `consensus_context`. It records the consensus epoch, view, parent view, and proposer public key. RLP decoding MUST reject an invalid Ed25519 proposer key. The header RLP field order is `[general_gas_limit, shared_gas_limit, timestamp_millis_part, inner, consensus_context]`, with context encoded as `[epoch, view, parent_view, proposer]`. The context participates in the header hash. JSON-RPC exposes it as `consensusContext`, with `parentView` in camel case.

### Block body

The block body in Tempo retains the canonical Ethereum block body structure, with the addition of system transactions. Transactions are ordered in the following sections:

1. Start-of-block system transaction(s).
2. Proposer lane transactions, subject to `general_gas_limit` on non-payment transactions.
3. Remaining transactions that consume the shared gas budget.
4. Protocol-defined end-of-block system transactions, when required.

### System transactions

A valid Tempo block must include any required protocol-defined system transactions in the expected order before and after user transactions.
