About MonadPulse

What this is, where the data comes from, and how it works

What is MonadPulse?

MonadPulse is an independent analytics platform for the Monad network. It shows what no standard block explorer does: validator performance patterns, health scores, block production anomalies, gas trends, and real-time alerts.

Built by shadowoftime, an independent Monad validator based in Sydney, Australia. The platform runs on the same server as the validator node, pulling data directly from the local RPC with zero external dependencies.

How does Health Score work?

Each validator gets a score from 0 to 100 recalculated every hour. The score is a weighted composite of five factors:

40% Uptime Block production rate relative to the top producer. More blocks proposed = higher score.
20% Block Quality How close avg block time is to the target (~400ms). Consistent timing = higher score.
15% Upgrade Speed How quickly the validator updates to new client versions. Will be fully active when more upgrades happen.
15% Stake Stability Whether the validator maintains or grows delegations. Will activate when staking precompile exposes more data.
10% Age How long the validator has been active. Maxes out at 30 days. Longevity signals reliability.

Color coding: green (80+) = excellent, orange (50-80) = moderate, pink (<50) = needs attention.

Where does the data come from?

Block data Local Monad node RPC (eth_getBlockByNumber) — every block, real-time
Epoch data Staking precompile (0x...1000) getEpoch() — checked every 5 minutes
Validator names github.com/monad-developers/validator-info — SECP pubkey to EVM address mapping
Client versions github.com/category-labs/monad releases API — checked hourly
Mainnet data Public RPC (rpc.monad.xyz) — rate-limited, best-effort
Staking events Staking precompile event logs via eth_getLogs — rewards, delegations

What are the Alerts?

MonadPulse monitors the network and generates alerts for notable events:

Slow blocks (>5 seconds) — something unusual happened with the proposer or network.
New epochs — boundary block reached, validator set may have changed.
TPS spikes — transaction volume >2x the 24h average.
New client releases — critical for VDP validators (48h update window).

All alerts are also sent to the public Telegram channel. Subscribe to get notified instantly.

Technical stack

Collector: Python asyncio service pulling blocks in real-time from local Monad RPC. Runs as systemd unit with rate limiting, graceful shutdown, and automatic backfill.
Database: PostgreSQL 16 with separate tables for blocks, epochs, health scores, gas stats, and alerts. All tables have a network column for testnet/mainnet separation.
API: FastAPI with async PostgreSQL queries. Rate-limited at nginx level (30 req/s).
Frontend: Vanilla HTML/JS with Chart.js. No framework, no build step. Dark theme with Monad brand colors.
Infra: OVH Advance-4, AMD EPYC 4585PX, 64GB RAM, 4x NVMe. Sydney, Australia.

Open source

MonadPulse is open source under the MIT license.
github.com/ShadowOfTime1/monadpulse