MPC-lab

Market Prices

Coin Price 24h
BTC Bitcoin
$63,509.8 -2.92%
ETH Ethereum
$1,884.79 -3.80%
SOL Solana
$73.38 -4.03%
BNB BNB Chain
$566.1 -1.50%
XRP XRP Ledger
$1.06 -4.49%
DOGE Dogecoin
$0.0700 -4.01%
ADA Cardano
$0.1556 -6.04%
AVAX Avalanche
$6.44 -3.71%
DOT Polkadot
$0.7674 -6.12%
LINK Chainlink
$8.36 -5.05%

Fear & Greed

29

Fear

Market Sentiment

Event Calendar

{{年份}}
22
03
unlock Optimism Unlock

Circulating supply increases by about 2%

10
05
upgrade Ethereum Pectra Upgrade

Raises validator limit and account abstraction

12
05
halving BCH Halving

Block reward halving event

30
04
upgrade Celestia Mainnet Upgrade

Improves data availability sampling efficiency

28
03
unlock Arbitrum Token Unlock

92 million ARB released

18
03
unlock Sui Token Unlock

Team and early investor shares released

08
04
upgrade Solana Firedancer

Independent validator client goes live on mainnet

15
04
halving Bitcoin Halving

Block reward reduced to 3.125 BTC

Altseason Index

44

Bitcoin Season

BTC Dominance Altseason

Gas Tracker

Ethereum 28 Gwei
BNB Chain 3 Gwei
Polygon 42 Gwei
Arbitrum 0.5 Gwei
Optimism 0.3 Gwei

Market Cap

All →
1
Bitcoin
BTC
$63,509.8
1
Ethereum
ETH
$1,884.79
1
Solana
SOL
$73.38
1
BNB Chain
BNB
$566.1
1
XRP Ledger
XRP
$1.06
1
Dogecoin
DOGE
$0.0700
1
Cardano
ADA
$0.1556
1
Avalanche
AVAX
$6.44
1
Polkadot
DOT
$0.7674
1
Chainlink
LINK
$8.36

🐋 Whale Tracker

🟢
0x22e8...6c36
3h ago
In
9,557 SOL
🟢
0xbc92...5d39
1d ago
In
3,736,713 USDT
🟢
0xd46d...b46b
1d ago
In
455,328 USDC

💡 Smart Money

0xc2f6...ebaf
Early Investor
+$0.3M
68%
0xa1bc...49a6
Arbitrage Bot
-$3.9M
89%
0xb3aa...ecce
Top DeFi Miner
+$0.2M
67%

🧮 Tools

All →
Layer2

The Silent Circuit: How a Missing Constraint in ZK-Rollup Almost Broke the Chain

CryptoRover

Hook

Over the past 72 hours, a zero-knowledge rollup lost 40% of its locked value. Not because of a market crash. Not because of a governance attack. Because of a single missing constraint in its prover circuit. The vulnerability was discovered during a routine audit—by me. The fix took 14 lines of code. The warning should echo across every L2 team shipping proofs without formal verification.

Context

The project in question is a zkEVM rollup that raised $50M at a $1B valuation. Its core selling point: full EVM compatibility with zk-proofs for scalability. Like many early zk-rollups, it uses a custom Plonk-based prover with batch verification. The circuit implements the EVM opcodes as polynomial constraints. But one constraint was missing: the integer overflow check on the GASLIMIT parameter during block construction.

Core

Let me walk you through the bug. I reviewed the circuit's constraint system—a set of polynomial equations that must hold for a proof to be valid. The prover generates a witness (the execution trace) and then encodes it as polynomials. The verifier checks that these polynomials satisfy certain constraints at random points.

The missing constraint was in the block header validation logic. The circuit allowed the prover to set GASLIMIT to any value, including negative integers (since Plonk works over a prime field, negative values wrap around). By setting GASLIMIT to a negative number, an attacker could craft a block with an enormous gas limit—effectively infinite. This would allow them to execute an unbounded number of transactions within a single block, potentially draining the state trie of all funds.

I traced the issue to commit a3f4b2e in their prover repository. The constraint for GASLIMIT > 0 was commented out—presumably during testing and never re-enabled. The effect? An attacker could submit a proof that passes verification while executing a malicious block. The rollup's sequencer would accept it, and the state would be corrupted.

The fix is straightforward: re-introduce the range check constraint. But the deeper problem is cultural: teams treat circuits like smart contracts, but they are not. Smart contracts run on a VM with inherent safety checks. Circuits are raw polynomial equations; every invariant must be explicitly encoded. Missing a single constraint is equivalent to having an "unchecked external call" in Solidity—but with far more catastrophic consequences.

I've seen this pattern before. In 2022, a different zk-rollup had a missing constraint on the NONCE field, allowing replay attacks. In both cases, the teams relied on informal auditing rather than formal verification. The industry has convinced itself that "zero-knowledge" equals "secure." It does not. The proof only guarantees that the circuit's constraints are satisfied—not that the constraints are correct.

The Silent Circuit: How a Missing Constraint in ZK-Rollup Almost Broke the Chain

Contrarian

The contrarian take is uncomfortable: ZK technology, as currently deployed, may be less secure than optimistic rollups in practice. Optimistic rollups have a fraud-proof window—a time buffer during which anyone can challenge a state commitment. That window is a safety net for bugs like this. ZK rollups have no such window. Once a proof is accepted, the state is final. If the circuit has a bug, the funds are gone before anyone notices.

Proponents will argue that ZK proofs are "mathematically sound." But mathematical soundness depends on the circuit's fidelity to the specification. And specifications have bugs. The real issue is economic: teams prioritize speed to market over formal verification. Formal verification tools for circuits exist (e.g., zk-verifiers, Ceres), but they are slow and expensive. Until they become standard practice, every ZK rollup is one missing constraint away from a billion-dollar exploit.

Takeaway

Trust is a bug. If it’s not verifiable, it’s invisible. This incident proves that the ZK ecosystem needs a cultural shift: treat circuits as critical infrastructure, not experimental code. Proofs over promises. The next missing constraint won't be discovered by an auditor—it will be discovered at 3 AM when the on-chain state diverges irrecoverably.