Appearance
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/evmbalanceOfis what wallets and the app show. It isunderlying × hamsScalingFactor / 1e24.balanceOfUnderlyingis 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.00For 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/evmSee 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