Skip to content

TaikoL1

TaikoL1 is the core Layer 1 smart contract in the Taiko Alethia protocol. It is responsible for batch lifecycle management, state synchronization, and bond management. TaikoL1 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 batchs.

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 batchs.

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

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

  3. Multiproving System

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