Skip to content
Taiko Hekla will be sunsetting with the deprecation of the Holesky Testnet on September 30th, 2025. In it's place, we are deploying the Taiko Hoodi testnet with Ethereum Hoodi as L1. Please find network details here.

TaikoInbox

TaikoInbox is the core Layer 1 smart contract in the Taiko Alethia protocol. It is responsible for batch lifecycle management, state synchronization, and bond management. TaikoInbox ensures seamless interaction between L1 and L2, enabling a secure and scalable rollup architecture.

Features

  • Batch Lifecycle Management: Handles batch proposal, proving, and verification.
  • Cross-Layer Synchronization: Ensures state consistency between L1 and L2.
  • Bond Management: Maintains economic security by requiring bonds for proposers.
  • Scalability: Supports Layer 3 (L3) deployments, expanding Taiko’s rollup capabilities.

Contract Methods

proposeBatch

Proposes a batch of batches.

Input ParameterTypeDescription
_paramsbytesABI-encoded batchParams.
_txListbytesTransaction list in calldata. If the txList is empty, blob will be used for data availability.

Returns:

  • BatchInfo memory info_: Batch information essential for constructing blocks offchain.
  • BatchMetadata memory meta_: Metadata of the proposed batch.

proveBatches

Proves multiple batches with a single aggregated proof.

Input ParameterTypeDescription
_paramsbytesABI-encoded parameter containing metas and transitions.
_proofbytesThe aggregated cryptographic proof proving the batches transitions.

Returns:

  • TaikoData.batchMetadataV2[]: Array of metadata for all proposed batches.

verifyBatches

Verifies a batch of blocks after proofs are submitted.

Input ParameterTypeDescription
_lengthuint8Maximum number of batches to verify.

depositBond

Locks a bond deposit required for proposing batches.

Input ParameterTypeDescription
_amountuint256Amount of bond to deposit.

withdrawBond

Withdraws a bond deposit after batch proposals are finalized.

Input ParameterTypeDescription
_amountuint256Amount of bond to withdraw.

getLastVerifiedTransition

Retrieves the most recent verified batch.

Return ValueTypeDescription
batchId_uint64ID of the last verified batch.
batchId_uint64ID of the last verified batch.
ts_TransitionStateThe transition used for verifying the batch.

Events

BatchProposed

Triggered when a new batch is proposed.

Event ParameterTypeDescription
infoBatchInfoThe info of the proposed batch.
metaBatchMetadataThe metadata of the proposed batch.
txListbytesThe tx list in calldata.

BatchesProved

Triggered when a validity proof is submitted for a batch.

Event ParameterTypeDescription
verifieraddressAddress of the verifier.
batchIdsuint64[]IDs of the proven batches.
transitionsTransition[]The transitions data.

BatchesVerified

Emitted when a batch is verified.

Event ParameterTypeDescription
batchIduint64ID of the verified batch.
batchHashbytes32The hash of the verified batch .

Constants

Constant NameValueDescription
livenessBondBase125Required bond for proposing a batch.
maxBlocksPerBatch768Maximum number of blocks proposed in a batch.
maxBatchesToVerify16Maximum number of batches verified at once.

Design Considerations

  1. Ethereum-Equivalent Execution

    • The contract follows Ethereum’s rollup-centric roadmap, allowing Ethereum-equivalent execution.
    • No modifications to EVM opcodes, ensuring compatibility.

  2. Based Rollup Architecture

    • Batches are proposed permissionlessly, following Ethereum’s L1 sequencing rules.
    • No centralized sequencer; TaikoInbox ensures censorship resistance.

  3. Multiproving System

    • Supports multiple proving mechanisms: TEE + TEE, TEE + ZK.
    • Ensures security even if one proof system is compromised.