Search for projects by name or address
Linea is a ZK Rollup powered by a zkEVM developed at Consensys, designed to scale the Ethereum network.
Linea is a ZK Rollup powered by a zkEVM developed at Consensys, designed to scale the Ethereum network.
2025 Jul 21 — 2026 Jul 21
The section shows the operating costs that L2s pay to Ethereum.
2025 Jul 21 — 2026 Jul 21
This section shows how much data the project publishes to its data-availability (DA) layer over time. The project currently posts data to
Ethereum.
2025 Jul 21 — 2026 Jul 21
This section shows how "live" the project's operators are by displaying how frequently they submit transactions of the selected type. It also highlights anomalies - significant deviations from their typical schedule.
2026 Jun 21 — Jul 21
Proof system is complete
2024 Jun 9th
The Linea proof system and verifier on ethereum covers 100% of the zkEVM.
SNARKs are succinct zero knowledge proofs that ensure state correctness, but require trusted setup.
All of the data needed for proof construction is published on Ethereum L1. Unlike most ZK rollups, transaction data is posted instead of state diffs.
There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable.
Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. Eventually (after 6 months of no finalized blocks) the Operator role becomes public, theoretically allowing anyone to propose state with valid proofs.
All the data that is used to construct the system state is published on chain in the form of cheap blobs or calldata. This ensures that it will be available for enough time.
The node software (Linea Besu) and a guide to reconstruct the state from L1 is available here. Other node implementations like Nethermind, Geth or Erigon can sync too, but state derivation from L1 and Linea-specific features are unsupported.
Linea uses a bespoke lossless compression scheme based on LZSS (deflate-like). It is available as a dedicated library and a zk-decompression circuit in Gnark.
Is available via the official Linea docs for Linea Besu (preloaded), Besu, Erigon, Nethermind, Geth.
Linea groups L2 blocks into batches which are then posted to L1 for proving. Each batch (whether sent as a blob or compressed calldata) contains L2 blocks. Blocks in turn include the transactions with unnecessary data stripped. More info on the compression, packing and blob structure.
Each update to the system state must be accompanied by a ZK proof that ensures that the new state was derived by correctly applying a series of valid user transactions to the previous state. These proofs are then verified on Ethereum by a smart contract.
The Linea prover code is available on Github. Linea splits proving into: Corset (Go + Lisp DSL) expands EVM execution traces and generates a bespoke constraint system for the zk-EVM. gnark (Go) ingests the expanded traces and constraint system, instantiates the circuits and produces the SNARK proof.
The constraint system lives in the public linea-constraints repo and is authored in a Lisp-style DSL before being compiled to Go. Gnark then turns those constraints into PLONK-compatible circuits over BN254. Internally, Linea’s flow uses a recursive proof stack called Vortex → Arcane → PLONK compression: Vortex/Arcane supply small inner proofs that are finally aggregated into a single PLONK proof that the L1 contract can verify.
Linea uses a Plonk-based proof system which requires a trusted setup. The verification keys are hardcoded in the verifier contract on-chain.
Each update to the system state must be accompanied by a ZK proof that ensures that the new state was derived by correctly applying a series of valid user transactions to the previous state. These proofs are then verified on Ethereum by a smart contract.
Onchain verifier
Onchain verifier |
The metrics include upgrades on the currently used proxy contracts. Historical proxy contracts and changes of such are not included.
Upgraded Linea rollup contract to v8.0, diff: https://disco.l2beat.com/diff/eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332/eth:0x59290394dDC1cF84e671701A929710643c343530. The upgrade sets the stage for forced L1 transactions, however they are not live yet. FORCED TRANSACTION SENDER ROLE can send a forced transaction, which defines L2 block number deadline by which the trx must be included, otherwise the rollup operation stops. SET ADDRESS FILTER ROLE can set address filterer, addresses on this list are not allowed to force include trxs on L1 (OFAC compliance is cited). FORCED TRANSACTION SENDER ROLE is not held by anyone yet, preventing from using forced transactions. More precise code changes: - Forced trxs could now be added to the state of the rollup ( nextForcedTransactionNumber , forcedTransactionL2BlockNumbers , forcedTransactionRollingHashes ). - storeForcedTransaction adds a forced trx to the state, it could be called only by FORCED TRANSACTION SENDER ROLE . It doesn't check whether the forced trx fee was paid, whether the blockNumberDeadline is sufficiently in future or whether the sender address is not filtered. Probably these checks will be done in another contract with FORCED TRANSACTION SENDER ROLE permissions. - In finalizeBlocks , several checks are added, including whether all addresses filtered by the sequencer are registered in the filter, whether no forced trx has expired. Also, removed L2Roles Linea ms module on L2. Also, upgraded Linea verifier, not reproduced yet.
Upgraded Linea rollup contract to v8.0, diff: https://disco.l2beat.com/diff/eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332/eth:0x59290394dDC1cF84e671701A929710643c343530.
The upgrade sets the stage for forced L1 transactions, however they are not live yet. FORCED_TRANSACTION_SENDER_ROLE can send a forced transaction, which defines L2 block number deadline by which the trx must be included, otherwise the rollup operation stops. SET_ADDRESS_FILTER_ROLE can set address filterer, addresses on this list are not allowed to force include trxs on L1 (OFAC compliance is cited). FORCED_TRANSACTION_SENDER_ROLE is not held by anyone yet, preventing from using forced transactions.
More precise code changes:
nextForcedTransactionNumber, forcedTransactionL2BlockNumbers, forcedTransactionRollingHashes).storeForcedTransaction adds a forced trx to the state, it could be called only by FORCED_TRANSACTION_SENDER_ROLE. It doesn’t check whether the forced trx fee was paid, whether the _blockNumberDeadline is sufficiently in future or whether the sender address is not filtered. Probably these checks will be done in another contract with FORCED_TRANSACTION_SENDER_ROLE permissions._finalizeBlocks, several checks are added, including whether all addresses filtered by the sequencer are registered in the filter, whether no forced trx has expired.Also, removed L2Roles Linea ms module on L2.
Also, upgraded Linea verifier, not reproduced yet.
| - | Status: DELETED |
| contract PlonkVerifierFull (eth:0x0D0f070386edC441A63fB8FAe8FB937Bbd88c5Cb) [N/A] | |
| +++ description: None |
| contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) [linea/LineaRollup_ForcedTrx_v8_0] { | |
| +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol. | |
| template: | |
| - | "linea/LineaRollup_NativeYield_v7_1" |
| + | "linea/LineaRollup_ForcedTrx_v8_0" |
| sourceHashes.1: | |
| - | "0x61e0da7291b49dc345bdfe09390ff5f67c0d1ad182602ba2b4c238eb023dda50" |
| + | "0xf3482110e327210ee9824abef6aa6fea72bf9a49a46187d08853a978c2210c65" |
| values.$implementation: | |
| - | "eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332" |
| + | "eth:0x59290394dDC1cF84e671701A929710643c343530" |
| values.$pastUpgrades.11: | |
| + | ["2026-07-16T11:32:59.000Z","0x4bcfe7ea1724555288f7cf4d7a0de608182483a41d670e3027b89c3e989240c9",["eth:0x59290394dDC1cF84e671701A929710643c343530"]] |
| values.$upgradeCount: | |
| - | 11 |
| + | 12 |
| values.CONTRACT_VERSION: | |
| - | "7.1" |
| + | "8.0" |
| +++ description: Mapping of proof type to ZK Plonk Verifier contract. | |
| values.verifiers.1: | |
| - | "eth:0x0D0f070386edC441A63fB8FAe8FB937Bbd88c5Cb" |
| + | "eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77" |
| values.addressFilter: | |
| + | "eth:0x526AE78F0103Ae73F05449ae30eb626C1003784E" |
| values.FORCED_TRANSACTION_FEE_SETTER_ROLE: | |
| + | "0xdaafd36d8da81d5104d4fd21e3ccc58683c62ba08cd23875bcfbc0583a3f49dd" |
| values.FORCED_TRANSACTION_SENDER_ROLE: | |
| + | "0xb63b70db607c764adad98a6745fc4efcea212ebc7b501d5753c57d675f377a66" |
| values.forcedTransactionFeeInWei: | |
| + | 1000000000000000 |
| values.getRequiredForcedTransactionFields: | |
| + | {"finalizedState":"0x6af94bc910a5facbc347462f6b2bc840940b7c99ae3cb483742dfd2c74c9d60f","previousForcedTransactionRollingHash":"0x0000000000000000000000000000000000000000000000000000000000000000","previousForcedTransactionBlockDeadline":0,"currentFinalizedL2BlockNumber":31407522,"forcedTransactionFeeAmount":1000000000000000} |
| values.SET_ADDRESS_FILTER_ROLE: | |
| + | "0x012c76ef7f96cd7eb95acbdc250ad5696bbe3fd2fcf0207571939fa40c2e0167" |
| implementationNames.eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332: | |
| - | "LineaRollup" |
| implementationNames.eth:0x59290394dDC1cF84e671701A929710643c343530: | |
| + | "LineaRollup" |
| } |
| contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) [linea/YieldManager] { | |
| +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors. | |
| +++ description: Value relative to TVS, part of the computation of minimal rollup ETH reserve. | |
| values.minimumWithdrawalReservePercentageBps: | |
| - | 9000 |
| + | 8500 |
| +++ description: Value relative to TVS, part of the computation of target rollup ETH reserve. | |
| values.targetWithdrawalReservePercentageBps: | |
| - | 9888 |
| + | 9000 |
| } |
| - | Status: DELETED |
| contract L2Roles (linea:0x3886a948eA7b4053312c3aE31a13776144aA6239) [linea/L2Roles] | |
| +++ description: The Zodiac 'Roles' module for Safe multisigs allows defining roles that can call preconfigured targets on behalf of the Gnosis Safe. |
| contract Linea Multisig 3 (linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD) [GnosisSafe] { | |
| +++ description: None | |
| values.GnosisSafe_modules.0: | |
| - | "linea:0x3886a948eA7b4053312c3aE31a13776144aA6239" |
| } |
| + | Status: CREATED |
| contract PlonkVerifierFull (eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77) [N/A] | |
| +++ description: None |
| + | Status: CREATED |
| contract AddressFilter (eth:0x526AE78F0103Ae73F05449ae30eb626C1003784E) [linea/AddressFilter] | |
| +++ description: None |
Upgraded Linea SC to Safe v1.4.1: https://github.com/safe-fndn/safe-smart-account/blob/release/v1.4.1/contracts/Safe.sol, upgraded Linea Multisig 3 to SafeL2 v1.4.1: https://github.com/safe-fndn/safe-smart-account/blob/release/v1.4.1/contracts/SafeL2.sol. Adjusted targetWithdrawalReservePercentageBps yield parameter, reduced the total amount of ether that can leave L2MessageService on Linea L2 per day.
Upgraded Linea SC to Safe v1.4.1: https://github.com/safe-fndn/safe-smart-account/blob/release/v1.4.1/contracts/Safe.sol, upgraded Linea Multisig 3 to SafeL2 v1.4.1: https://github.com/safe-fndn/safe-smart-account/blob/release/v1.4.1/contracts/SafeL2.sol.
Adjusted targetWithdrawalReservePercentageBps yield parameter, reduced the total amount of ether that can leave L2MessageService on Linea L2 per day.
| contract Linea Security Council (eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3) { | |
| +++ description: None | |
| sourceHashes.1: | |
| - | "0xd42bbf9f7dcd3720a7fc6bdc6edfdfae8800a37d6dd4decfa0ef6ca4a2e88940" |
| + | "0x7d388119a66f3eae147d748f86136f073d907d6b36f7e87e9363c4c7a2899a8a" |
| values.$implementation: | |
| - | "eth:0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552" |
| + | "eth:0x41675C099F32341bf84BFc5382aF534df5C7461a" |
| values.$members.1: | |
| - | "eth:0x497515578b0BE54d2f0f32cF3F08B85Bf8cEB6aB" |
| + | "eth:0xD6481cC92eD746EbC679788654723Ce49D45EbeA" |
| values.$members.7: | |
| - | "eth:0x99234cd9B532F30538ac797D33c212e3B69Fd087" |
| + | "eth:0x0F4df4939a6B126a088A40B4Bbf9F30337ACBFE4" |
| values.VERSION: | |
| - | "1.3.0" |
| + | "1.4.1" |
| implementationNames.eth:0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552: | |
| - | "GnosisSafe" |
| implementationNames.eth:0x41675C099F32341bf84BFc5382aF534df5C7461a: | |
| + | "Safe" |
| } |
| contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) { | |
| +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors. | |
| +++ description: Value relative to TVS, part of the computation of target rollup ETH reserve. | |
| values.targetWithdrawalReservePercentageBps: | |
| - | 9980 |
| + | 9888 |
| } |
| contract L2MessageService (linea:0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec) { | |
| +++ description: None | |
| +++ description: The cap on the total amount of ether that can leave the contract via L1 -> L2 message claims per period given by periodInSeconds. | |
| values.limitInWei: | |
| - | "24000000000000000000000" |
| + | "8000000000000000000000" |
| } |
| contract Linea Multisig 3 (linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD) { | |
| +++ description: None | |
| sourceHashes.1: | |
| - | "0x59fe14e95a8aa7f52213f18bae5c9329cf583a7ba31194698b15eddb97d5e825" |
| + | "0x618c83d2fbbe19fd6f2d6ee6ee79a60e6206e48bf361eaf4812e1c1fc14b4527" |
| values.$implementation: | |
| - | "linea:0x3E5c63644E683549055b9Be8653de26E0B4CD36E" |
| + | "linea:0x29fcB43b46531BcA003ddC8FCB67FFE91900C762" |
| values.$members.2: | |
| - | "linea:0x497515578b0BE54d2f0f32cF3F08B85Bf8cEB6aB" |
| + | "linea:0xD6481cC92eD746EbC679788654723Ce49D45EbeA" |
| values.$members.8: | |
| - | "linea:0x99234cd9B532F30538ac797D33c212e3B69Fd087" |
| + | "linea:0x0F4df4939a6B126a088A40B4Bbf9F30337ACBFE4" |
| values.VERSION: | |
| - | "1.3.0" |
| + | "1.4.1" |
| implementationNames.linea:0x3E5c63644E683549055b9Be8653de26E0B4CD36E: | |
| - | "GnosisSafeL2" |
| implementationNames.linea:0x29fcB43b46531BcA003ddC8FCB67FFE91900C762: | |
| + | "SafeL2" |
| } |
| + | Status: CREATED |
| contract Safe (eth:0xD6481cC92eD746EbC679788654723Ce49D45EbeA) | |
| +++ description: None |
Prover upgraded to the new version. I have regenerated it from the sources.
Prover upgraded to the new version. I have regenerated it from the sources.
| - | Status: DELETED |
| contract PlonkVerifierMainnetFull (eth:0xC83ed08E2262fBa264D528C749c051f8fC526897) | |
| +++ description: None |
| contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) { | |
| +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol. | |
| +++ description: The cap on the total amount of ether that can leave rollup contract via L2 -> L1 message claims per period given by periodInSeconds. | |
| values.limitInWei: | |
| - | "30000000000000000000000" |
| + | "10000000000000000000000" |
| +++ description: Mapping of proof type to ZK Plonk Verifier contract. | |
| values.verifiers.0: | |
| - | "eth:0xC83ed08E2262fBa264D528C749c051f8fC526897" |
| + | "eth:0x218C3339ff3fea595c02Ac31Ca8A782f5028C4dc" |
| } |
| contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) { | |
| +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors. | |
| +++ description: Value relative to TVS, part of the computation of target rollup ETH reserve. | |
| values.targetWithdrawalReservePercentageBps: | |
| - | 9985 |
| + | 9980 |
| } |
| + | Status: CREATED |
| contract PlonkVerifierFull (eth:0x218C3339ff3fea595c02Ac31Ca8A782f5028C4dc) | |
| +++ description: None |
Added Lido yield provider for Linea native yield. Currently there is total of 1 ETH (exactly) deployed via Lido Yield Provider, the contracts are fully ready for wider usage of the yield feature.
Added Lido yield provider for Linea native yield. Currently there is total of 1 ETH (exactly) deployed via Lido Yield Provider, the contracts are fully ready for wider usage of the yield feature.
| contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) { | |
| +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors. | |
| values.yieldProviderByIndex.0: | |
| + | "eth:0x486D8cADc10489B30b64c890aEc747F1220eEEC3" |
| +++ severity: HIGH | |
| values.yieldProviderCount: | |
| - | 0 |
| + | 1 |
| } |
| + | Status: CREATED |
| contract LidoStVaultYieldProvider (eth:0x486D8cADc10489B30b64c890aEc747F1220eEEC3) | |
| +++ description: None |
Updated Type 1 verifier to a new version. Chain config is the same as the previous verifier.
Updated Type 1 verifier to a new version. Chain config is the same as the previous verifier.
| - | Status: DELETED |
| contract PlonkVerifierFull (eth:0x1442833180e253844897339aFb5800c797547987) | |
| +++ description: None |
| contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) { | |
| +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol. | |
| +++ description: Mapping of proof type to ZK Plonk Verifier contract. | |
| values.verifiers.1: | |
| - | "eth:0x1442833180e253844897339aFb5800c797547987" |
| + | "eth:0x0D0f070386edC441A63fB8FAe8FB937Bbd88c5Cb" |
| } |
| + | Status: CREATED |
| contract PlonkVerifierFull (eth:0x0D0f070386edC441A63fB8FAe8FB937Bbd88c5Cb) | |
| +++ description: None |
Only a trusted sequencer is allowed to submit transaction batches. A mechanism for users to submit their own batches is currently disabled.
MEV can be extracted if the operator exploits their centralized position and frontruns user transactions.
Funds can be frozen if the sequencer refuses to include an exit transaction (CRITICAL).
There is no general mechanism to force the sequencer to include the transaction.
Users can be censored if the operator refuses to include their transactions.
The user initiates L2->L1 messages by submitting a regular transaction on this chain. When the block containing that transaction is settled, the message becomes available for processing on L1. ZK proofs are required to settle blocks. Note that withdrawal requests can be censored by the Sequencer. Currently, there is a general limit of 10000.0 ETH that can be withdrawn within each 1d time window. Users can (eventually, after 6 months of inactivity from the centralized Operator) exit by replacing the Operator. In such a case they need to self-propose and prove their new state on the base layer with the required software which is currently not made available.
Funds can be frozen if the operator censors withdrawal transaction.

