Skip to main content

hMON and the Degen Pool

hMON is the tokenized Degen Pool position in shMonad. When you deposit MON into the zero-yield tranche, you receive hMON instead of shMON.

The tradeoff is simple: hMON keeps your MON principal represented 1:1, but the staking yield from that MON is donated to the pooled shMON exchange rate. That donated yield boosts returns for shMON holders.

tip

hMON does not earn staking yield for the holder. If you want yield, convert hMON into shMON. If you want to understand points exposure, see the Points page.

Key Facts at a Glance​

TokenhMON, an ERC-20 receipt for the Degen Pool / zero-yield tranche.
Contract addressesSee mainnet and testnet hMON addresses.
Backing1 hMON represents 1 MON in the zero-yield tranche.
RewardshMON holders do not receive staking yield. That yield boosts the shMON exchange rate.
BalancehMON does not rebase. Your token balance stays fixed unless you transfer, receive, deposit, or convert.
Exit PathConvert hMON to shMON, then use normal shMON unstaking paths.
PointsPoints eligibility and multipliers depend on how hMON is used. Check the current rules on shmonad.xyz/points.

hMON vs shMON​

FeatureshMONhMON
Deposit pathStandard staking depositZero-yield / Degen Pool deposit
What you receiveYield-bearing shMONStable-balance hMON
Earns staking yield?YesNo
How rewards show upshMON becomes worth more MON over timeYield is donated to shMON holders
Can transfer as ERC-20?YesYes
Can convert?Can unstake to MONCan convert to shMON

How hMON Works​

  1. Deposit MON: You deposit MON into the Degen Pool and receive hMON 1:1.
  2. Underlying MON is staked: The protocol stakes the MON through the normal shMonad validator pipeline.
  3. Yield is donated: Rewards from that MON increase pooled equity, which raises the shMON exchange rate.
  4. hMON stays fixed: Your hMON balance does not increase from rewards.
  5. Convert when you want yield: You can convert hMON into shMON at the current exchange rate.

There is no separate hMON-to-MON withdrawal path. To exit into MON, convert hMON to shMON first, then use atomic unstaking or traditional unstaking.

Why Hold hMON?​

hMON is useful when you want a transferable Degen Pool position. It can be moved, traded, supplied to DeFi protocols that support it, or converted back into yield-bearing shMON.

hMON may be relevant to points strategies, especially when deployed in DeFi. Points rules can change and may depend on how the hMON is used, so always check the current rules on the Points page instead of assuming idle hMON receives the same treatment as hMON deployed in DeFi.

Why hMON Helps shMON Holders​

hMON deposits increase the amount of MON being staked without increasing the shMON supply. Since the hMON holder gives up the staking yield, that yield accrues to the pooled equity backing shMON.

For shMON holders, this means the same number of shMON tokens share more protocol rewards. The larger the zero-yield tranche, the larger the potential boost to the shMON exchange rate.

For DeFi Integrations​

hMON is intended to behave like a standard ERC-20 surface over shMonad's zero-yield tranche.

Token behavior​

  • Name: Holistic MON
  • Symbol: hMON
  • Decimals: 18
  • Standard: ERC-20 plus EIP-2612 permit
  • No rebase: Balances are stable and do not grow from staking rewards
  • Mint path: depositToZeroYieldTranche mints hMON 1:1 against deposited MON
  • Conversion path: convertZeroYieldTrancheToShares burns hMON and mints shMON at the current exchange rate
  • No direct hMON-to-MON redemption: Convert to shMON first, then use normal shMON unstaking

Main interface​

interface IHolisticMON {
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);

function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;

function activate(address account) external;
function activate(address[] calldata accounts) external;
function isActivated(address account) external view returns (bool);
function shMonad() external view returns (address);
}

interface IShMonadZeroYield {
function depositToZeroYieldTranche(uint256 assets, address receiver) external payable;
function convertZeroYieldTrancheToShares(uint256 assets, address receiver) external returns (uint256 shares);
function balanceOfZeroYieldTranche(address account) external view returns (uint256);
function getZeroYieldToken() external view returns (address);
function globalLiabilities()
external
view
returns (
uint128 rewardsPayable,
uint128 redemptionsPayable,
uint128 totalZeroYieldPayable
);
}

Integration notes​

  • hMON.totalSupply() should match shMonad's totalZeroYieldPayable liability.
  • hMON.balanceOf(account) should match shMonad.balanceOfZeroYieldTranche(account).
  • Secondary-market pricing should account for the 1:1 MON-backed mint path, the forgone yield, and any market-implied points premium.
  • For lending markets, a liquidation path can convert seized hMON to shMON, then redeem shMON through atomic or traditional unstaking.
  • Indexers should ingest standard ERC-20 Transfer and Approval events. Legacy Degen Pool holders may become visible through one-time activation events.
  • If shMonad is closed, hMON transfers, approvals, and permits remain live, while new hMON minting through Degen deposits and hMON-to-shMON conversions are blocked.