Monad's largest liquid-staking token, and the one NullTerminal reads directly on-chain — its exchange rate today is verifiably over 1.58 MON per shMON.
shMonad is Monad's largest liquid-staking token by TVL. Like most modern LSTs it's an ERC-4626 vault: users deposit MON and receive shMON, a share of the vault that keeps accruing staking rewards without needing to unstake — the shMON itself stays liquid and usable elsewhere in DeFi (as collateral, in swap pools, and so on) while the underlying MON keeps earning.
shMonad is one of the few Monad protocols NullTerminal indexes with zero third-party dependency: because it's a standard ERC-4626 vault, a single batched Multicall3 call reads `totalSupply()`, `totalAssets()` (MON backing the vault) and `convertToAssets(1e18)` (the live exchange rate — how many MON one whole shMON share is worth) directly on-chain. That preferred `convertToAssets` read falls back to a simple `totalAssets / totalSupply` division if the primary call ever fails inside the batch, so a partial multicall failure degrades gracefully instead of returning nothing.
The exchange rate only ever goes up as staking rewards accrue, and NullTerminal snapshots it into Postgres on an hourly cadence (idempotent per symbol-and-hour, so multiple indexer ticks within the same hour just update the same row). To compute an APY, the indexer looks up the rate from up to 7 days ago and annualizes the growth geometrically; if there isn't 7 days of history yet, or the rate happened to be flat over that window, it falls back to a 1-day window instead. If neither window shows the rate actually growing, the API returns null rather than fabricating a number — this is what lets an APY be computed honestly from real rate growth rather than an advertised or assumed figure, at the cost of showing no APY at all for the first several hours after a new LST is added.
It's worth being precise about the limits of this methodology: the indexer tracks shMON's redemption rate — how much MON your shMON is worth right now — not any native unbonding or withdrawal-delay period the underlying validator delegation might impose if you wanted to unwind all the way back to unstaked MON. Those are separate questions; the rate answers "what is my position worth," not "how fast can the whole system exit to native MON at once."
Liquid staking carries the underlying risk of Monad's own validator set — slashing or a validator-level incident would show up as a rate that stops growing or drops, not just a market-price wobble. shMON's own price on secondary markets can also trade at a discount to its true redemption value during stress, even though the underlying vault accounting is fine, simply because DEX liquidity for shMON is finite. As with any liquid-staking vault, the smart contract itself is a target — its exchange-rate mechanism is exactly the kind of surface a bug would hit.
Note: Because the rate is read live on-chain rather than trusted from an API, NullTerminal's shMonad numbers can't silently go stale the way a cached third-party TVL figure can — check the current rate on /defi.
It reads convertToAssets() directly from shMON's own ERC-4626 vault contract on-chain via Multicall, roughly every 5 minutes — there's no third-party API in the loop for shMON specifically, so the number can't go stale the way a cached aggregator figure can.
APY is computed from real observed rate growth over a historical window (up to 7 days, falling back to 1 day). Until enough rate history has accumulated, or if the rate hasn't grown over the available window, the figure returns null rather than showing a fabricated or estimated number.
No — it measures the current redemption rate (how much MON your shMON is worth right now), not any native unbonding period the underlying validator delegation might separately impose if the whole system tried to exit to native MON at once.
Sources: GET /v1/defi/staking — NullTerminal, shMonad vault (Monad Explorer)
Last reviewed 2026-07-08. More Monad research.
Monad DeFi board · Markets · Swap on NullTerminal