A Multisig with 5/9 threshold.
A Multisig with 3/5 threshold. It uses the following modules: Delay (A simple Safe module for that can queue and execute transactions as Linea Multisig 2 after a delay of currently 3mo, if registered as a module there).
A Multisig with 1/4 threshold. Member of Linea Security Council.
A Multisig with 3/5 threshold.
A Multisig with 5/9 threshold.


Contract used to bridge and escrow ERC-20 tokens.
All supported tokens in this escrow are included in the value secured calculation.
Standard implementation used for assets that are native to the other layer and are bridged to this layer.
L1 side of the old and now unused USDC bridge.
A simple Safe module for that can queue and execute transactions as Linea Multisig 2 after a delay of currently 3mo, if registered as a module there.
A beacon with an upgradeable implementation currently set as BridgedToken. Beacon proxy contracts pointing to this beacon will all use its implementation.
The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.

A standard timelock with access control. The current minimum delay is 0s.
Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.
Contract used to bridge and escrow ERC-20 tokens.
A standard timelock with access control. The current minimum delay is 0s.
Voyage XP tokens are non-transferrable, soulbound tokens that are distributed to recognize the community’s contribution toward the growth of the Linea ecosystem.
Standard implementation used for assets that are native to the other layer and are bridged to this layer.
A beacon with an upgradeable implementation currently set as BridgedToken. Beacon proxy contracts pointing to this beacon will all use its implementation.
The current deployment carries some associated risks:
Funds can be stolen if a contract receives a malicious code upgrade. There is a 0s delay on code upgrades.