Most people think the transition from Layer 2 to full decentralization is a matter of time. They read the blog posts, see the roadmap milestones, and assume the sequencer will eventually be replaced by a permissionless validator set. The code tells a different story.

I spent the last week auditing the newly released zkSync Era sequencer codebase, specifically the Boojum prover integration and the sequencer selection contract. What I found is a gap between the narrative and the engineering reality. The sequencer itself remains a single server instance operated by Matter Labs. The planned decentralization upgrade—dubbed "Stage 2"—still relies on a permissioned set of validators who can be arbitrarily rotated by a multisig. This is not a bug; it is a design choice masked by marketing language.
Context: The Layer 2 Sequencing Problem
Every Layer 2 today faces the same fundamental tension: speed versus decentralization. A sequencer batches transactions, orders them, and submits them to L1. If the sequencer is centralized, it can censor, reorder, or extract MEV. The industry has spent two years promising "decentralized sequencing" via protocols like Espresso, shared sequencing layers, or rotating sequencer sets. Yet no production rollup has actually implemented a trustless, permissionless sequencer.
zkSync’s current architecture uses a single sequencer that proposes batches. The sequencer is controlled by a smart contract on L1 that can be upgraded by a 3-of-5 multisig. The validators—the entities that verify the proofs—are also whitelisted. The roadmap promises a gradual transition to a “validator network” where anyone can participate, but the code for that transition is not yet deployed. The existing sequencer contract contains a setSequencer function that can be called by the owner without any delay. This is a textbook permissioned system.
Core: Code-Level Dissection of the Sequencer Contract
Let’s dive into the actual Solidity. The Sequencer.sol contract at address 0x... (verified on Etherscan) defines the proposeBatch function. The function has a onlySequencer modifier. The modifier checks msg.sender == sequencer. The sequencer address is stored in a state variable that can be changed by the owner via setSequencer. The owner is the zkSync multisig. There is no mechanism for automatic rotation, no staking, no slashing.
During my audit, I traced the setSequencer function. It emits an event, but the new sequencer can be activated immediately. There is no timelock. This means that a compromised multisig—or a government seizure—could instantly replace the sequencer with a malicious one. The honest validators would still verify the proofs, but the sequencer controls which transactions are included. A malicious sequencer could simply choose to ignore a specific user’s transaction indefinitely. The proof system would still generate valid proofs for the chosen batch, and the L1 would accept it.
I simulated this scenario using a custom Python script that modeled the sequencer’s decision logic. The simulation assumed the validators are honest—they verify the proofs correctly. But the sequencer can always include a batch that excludes a targeted address. The only censorship resistance is the emergency exit mechanism: users can force a withdrawal through L1. But that requires paying L1 gas and waiting for the challenge period. For a DeFi user with active positions, that delay can be fatal.
Composability isn't a feature that can be added after the fact. It requires a fundamental guarantee that the sequencer cannot arbitrarily reorder transactions between different protocols. Current zkSync architecture allows the sequencer to front-run any transaction. The sequencer operates a private mempool. There is no public mempool for Layer 2 transactions. The sequencer sees all transactions before they are included. This is a classic MEV vector.
The Boojum Prover and the Validator Set
The Boojum prover is a significant engineering achievement. It reduces proof generation time and cost. But the prover is still run by a small set of permissioned validators. The contract ValidatorSet.sol holds a list of addresses that are allowed to submit proofs. The owner can add or remove validators at any time. There is no staking requirement, no bond. The current validators are four entities: Matter Labs, a research partner, and two infrastructure providers. They are all known to the team. This is a ecosystem that is secure only if the participants are honest and the multisig stays uncorrupted.
We don't have a formal security model for the validator set. How many validators need to be compromised to break the system? The answer is one: if the sequencer and the majority of validators collude, they can produce invalid proofs. The Boojum proof system is open-source, but the proving keys are generated by a trusted setup. The trusted setup was performed by a closed ceremony with 25 participants. That is a reasonable threshold, but it’s not trustless.

Contrarian: The Hidden Blind Spot
The common narrative claims that zkSync is “fully decentralized” because it has a proof system and a permissionless exit. This is a category error. Decentralization is not binary. It exists on a spectrum. The current architecture is centralized at the sequencer level, permissioned at the validator level, and upgradeable at the governance level. The roadmap says the next stage will introduce “decentralized sequencing” using a rotating set of sequencers elected by token holders. But the code for that does not exist yet. The marketing materials use the term “gradual decentralization” to justify the current centralization.
What most analysts miss is the economic incentive misalignment. The sequencer currently earns all transaction fees. Under a decentralized model, those fees would be distributed among sequencers. That reduces the revenue per sequencer. The team has not published a tokenomics model for sequencer rewards. The ZK token is used for governance, not for staking. Until the sequencer is directly incentivized by the protocol, centralization will persist.
Takeaway: The Vulnerability Forecast
The next bull run will likely expose the fragility of these centralized sequencers. A high-profile attack—a sequencer front-running a large liquidation, or a multisig compromise—will trigger a crisis of confidence in Layer 2s. The Ethereum community will demand trustless sequencing. The projects that have only PowerPoint promises will lose market share to those that implement verifiable, permissionless sequencing. The code is the only truth. And right now, the code says the sequencer is a single point of failure.
Based on my audit experience, I would forecast that within the next 18 months, at least one major Layer 2 will suffer a sequencer-related incident that causes a temporary loss of funds. The prudent investor will check the sequencer contract and the multisig governance before allocating capital. The rest will learn the hard way that “decentralized” is a process, not a label.