Everything the Floor puts on chain, by name.
The Floor is one Move module, pad, published under the address below. Tokens are plain fungible assets (0x1::fungible_asset, 6 decimals), so balances index like any other asset. Prices, trades and the floor come from the module's events and view functions; this page lists all of them with their fields and units. Names do not change between testnet and mainnet. Upgrades only add: a new event, a new view or a new field, never a renamed one, and features() tells you which upgrade is live.
Where
- Network
- reading…
- Module
- reading…
- Upgrade live
- reading…
- Vault account
- reading…
- Token metadata
- each token's
metaaddress is its fungible-asset metadata object;token_id(admin, meta)maps it back to the id - Views
- every view takes the module address as its first argument,
admin; call them through/rpc/v3/viewas usual
Units and stages
- SUPRA amounts are in octas,
u64, 8 decimals. Token amounts are raw units, 6 decimals. Supply is fixed:1,000,000,000tokens =1e15raw; 80% is sold on the curve, 20% seeds the pool at graduation. - Times are Unix seconds. Shares are basis points (
bps, 10,000 = 100%). Prices in dollars are not on chain: the module reads SUPRA/USD from Supra's oracle only to price the launch fee and the graduation target. - Price on the curve =
vs / vt(octas per raw token). In SUPRA per token:(vs / 1e8) / (vt / 1e6). After graduation, price =pool_supra / pool_tokensthe same way (stages 4 and 5 read the pool's live reserves on Atmos or the WARs DEX). - Floor =
vault / (circulating + pool_tokens): what one token redeems for, in SUPRA. It never falls. - Market cap, as the site shows it = price × (circulating + pool_tokens); a rescued token is valued at the floor.
| stage | Meaning | Trades through |
|---|---|---|
| 1 | On the curve, raising SUPRA toward target | buy, sell, redeem |
| 2 | Graduated into the module's own locked pool (networks without Atmos Swap) | pool_buy, pool_sell, redeem |
| 3 | Rescued by the guardian: frozen, only redeeming at the floor works | redeem |
| 4 | Graduated into an Atmos Swap pool whose LP tokens the module holds forever | Atmos Swap's own entry functions, plus redeem here |
Events
All emitted by pad with #[event], type <module>::pad::<Name>. The ones a portfolio needs are the first five.
| Event | Fields | What it says |
|---|---|---|
| Launched | id, creator, meta, name, symbol, target, fee, time | A new token. target is the SUPRA (octas) the curve raises before graduating; fee the launch fee paid. |
| Traded | id, who, buy, stage, supra, tokens, vault, circulating, vs, vt, pool_supra, pool_tokens, time | One buy (buy = true) or sell. supra is the gross SUPRA paid or received including fees and any launch tax; tokens what moved. Stage 1 trades carry the curve after the trade in vs/vt (spot price = vs/vt) and zeros in the pool fields; stage 2 trades carry the pool reserves after the trade in pool_supra/pool_tokens and zeros in vs/vt. vault and circulating give the floor after the trade. |
| Redeemed | id, who, tokens, supra, vault, circulating, time | A holder burned tokens and took supra from the vault, their exact share at the floor. |
| Graduated | id, pool_supra, pool_tokens, burned, vault, time | The curve finished and a locked pool opened inside the module (stage 2). burned is unsold stock destroyed. |
| AtmosGraduated | id, pool, supra, tokens, lp, fee_bps, time | The curve finished and the pool went to Atmos Swap at address pool (stage 4). Trades from here on are Atmos's own events on that pool. |
| DexGraduated | id, pool, supra, tokens, lp, fee_bps, time | The curve finished and the token's reserved pool on the WARs DEX (wars_dex::wars_pool, address pool) was seeded (stage 5). Trades from here on are the DEX's Swap events on that pool. |
| Locked | id, creator, tokens, until, time | The creator locked tokens in the module until until. Count them as the creator's, not the vault's. |
| Unlocked | id, creator, tokens, time | The lock ended and the tokens went back to the creator. |
| StrandedVault | id, to_reserve, to_prizes, prizes, time | Upgrade 20: a vault nobody held a claim on (every holder had sold back to the curve) was split by the next buy: to_reserve joined the curve reserve, to_prizes went to the prizes wallet instead of to that buyer. |
| Harvested | id, who, lp, supra, to_vault, to_platform, burned, kept, time | Atmos pool fees were collected: to_vault raised the floor; burned tokens left the supply. |
| Rescued | id, vault, circulating, time | The guardian froze the token (stage 3); only redeeming works from now on. |
| BlockChanged | who, on, time | The guardian put a wallet on the block list (on = true) or took it off. A blocked wallet's launches, trades and locks abort with 0x50015; redeem still works. The list has no effect once the guardian has ended. |
| SettingsChanged, CapsChanged, LaunchTaxChanged, RescueDaysChanged, AtmosChanged, GuardianChanged, OperatorProposed, OperatorChanged | the new values | Platform settings. Nothing to do with balances; useful only if you show the rules. |
View functions
| View | Returns |
|---|---|
| features() | The upgrade number live on this network (the operator console shows it). The only view without admin. |
| config(admin) | (operator, platform, prizes, launch_cents, grad_cents, paused, count, vault_account, all_paused, guardian_until). count is how many tokens exist: ids run from 0 to count − 1. |
| rules() | (SUPPLY, CURVE_STOCK, VAULT_BPS, FEE_BPS, EARLY_SELL_BPS, EARLY_SELL_SECS, WALLET_CAP, POOL_FEE_BPS, MIN_BUY): the constants. |
| token(admin, id) | One TokenView: id, creator, meta, name, symbol, uri, created, stage, v0, vs, vt, target, vault, circulating, pool_supra, pool_tokens, burned, volume, trades, creator_paid, supra_price, early_sell_bps, stock. Price and floor come from this alone (formulas above). v0 is the virtual SUPRA at launch, so vs − v0 is what the curve has raised. |
| tokens(admin, from, to) | A page of TokenView, ids from up to but not including to. Page by 50. |
| token_id(admin, meta) | The id for a fungible-asset metadata address: how to recognise a Floor token in a wallet. |
| details(admin, id) | The creator's description and links. |
| extras(admin, from, to) | Per token: cap_bps (the wallet cap fixed at launch) and the creator's lock (lock_creator, lock_tokens, lock_until). |
| taxes(admin, from, to) · tax_now(admin, id) | Each token's launch tax terms (bps, secs), and the tax a buy pays right now in bps (0 once the window is over). |
| blocked(admin) | The guardian's block list, vector<address>; empty once the guardian has ended. |
| caps(admin) · launch_tax(admin) · rescue_days(admin) · rescue_until(admin, from, to) | The platform's current settings and each token's rescue deadline. |
| atmos_config(admin) · atmos_pools(admin, from, to) | Whether graduations go to Atmos, the fee split, and every stage-4 (Atmos) and stage-5 (WARs DEX) pool with its LP, reserves and fees pending. |
| dex_config(admin) | (on, fee_bps): whether new tokens get a reserved WARs DEX pool at launch (stage 5 at graduation) and its fee tier. The pool itself is wars_dex::wars_pool::pool_address(supra_asset(), meta). |
| quote_buy(admin, id, supra) · quote_sell(admin, id, tokens) · quote_redeem(admin, id, tokens) | What a trade gives right now; quote_buy returns (tokens, refund), the refund being SUPRA that would not fit before graduation. |
| launch_quote(admin) | (fee, gross, price): what a launch costs now and the oracle price used. |
Entry functions
For recognising transactions by payload. Every one takes admin (the module address) after the signer.
| Function | Arguments after admin | Emits |
|---|---|---|
| launch_and_buy | name, symbol, uri, description, labels, urls, supra, min_tokens, lock_days | Launched, then Traded if supra > 0, then Locked if lock_days > 0 |
| launch_with · launch | name, symbol, uri (+ description, labels, urls) | Launched |
| buy · sell | id, supra, min_tokens · id, tokens, min_supra | Traded (stage 1); a buy that completes the curve also emits Graduated, AtmosGraduated or DexGraduated |
| pool_buy · pool_sell | same as buy and sell | Traded (stage 2) |
| redeem | id, tokens | Redeemed |
| lock · unlock | id, tokens, lock_days · id | Locked · Unlocked |
| harvest · harvest_all · harvest_range | id · none · from, to | Harvested, one per pool |
| set_blocked | who, on | BlockChanged (guardian only) |
| set_settings, set_caps, set_launch_tax, set_rescue_days, set_atmos, set_dex, set_operator, pause_all, rescue, renounce_guardian | operator only (set_operator proposes; accept_operator from the proposed wallet moves the role) | the matching settings event; rescue emits Rescued |
The site's API
Plain JSON, no key, read from the same server as this page. It is a convenience over the views above, kept by our server: trades it has seen since launch, hourly price history, holders. Raw amounts come as strings (octas and raw units) next to SUPRA floats for display. Please poll no faster than every 20 seconds; that is what the site itself does.
| Route | Gives |
|---|---|
| GET /api/floor | Every token with price, floor, market cap, progress, the creator's lock, the launch tax and the last trade, plus module, features, supraUsd and the platform settings. |
| GET /api/floor/token?id=N · ?meta=0x… | One token with its details, its last 200 trades and hourly [time, price, floor] history. |
| GET /api/floor/trades?id=N&before=T&limit=2000 | Every trade of a token, newest first, paged by time. A stage-2 trade carries ps/pt, the pool reserves after it. |
| GET /api/floor/holders?id=N | The top 10 holders with balances, the pool's share, the lock, and wallets never seen trading. |
| GET /api/floor/quote?id=N&side=buy|sell|redeem&amount=raw | The module's own quote, as the trade box shows it. |
GET /api/floor/token?id=0 → reading a sample…
Promises
- Event, view and field names on this page are the ones mainnet will carry. Upgrades add, never rename or remove; each one bumps
features(). - Token ids are dense: 0 to
count − 1, never reused. A token'smetaaddress never changes. - The vault only grows, so a floor you computed yesterday is a lower bound today.
- Questions or a field you need: supwars.fun.