Skip to content

Block states

A block in Taiko Alethia transitions through different states as it progresses through the protocol. The key states are:

  • Proposed: The block has been submitted to the TaikoL1 contract.
  • Proved: At least one validity proof has been submitted.
  • Verified: The block and all its ancestors up to genesis have valid proofs.

Taiko Alethia allows parallel proof generation, meaning multiple blocks can be proved concurrently. However, a block is considered verified only when its parent block is also verified. Blocks are verified in batches, not sequentially.


Safe and Finalized Block States

Safe Block

The Safe block state on Taiko Alethia is equivalent to a Safe block on Ethereum.

Each L2 block originates from an L1 block that can be queried using the taiko-geth API. If the corresponding L1 block is considered Safe, the associated L2 block can also be considered Safe.

Querying L1 Origin for an L2 Block

The following taiko-geth API method retrieves the L1 origin of a given Taiko Alethia L2 block:

L1OriginByID API
func (s *TaikoAPIBackend) L1OriginByID(blockID *math.HexOrDecimal256) (*rawdb.L1Origin, error) {
l1Origin, err := rawdb.ReadL1Origin(s.eth.ChainDb(), (*big.Int)(blockID))
if err != nil {
return nil, err
}
if l1Origin == nil {
return nil, ethereum.NotFound
}
return l1Origin, nil
}

Finalized (Verified) Block

The Verified block state in Taiko Alethia is analogous to the Finalized block state in Ethereum. A block is Verified when:

  • Every state transition from genesis to the current block has valid proofs.
  • Its parent block is also verified.
  • The block is included in a batch verification process.

A Verified block cannot be reverted, ensuring strong finality guarantees.


Example API Query and Response

The following JSON-RPC request retrieves the L1 origin for a given L2 block:

query.json
{
"method": "taiko_l1OriginByID",
"id": 1,
"jsonrpc": "2.0",
"params": ["0x19a3c"]
}

Response

response.json
"result": {
"blockID": "0x19a3c",
"l2BlockHash": "0x0905c85f9a288ebe94eb85743a65c8cf6266097b8b826cdca4f4018e6267c26a",
"l1BlockHeight": "0x16ef0f",
"l1BlockHash": "0x419f0c5b2cc90078c7040c3b90d174895ce83d76ebfdd75ad2dd5521036d0938"
}

Interpreting the Response

For block 0x19a3c:

  • It is Safe if the L1 block (0x419f..) reaches a Safe state.
  • It is Finalized (Verified) if all state transitions from genesis to block 0x19a3c have valid proofs.