A multi-chain token lost $292 million in 46 minutes, not to a smart contract bug, not to a novel exploit, but to a single verifier that was fed a lie.
LayerZero’s DVN (Decentralized Verifier Network) reads chain state through RPC nodes. The attacker poisoned two nodes with fabricated data, then DDoS’d the remaining legitimate nodes, forcing failover onto controlled infrastructure. The verifier attested to a fraudulent message. The destination chain executed. The bridge drained.
No Solidity bug. No reentrancy. The contracts did exactly what they were designed to do they trusted the verifier. The verifier was lying.
We pulled the full Dune dataset: 3,666 LayerZero OApps, 2,246,770 messages, 90 days of live traffic.
The numbers are alarming:
This wasn’t negligence. LayerZero’s V2 OApp Quickstart is shipped min_required_dvns = 1 as the default. Most teams deployed without changing it. 1,563 protocols are still in that configuration today.
The instinctive fix bump to min=2 is necessary but not sufficient.
81% of OApps have distinct_dvn_signers_90d exactly equal to min_required_dvns. Set min=2, you get exactly 2 signers with no rotation pool. If both operators source data from the same RPC provider, min=2 carries the identical attack surface as min=1.
The April attack didn’t target signing keys. It targeted the data that the keys were asked to sign.
Meanwhile, 98.2% of all messages ran with min_optional_dvns = 0 LayerZero's built-in defense-in-depth layer is completely ignored by nearly the entire ecosystem.
The fix requires no redeployment. It’s a config change, an email, and one engineer-week of monitoring work.
Want the full breakdown named protocols, RPC attack mechanics, signer diversity data, and the complete 90-day dataset analysis?
We’ve covered it in depth: The LayerZero DVN Security Analysis
Why is your DVN threshold still 1? was originally published in Coinmonks on Medium, where people are continuing the conversation by highlighting and responding to this story.


