The mechanism,
with numbers.
NEAR OHM is the 2021 OlympusDAO design run on NEAR with NEAR as the reserve asset. Three parts: a token that rebases when staked, bonds that sell the token below market for NEAR, and a treasury that holds the NEAR. This page is the whole mechanism with every parameter named.
Overview
- NOHM is the protocol token. Fixed supply of 1,000,000,000 at launch.
- sNOHM is staked NOHM. Your sNOHM balance grows every epoch without any action.
- Bonds sell NOHM for NEAR below the market price, vesting linearly over 5 or 14 days.
- The treasury is a NEAR account. Bonds fill it. Its balance is read from the chain.
The index and rebases
Time is divided into epochs of 8 hours. At the end of each epoch the protocol rebases: the index multiplies by 1 + r, where r is the per-epoch rate. Staked balances are stored as shares (agons), and a balance is always shares × index, so every staker's balance rises at once, with nothing to claim.
// per-epoch rate from the target APY
epochs_per_year = 31,557,600 / 28,800 = 1,095.75
r = (1 + APY/100) ^ (1 / epochs_per_year) − 1
// at APY 12,000%
r = 121 ^ (1/1095.75) − 1 ≈ 0.4388% per epoch
// rebase
index ← index × (1 + r)
your_sNOHM = your_shares × index
Between rebases the app shows a live index that interpolates linearly through the epoch, so the number on screen moves every second. The ledger only changes at the rebase.
Staking
Stake moves NOHM from your desk into shares: shares = amount / index. Unstake does the reverse at the current index. There is no lock and no fee. Your next reward is staked × r and lands at the next rebase. Bond payouts can be claimed straight into your stake with Claim & stake.
Bonds
A bond is how NOHM enters circulation and how NEAR enters the treasury. You pay NEAR from your desk and receive NOHM at a discount to the market price, vesting linearly.
| Market | Discount | Vesting | Minimum |
|---|---|---|---|
| NEAR | 6.5% | 5 days | 0.5 NEAR |
| NEAR · 14 day | 12% | 14 days | 0.5 NEAR |
bond_price = nohm_price × (1 − discount)
payout = near_paid × near_usd / bond_price
// 10 NEAR at $3.00, NOHM at $0.01, 6.5% bond
bond_price = 0.01 × 0.935 = $0.00935
payout = 10 × 3.00 / 0.00935 = 3,208.6 NOHM, vesting over 5 days
Vested NOHM is claimable at any time: claimable = payout × elapsed/vest − already_claimed. Claim puts it on your desk; Claim & stake puts it straight into sNOHM at the current index.
The treasury
The treasury is a single NEAR account. Every deposit is a NEAR transfer into it. Nothing leaves it except manual payouts of queued withdrawals. The treasury figure in the app is the larger of the on-chain balance (read with view_account every 30 seconds) and the sum of verified deposits, so a payout in flight never shows the treasury lower than the deposits behind it.
Backing and runway
backing_per_nohm = treasury_near × near_usd / 1,000,000,000
rewards_per_day = total_staked × ((1 + r) ^ 3 − 1) × nohm_price
runway_days = treasury_usd / rewards_per_day
Backing is what each NOHM would receive if the treasury were distributed today. Runway is how many days the treasury could fund the current emission at today's price. Both are shown on the dashboard and both move every time NEAR moves.
NEAR deposits
- Connect with your NEAR account id. The app checks the account exists on mainnet.
- On My desk, copy the treasury account and send NEAR to it from any NEAR wallet (MyNearWallet, Meteor, HERE, Nightly, Sender, Ledger). Minimum
0.5 NEAR. - Press I sent it. The server asks the NEAR indexer for transfers from your account to the treasury, then verifies each one directly against NEAR RPC: signed by your account, received by the treasury, final, and a plain
Transferaction. Only then is the amount credited.
Every transaction hash is credited at most once. If the indexer is slow, paste the hash into Credit my deposit and the same RPC verification runs. The signer check is the guard: a hash that was not signed by your account is refused whoever pastes it.
Withdrawals
Queue a withdrawal from My desk. NEAR: minimum 0.5, leaves your desk immediately, paid by hand from a cold wallet normally within 24 hours, payout hash written next to the request. NOHM: opens when the NEP-141 token is live; until then NOHM lives on the ledger and earns as sNOHM.
(3,3)
| you stake | you bond | you sell | |
|---|---|---|---|
| they stake | (3,3) | (1,3) | (−1,1) |
| they bond | (3,1) | (1,1) | (−1,1) |
| they sell | (1,−1) | (1,−1) | (−3,−3) |
Staking compounds the index for everyone. Bonding deepens the treasury for everyone. Selling helps nobody. The best outcome for both players is that both stake.
Parameters
| Parameter | Value | Meaning |
|---|---|---|
| REBASE_SEC | 28,800 | Epoch length, 8 hours |
| APY_TARGET | 12,000% | Displayed and emitted; sets r |
| TOTAL_SUPPLY | 1,000,000,000 | NOHM supply |
| TOKEN_PRICE | $0.01 | NOHM price until a pool is read |
| Bond discounts | 6.5% / 12% | 5-day / 14-day markets |
| MIN_DEPOSIT | 0.5 NEAR | Smallest credited transfer |
| MIN_BOND | 0.5 NEAR | Per bond |
| MIN_WITHDRAW | 0.5 NEAR | Per request |
| NEAR price | Yahoo NEAR-USD | Refreshed every minute |
| NOHM price | DexScreener (near) | Once NOHM_MINT is set |
HTTP API
| Route | Body | Returns |
|---|---|---|
| GET /api/metrics | — | Index, epoch, APY, treasury, backing, runway, bonds, leaderboard, tape |
| POST /api/resolve | wallet | Whether the account exists on NEAR mainnet |
| POST /api/account | wallet | Desk: NEAR, NOHM, staked, bonds, history, queue |
| POST /api/deposit/where | wallet | Treasury account and minimum |
| POST /api/deposit/scan | wallet | Finds and credits new transfers from you |
| POST /api/deposit | wallet, tx | Credits one verified transfer |
| POST /api/bond | wallet, market, amount | New bond and desk |
| POST /api/claim | wallet, autostake | Claimed NOHM |
| POST /api/stake · /api/unstake | wallet, amount | Desk |
| POST /api/withdraw | wallet, asset, amount | Queued item |
curl -X POST https://YOUR-DOMAIN/api/bond \
-H 'content-type: application/json' \
-d '{"wallet":"yourname.near","market":"near5","amount":10}'
$NOHM
NOHM is a NEP-141 token on NEAR. Until the token contract is live the ledger is the source of truth for balances and staking; once it is live, NOHM withdrawals from the desk are paid on-chain and the pool price replaces the launch price everywhere. The contract id is shown at the top of the app once set.
What can go wrong
- The rate comes down. APY is a parameter. As staked supply grows it is lowered to protect runway. The number shown is current, not promised.
- NEAR moves. Backing and runway are priced in dollars through NEAR. A drop in NEAR lowers both.
- Bond discounts are versus a price. Before a pool exists the price is the launch price. After, it is the pool price and can move during your vest.
- Withdrawals are manual. Paid by a person from a cold wallet, normally within 24 hours, never instantly.