Linea

Linea zk rollup L2

Linea (opens in a new tab) is an EVM compatible Zero Knowledge (ZK) rollup chain built by Consensys (opens in a new tab).

High level overview

The LineaRollup rollup smart contract implementation is deployed behind a proxy on Layer 1.

Linea uses a Spare Merkle Trie (SPT) data structure.

The lifecycle of a Linea transaction is outlined in deptth here (opens in a new tab). Ultimately, a call is maded to finalizeBlocks on the Layer 1 L1MessageService contract containing an aggregated proof of data from multiple transactions across multiple blocks.

LineaScan offers an interface to track and display finalized batches (opens in a new tab).

Linea Finalized Batches

Verification

The Unruggable gateway Typescript prover implementation used for Linea is LineaProver.ts.

Linea implements the linea_getProof RPC method for returning proof data, and these proofs are verified by the LineaVerifier.sol contract deployed on L1.

The verifiers interface with the SpareMerkleProof.sol library through our proving hooks in LineaTrieHooks.sol.

Notes

Compiler version

As outlined here (opens in a new tab):

"Solidity 8.23 and later compiles newer versions of the EVM by default. Use the solc --evm-version london command to ensure compatibility with Linea."

Linea.eth subnames

Linea released their own code (opens in a new tab) for resolving subnames of linea.eth from Linea using Proof of Humanity as a way of allocating names. This effort was auditted by Consensys (opens in a new tab) and makes for an interesting read.

Workshop with ENS and Unruggable

At Devcon 2024 in Bangkok, Thailand Linea gave a workshop alongside ENS and Unruggable.

The recording of this workshop can be viewed here.