Skip to content

How to read your rebasing balance

Goal: know your true position when the displayed balance moves every rebase. This assumes you already hold HAM.

See your two balances

bash
# display balance (fragments, 18 dec) — changes every rebase
cast call $HAM "balanceOf(address)(uint256)" $YOU --rpc-url https://rpc.hyperliquid.xyz/evm

# underlying share (internal units, 1e24) — only changes when you send/receive HAM
cast call $HAM "balanceOfUnderlying(address)(uint256)" $YOU --rpc-url https://rpc.hyperliquid.xyz/evm
  • balanceOf is what wallets and the app show. It is underlying × hamsScalingFactor / 1e24.
  • balanceOfUnderlying is the honest measure of your share. If it's unchanged between two points in time, a rebase did not dilute or grow your share — only the unit count moved.

Check whether your share actually grew

Your share only increases by receiving HAM — e.g. claiming farm rewards. To verify rewards landed (rather than a rebase just inflating the display), compare balanceOfUnderlying before and after getReward(). A rebase alone leaves it flat.

Estimate USD value

In USD mode the protocol targets $1.00 per HAM, so a quick estimate is:

USD value ≈ balanceOf(you) / 1e18   ×   $1.00

For the live price (which drifts within the ±5% deadband and during convergence), read the composed exchange rate from the rebaser and divide by 1e18 for USD-per-HAM:

bash
cast call $REBASER "getCurrentExchangeRate()(uint256)" --rpc-url https://rpc.hyperliquid.xyz/evm

See rebase history

Each rebase increments epoch and emits RebaseExecuted(epoch, exchangeRate, targetRate, supplyDelta, timestampSec) (USD mode also emits UsdPegPriceComputed). Query those events, or read the current epoch and hamsScalingFactor:

bash
cast call $REBASER "epoch()(uint256)"          --rpc-url https://rpc.hyperliquid.xyz/evm
cast call $HAM     "hamsScalingFactor()(uint256)" --rpc-url https://rpc.hyperliquid.xyz/evm

HAM // Elastic supply pegged to $1.00 · Not financial advice.