Monad · Developer Tooling

Is your contract killing parallelism?

Paste a block number. pev reconstructs the execution graph, surfaces storage contention, and tells you exactly which slots are costing you throughput.

killing parallelism right now:
Perpl1,498 confShMonad (shMON)367 conf0xa6afd3…d132345 conf
Latest analyzed block
#81,439,29011 txs · 0x8e982b54…051be7
Parallelism
82/100
Blocked
14%
Waves
2
Conflicts
1
Bottleneck:Perpl·slot 0xd98b3c10…67b8·4 txs touched · 1 conflict
click to inspect →
Auditing your own contract? Paste its address in the search above to see its parallelism profile.
Recent activity
connecting
#81,439,2890x28b96d…e1e69 tx89/1000 conf5m ago#81,439,2880xacfbbb…b87712 tx83/1003 conf5m ago#81,439,2870x2b8340…1cf313 tx85/1002 conf5m ago#81,439,2860x125c99…3f5b8 tx50/1006 conf6m ago#81,439,2850x274a81…bf7013 tx85/1001 conf6m ago#81,439,2840xf3b712…9ad312 tx75/1003 conf6m ago#81,439,2830xf32c89…7ec421 tx76/10013 conf6m ago#81,439,2820x378379…d6ab16 tx88/1002 conf6m ago#81,439,2810x012de1…8f5d22 tx68/10028 conf6m ago
How Monad works
Parallelism, in plain words.

Monad doesn't process transactions one at a time. It runs them in parallel, many at once, across separate execution lanes. The catch: when two transactions touch the same storage slot in the same block, the chain has to run one first and re-execute the other once it finishes. So the shape of your contract decides how parallel the chain can be. Contracts with isolated state (per-user balances, sharded counters) parallelize cleanly; contracts with hot shared state (a single global counter, a shared queue) become the chokepoint everyone else waits on.

What we measure
Parallelism Score
Theoretical speedup vs. serial execution, on a 0-100 scale. Higher means the same work could finish in fewer rounds.
Execution Waves
Minimum number of sequential rounds the block needs because of storage conflicts. Lower is more parallel.
Hot Storage Slots
Storage slots touched by multiple txs in the same block, the bottlenecks.
What this is, and isn't

Every metric on this page is computed from real prestateTracer output. We show theoretical parallelism, the maximum speedup the block's conflict structure allows, not what Monad's scheduler actually decided. That's internal and not exposed via RPC, so we don't fake it. Method names are decoded via the 4byte directory when a selector has been submitted there; otherwise we show the raw 4-byte hex. Contract names come from Sourcify when verified, coverage on Monad mainnet is still early.