Skip to main content

How the Exchange Rate Is Calculated

TL;DR

shMON is not pegged 1:1 to MON. The exchange rate increases over time as staking rewards and MEV revenue accrue - a rising rate means the protocol is generating yield correctly. The protocol uses slightly different rates for deposits vs. withdrawals to prevent value extraction through precisely-timed entries and exits. Hold for at least one full epoch to earn your fair share of rewards.

The exchange rate between MON and shMON determines how much shMON you receive when depositing, and how much MON you receive when withdrawing. Understanding this rate helps you make informed decisions about timing.

The Core Concept: Equity​

The exchange rate is based on equity -the total value of MON owned by all shMON holders. Think of equity as:

Equity=What the Protocol Owns−What the Protocol Owes\text{Equity} = \text{What the Protocol Owns} - \text{What the Protocol Owes}

More precisely:

Equity=Total MON Assets−Pooled Liabilities−Isolated Assets\text{Equity} = \text{Total MON Assets} - \text{Pooled Liabilities} - \text{Isolated Assets}

What each term means:

  • Total MON Assets: Staked and liquid MON tracked by the protocol, including queued amounts
  • Pooled Liabilities: Pending traditional withdrawals, validator rewards payable, and zero-yield balances represented by hMON
  • Isolated Assets: MON belonging to validator-specific isolated positions and their exits; these assets do not back pooled shMON

From equity, the exchange rate follows standard vault math:

Exchange Rate≈EquityTotal shMON Supply\text{Exchange Rate} \approx \frac{\text{Equity}}{\text{Total shMON Supply}}

The contract also applies small virtual asset and share offsets and rounding. Use the on-chain preview functions for exact transaction quotes.

Different Rates for Deposits vs. Withdrawals​

The protocol implements an anti-manipulation mechanism: deposits and withdrawals use different equity calculations.

For Deposits​

When you deposit, the system includes all recent revenue in the equity calculation. This means the exchange rate reflects not just historical earnings, but also the rewards currently being earned in the ongoing epoch.

Effect: You receive slightly fewer shMON per MON, effectively "pre-paying" for upcoming rewards. This prevents large depositors from timing their entries right before reward distribution, extracting value from existing holders.

For Withdrawals​

When you withdraw, the system excludes unreleased pooled revenue from the equity calculation:

Excluded Revenue=Current Unrolled Revenue+Unreleased Scheduled Revenue\text{Excluded Revenue} = \text{Current Unrolled Revenue} + \text{Unreleased Scheduled Revenue}

Current revenue remains excluded until a successful global crank rolls it into the release schedule. Scheduled revenue is released over blocks, using a 50,000-block smoothing window. If prior revenue is still releasing at the next roll, the protocol can continue that schedule or restart it with the combined balance, depending on which unreleased amount is larger.

The exit rate therefore depends on both block progress and completed accounting work. It cannot be calculated reliably from the time remaining in the current Monad epoch alone. Integrations that need fresh exit quotes around an epoch boundary should call crank() until it returns true, then use the appropriate withdrawal or unstake preview.

Effect: You receive slightly fewer MON per shMON compared to the full equity value.

Why: This prevents users from depositing right before rewards arrive, holding briefly, and immediately withdrawing with their share of the rewards. It keeps rewards with long-term holders.

An Important Timing Consequence​

These different exchange rates create a scenario to understand:

If you deposit MON and then immediately initiate an unstake in the same epoch, you may receive less MON than you deposited.

This occurs because:

  1. The deposit exchange rate includes ongoing epoch rewards (higher price per shMON)
  2. The unstake exchange rate excludes those same rewards (lower value per shMON)
  3. The difference represents rewards that haven't been fully earned yet

This is intentional. The system discourages very short-term "flash staking" where someone deposits, captures a few blocks of rewards, and immediately exits. Instead, rewards flow to participants who stake for at least a full epoch cycle.

Summary​

The exchange rate mechanism serves two goals:

  1. Fair pricing: Each shMON represents a proportional share of the protocol's total equity
  2. Protection against gaming: Different rates for deposits and withdrawals prevent value extraction through precisely-timed entries and exits

The underlying math is complex, but the principle is simple: if you stake for a meaningful period, you earn your fair share of rewards. If you try to time very short-term deposits and withdrawals, the exchange rate adjustments ensure you don't profit at the expense of long-term holders.