The brief
Moonwell shipped a governance upgrade that changed how the protocol captures and distributes OEV, the revenue surfaced when a position gets liquidated. The upgrade was already deployed when we joined: contracts on-chain, audit clean, ready to earn.
The team had no way to see if it was actually working.
"We can read the contracts, but we can't read the protocol. Build us the surface that proves the upgrade is paying for itself, or isn't."
What we built
A purpose-built dashboard, hosted on Dune, that decomposes every liquidation event on Base and Optimism into the four flows that matter:
- Revenue captured by the protocol
- Incentives paid out to liquidators
- Net OEV per market, per chain, per day
- Liquidator concentration, who's doing the work, who's getting paid
Behind it: a pipeline of normalized liquidation events sourced from our archive nodes, a per-market revenue model, and an alerting layer that pings the team when concentration exceeds a healthy threshold.
The numbers, first 14 days
Why it mattered
Without a custom analytics surface, this would have been impossibly tedious to quantify, events span two chains, multiple markets, and a flow that splits at the contract level. The team would have known the upgrade shipped. They wouldn't have known if it was working.
The dashboard turns the upgrade into a continuous, public proof: every liquidation, every payout, on a single surface the team and the community check daily.
Stack
- Source, Datum Labs archive nodes, Base + Optimism
- Indexer, liquidation event normalization, per-market
- Warehouse, Dune-native, materialized for sub-second loads
- Surface, public Dune dashboard + private slack alerts