How Racks works
Racks lets you trade where hardware prices are heading, starting with GPU rental. Every contract is capped: a buyer can lose at most what they pay, and a writer at most $12 less that price.
Each market is an index built from public prices. H100 and B200 track what it costs to rent NVIDIA GPUs by the hour. You buy Up if you think the price will rise by settlement, or Down if you think it will fall. Everything runs on Robinhood Chain and settles in USDG.
How a contract works
Each period opens at 100: the index measures how far prices have moved since the open, in percent. 104.21 means prices are up 4.21%.
Up
Pays $1 for every point above 100 at settlement, up to $12 (at 112 or higher).
Down
Pays $1 for every point below 100 at settlement, up to $12 (at 88 or lower).
Every month and every week the index starts over at 100, from prices at that moment, so a contract only counts the move during its own period. If H100 rental prices rose 4% in September, October still opens at 100, and October’s Up pays only for what H100 does from Oct 1.
A weekly contract settles on the index’s last value. A monthly contract settles on the month’s TWAP: the mean of the index at the end of every hour of the month.
A contract costs somewhere between $0 and $12, set by the market. You can sell it any time before settlement, or hold it and claim the payout after.
Example
H100 opens October at 100. You buy 10 H100 Up at $2.50 each ($25). If H100 settles at 106, each pays $6: you get $60. If it settles at 100 or lower, they pay nothing and you lose the $25. Above 112 they pay the full $12 each.
Expiries
Opens Monday 00:00 UTC and settles the next Monday 00:00 UTC, on the index’s last value. The vault stops quoting a week’s contracts in its last 12 hours (from Sunday 12:00 UTC), when the result is nearly known; they still trade on the order book until the end.
A weekly contract’s time value is priced on trading time where its index rests at weekends: B200’s sources move about a third as much on a Saturday or Sunday as on a weekday, so its weekly contracts count a weekend hour at 0.3 of a weekday hour (weekday hours count more, so a whole week is still seven days). On a Friday evening a B200 weekly carries correspondingly less time value. H100’s weekly contracts are on calendar time.
Opens on the 1st and settles at 00:00 UTC on the 1st of the next month, on the month’s TWAP (see Settlement). Every market has monthly contracts.
Pick the expiry with the dropdown next to the market on the trade page.
Markets
H100 and B200
The Racks H100 index and the Racks B200 index follow what an NVIDIA H100 or B200 rents for by the hour. Each counts four published rates: Compute Desk’s US 1-year desk rate, Liquid Compute’s US reference, Silicon Data’s rental index for neo-clouds and Ornn’s OCPI of on-demand rentals. Each is compared with where it stood when the period opened.
The Racks H100 index follows the geometric mean of four published H100 rental rates: Compute Desk, Liquid Compute, Silicon Data and Ornn’s OCPI. The Racks B200 index follows the geometric mean of four published B200 rental rates: Compute Desk, Liquid Compute, Silicon Data and Ornn’s OCPI.
The price in $/hour is the geometric mean of the four prices when the period opened, moved by the index: while all four count, the geometric mean of the four prices now, so it moves with what contracts pay.
Each index has its own page with its price now and its history: H100 and B200.
B300
The Racks B300 index follows what an NVIDIA B300 rents for by the hour. It counts two published rates: Compute Desk’s US 1-year desk rate and Silicon Data’s rental index for neo-clouds. Each is compared with where it stood when the period opened.
The Racks B300 index follows the geometric mean of two published B300 rental rates: Compute Desk and Silicon Data. Each is one half while both count, and the index needs both live, or it holds its level.
The price in $/hour is the geometric mean of the two prices when the period opened, moved by the index: while both count, the geometric mean of the two prices now, so it moves with what contracts pay.
B300’s weekly contracts count a weekend hour at 0.2 of a weekday hour. Its page: B300.
RAM and NAND Coming soon
Memory and flash storage prices.
The oracle
An oracle computes each index from public prices and posts it on-chain. The rules are fixed and nothing is estimated:
- ReadFour published ratesCompute Desk, Liquid Compute, Silicon Data, Ornn OCPI
- ComputeThe indexEach rate against its value at the open
- PostOn-chainWith an evidence file of every price behind it
- SettleThe resultFinal after a challenge window
Every post comes with an evidence file listing every price that went into it, and its hash is stored on-chain, so anyone can recompute the number. On each market’s page in the app, “How this number was computed” opens the latest one.
Settlement
Weekly contracts settle on the index at 00:00 UTC on the Monday they end: each source at its latest daily price for the week’s last day.
Monthly contracts settle at 00:00 UTC on the 1st of the next month, on the month’s TWAP: the mean of the index at the end of every hour of the month, each source at its daily price.
Each hourly value is stored once and never revised, and the settlement’s evidence file lists every one.
While a month runs, the level posted on-chain is its expected settlement: the hours so far at their values and the hours left at the index now.
When a period ends, its result is put forward and can be challenged for a set time; after that it is final and holders can claim their payouts in the app. A result is accepted only inside the levels posted during the period, 1.5 points either side: nobody, the team included, can settle outside them. And if nothing has settled 7 days after the period ends, anyone can settle it at the last level posted.
The Racks H100 Index and the Racks B200 Index
Each week’s index starts at 100. The Racks H100 Index and the Racks B200 Index chain the weeks into one long series, from 100 at the open of the week of October 5, 2026, the first full week with prices from all four sources: 100 × the product of each closed week’s final value ÷ 100, times the running week’s index ÷ 100, so it moves with every post.
Every week counts by the geometric mean, and a chain of geometric means of changes is the geometric mean of the total changes, so the series has no drift: while the same four sources count, it is the geometric mean of their prices’ changes since the base, however many weeks it spans. Each week counts its own sources from its own open, so a source joining or leaving at a week’s start moves nothing.
The weeks before launch are back-calculated with the same rule from the oracle’s own stored prices, not from the levels posted then, and are marked back-calculated. From launch, each week’s link is its result as settled on-chain.
The Racks B300 Index chains B300’s weeks the same way, from 100 at the open of the week of November 3, 2025; its first move counts from November 4, the first day a stored value counts. Its weeks before the week of October 12, 2026 are back-calculated from the two rates’ published histories. It follows Compute Desk alone through the week of September 28, 2026 (that week began before October), and both rates from the week of October 5, its first week with two; the index for October itself counts both from October 1.
Index governance
Trading
Large orders move the price along the pool: check the average price and price impact in the order panel before you trade.
For agents
A server at /mcp reads the same market feed this site shows: listed contracts, the index, the published history window, and quotes for one contract or, given a count, walked through the pool's depth with the base fee included and no better than fair value. Its calculators size a hedge and tabulate the payoff. The numbers come from the server, not from the model.
The address is https://app.racks.bid/mcp. The transport is Streamable HTTP, POST only, with no SSE stream. For example:
claude mcp add --transport http racks https://app.racks.bid/mcp
Buy, write and redeem return an unsigned call: the function, its arguments and the contract address. Encode each call with the contract's ABI and sign it with your own wallet, or make the same trade in the app. No tool sends a transaction. A buy is filled from the pool only, and does not take a resting order; a buy for more than the pool can fill is refused, with how many it can fill and their cost.
A write is one path, locking the collateral or selling in the same call, never both. The sale path sends no bid ids, so it sells to the pool only and fills no resting bid.
The same limits as the contracts still apply. There is no cover past 88 or past 112. The index can differ from your own price, and the hours you hedge can differ from the hours you use. That text is also the racks://terms resource.
Vault
The vault is the other side of every trade. Deposit USDG to back the markets: it earns their fees, and its value moves with them.
Deposits and withdrawals
Deposit USDG into the liquidity vault to back the markets. The vault offers every contract and bids as Trading (above) says, earns 80% of the trading fees, the edge between its buy and sell prices and the entry and exit fees on deposits and withdrawals, and takes the other side of trades, so its value goes up and down with the markets. You receive vault shares and can withdraw your share 7 days after your latest deposit (each new deposit starts the 7 days again).
Withdrawals are paid from the vault’s cash; when that’s short, the withdrawal pulls the vault’s quotes and turns its unsold contracts back into cash as it pays. Only the money backing contracts traders hold has to wait, until they settle or are sold back. Contracts the vault bought from writers wait too, until it sells them or they settle.
A withdrawal also has to leave every contract traders hold within 15% of what stays in the vault, the same limit the vault writes under, so money that leaves can’t leave the rest holding more of one contract than that; the part it can’t take yet waits until those contracts settle or are sold back.
Around a period’s settlement the vault is valued with care, so nobody trades it around a result that’s already public. A pause stops withdrawals until it ends.
How the vault’s risk is limited
The vault’s risk has limits. It can’t write more of any one contract than 15% of its value covers: that’s fixed in the contract. Its market maker also keeps what the vault could owe within 10% of its value on any one contract, 15% on a market’s worse side (its Up or its Down contracts) and 25% on all the markets’ worse sides together, counting what it has sold and not bought back; it makes no offer past them.
The pools themselves limit what trades can take from the vault, whoever sets its quotes: what it pays out for one contract, net of what traders pay it, stays within 15% of its value, and within 25% for all contracts together; a sale past that is refused. A contract’s pool stops trading when its period ends, and also while its index level hasn’t been posted for 6 hours (the keeper posts it every hour).
Coin fees and the $RACKS buyback
The coin fee, the fee Racks earns on every trade of $RACKS, is split three ways. A fifth is taken in $RACKS itself, at the trade, on buys and on sells: half of it is burned and half goes to stakers. The rest goes to the fee router, and anyone can trigger its claim: of the whole fee, 70% is added to the vault as permanent liquidity and 10% funds operations. 20% of every trading fee buys $RACKS back as well, half burned and half to stakers, so the coin tracks the platform.
The operations share is capped at 10% of the fee in the contract (it can only be lowered). The $RACKS taken at each trade can go nowhere but to the burn address and to stakers, what buys $RACKS back from trading fees can go nowhere but into $RACKS (its market is named once by the Safe, publicly), and every claim, buyback and burn is recorded on-chain.
The keeper runs the buyback of the trading fees’ share apart from any claim. It never sells $RACKS, and it buys only while $RACKS trades within 20% of its median price over the last 6 hours, in buys small enough that each pays on average at most 1% over the price it starts from (so it moves the price about 2%), each at a minimum 1% under a fresh quote.
A trader who buys ahead of it to sell into it gains at most what one of those buys moves the price, about 2%, and pays the coin’s trading fee both ways; one who pushes the price past 20% only makes it wait. The contract holds the same limit on its own: a buyback never pays more than 20% over $RACKS’s median recorded price over the last 6 hours. The buyback spends at most a quarter of the trading-fee reserve in any 24 hours.
Conversions and the keeper’s gas
The fees arrive in the token $RACKS is paired with. The keeper converts the vault’s 70% to USDG in that token’s deepest Uniswap pool, again at a minimum from a fresh quote, and the USDG goes straight into the vault. Each of these swaps must also get at least the token’s 30-minute average price in its deepest Uniswap v3 USDG pool, less 2%: a floor the keeper can’t set and one transaction can’t move.
When the buyback holds USDG and the vault holds that token, the two are swapped between them at that average price with no trade at all. The keeper’s gas is paid from the same 70%: when its ETH falls below its target (0.5 ETH), the fee router refills it, at most 1 ETH in any 30 days, and the USDG spent on it counts toward a 30-day cap too.
The keeper refills only while the gas pool’s ETH price is within 2% of ETH’s market price, and only when the ETH it gets is worth what it sells, within 4%. The Safe sets the target and the caps, and the contract never lets them exceed 2 ETH and $10,000. Every refill is recorded on-chain.
Fees
Each trading fee
Vault 80%Buyback 20%
Each coin fee, at launch
Vault 70%Operations 10%Buyback 20%
The buyback is $RACKS, bought with trading fees and taken from the coin fee at each trade: half of it is burned, half goes to stakers. The coin fee’s operations share is at most 10% and can only be lowered, and the vault gets the rest of the fee router’s part: 70% or more, less the keeper’s gas, which is paid from it within its 30-day caps.
A taker pays the fee of their tier on every trade, whether it fills against the vault’s pool or another trader’s order. The tier falls with what they traded in the last 14 days, and staking $RACKS takes a discount off it. A tier belongs to the address that trades: through the Racks app, that is your own wallet. An outside contract that trades for many people counts as one trader, so they share its 14-day volume and its stake, and so its tier. Makers pay nothing.
The taker fee, by what you traded in 14 days
Off that fee, by the $RACKS you stake
Staking $RACKS
Stake $RACKS to earn $RACKS: half of every buyback is paid to stakers. The buyback is 20% of the trading fees, spent on $RACKS, and a fifth of every coin fee, taken in $RACKS at the trade, so stakers’ rewards are fees, never new coins.
To get $RACKS, use Buy Racks on the Racks page, with ETH or USDG, or on mainnet with Other coin: one of the coins Relay holds on 43 other chains (124 in all, among them USDC, USDT, WETH and each chain’s own coin), which Relay takes as it is, with no swap; it takes no other coin. Your wallet signs an approval of exactly the amount each time (none for a chain’s own coin; Ethereum’s USDT can ask twice, first to set its old allowance to 0) and a deposit into Relay’s depository, and the app checks every byte of both before you sign. If you cancel the deposit or it fails, the approval stays until you set it to 0 in your wallet; the app says so. Relay then brings ETH to Robinhood Chain and buys with it for you. From Solana or Hyperliquid you can send one of the coins Relay takes there to a one-time address instead, and one tap buys with the ETH it brings. On Solana you can also connect a Solana wallet (Phantom, Solflare, Backpack and others), only to pay: it signs one direct deposit into Relay’s depository of SOL, USDC, USDT, PYUSD, USDG, CASH or OUSD, with no swap, and the app checks every byte of it and simulates it on Solana before you sign; Relay then brings ETH to Robinhood Chain and buys with it for your wallet there. One transaction swaps it into QQQ (the token $RACKS is paired with) and buys $RACKS in its pool. You get at least the amount shown, less your max slippage. Each $RACKS trade pays the 2% coin fee (after the pool’s first 30 seconds) and a 0.7% pool fee, and the swap into QQQ adds 0.05% (0.06% from ETH).
$RACKS supply and locks
$RACKS has a fixed supply of 1 billion coins and no owner: nobody can make more. One transaction launches it, with no launchpad. It puts 80% of the supply into a single Uniswap v4 pool against QQQ and locks it there for good: the contract that holds that liquidity has no way to withdraw it and no owner. The pool opens at a market value of about $100,000 for the whole supply.
Each trade in the pool pays the 2% coin fee, split as above, and a 0.7% pool fee, which stays in the pool. It is added to the locked liquidity when someone calls compound on the contract that holds that liquidity; anyone can. The pool has an id, which the Buy Racks sheet shows: a pool of $RACKS with another id is not this one, and a trade there pays no coin fee, so it adds nothing to the vault, the burn or stakers.
For the first 30 seconds after the pool opens, the coin fee starts at 98% and falls in a straight line to 2%, so a bot that buys in the first blocks pays nearly all it brings.
The other 20% of $RACKS is locked in the same transaction, in three contracts with no admin:
Team 5%OTC 7.5%Community 7.5%
Locked coins can’t be staked. The 7-day median comes from a price recorder. The keeper records a price in it every 15 minutes; when one is 10 minutes late, anyone can record it. It keeps two sets of the coin’s price in USDG. The 7-day set takes a price once an hour and keeps the last 168: an OTC sale is at no less than 70% of their median.
Each new price is held within 20% of that median, so a trade that moves the price for one block moves the median by a quarter at most over a whole week, while a real move reaches it over days. The buyback set takes a price every 15 minutes and keeps the last 24, six hours of them: a buyback pays at most 20% over their median.
Each of these is held within 20% of that set’s median, so after a real move the median follows by a fifth every 3¼ hours, and prices pushed for one block move it no faster. The launch records the first price, which stands for each whole set until real prices replace it. The pair token is priced in its deepest USDG pool.
If the 7-day set hasn’t been updated for 6 hours, its median isn’t available and OTC sales wait until it is; if the buyback set hasn’t been updated for an hour, buybacks wait.
Getting USDG and ETH
You need USDG to trade and a little ETH on Robinhood Chain for gas. The app’s Bridge button (Account) brings them from another chain through Relay, inside the app. Add funds (Portfolio) also lists the other bridges, set up for your wallet:
The app’s Receive button (Account) shows your wallet’s address. Under Network, another chain gives a deposit address from Relay, with nothing to connect or sign: from Base, Arbitrum, Ethereum, Optimism, Polygon, BNB Chain, Avalanche, Solana or Hyperliquid, in USDC; or in USDT from Arbitrum, Ethereum, Optimism, Polygon, BNB Chain or Solana. It arrives as USDG in your wallet on Robinhood Chain mainnet, on every Racks site. From an EVM chain or Solana, the address is for one order: send exactly the amount it names, once, from any wallet or exchange (from Solana, your own wallet). Less than the amount goes back to your address on the chain you sent from (on Solana, to the address it came from); more is sent on too. From Hyperliquid, the address stays open: send USDC from your perps balance; any amount is sent on at the price when it comes, and nothing goes back. A smart-contract wallet can’t use it: what goes back could go to an address that is not yours there (on the main site, it can from Solana, where what goes back goes to the address it came from). The app looks for one only on Robinhood Chain, where this site trades, so one with no code there yet is not seen: don’t use one. With a wallet from your Google or X login, what goes back on another chain is in its address there, which the app can’t move: export its key (below) to use it.
Only send USDG (0x5fc5…d168) or ETH on Robinhood Chain to your wallet. Tokens sent on another network can be lost.
A wallet from your Google or X login
No wallet yet? On the Connect sheet, continue with Google or X (the sheet shows the logins that are on). Privy makes a wallet for you at your first login and keeps its key, which your login opens. It is an ordinary address on Robinhood Chain: get USDG and ETH into it as above.
- Our confirm: this wallet signs with no window of its own, so Racks shows its own confirm first for anything other than a trade you tapped: what moves, how much and to where. A message with characters that can hide text, or that look like other letters, shows each of them marked. Racks refuses a request it never makes.
- Gas: the wallet pays it in ETH, as any wallet does.
- Send (Account): moves the wallet’s USDG or ETH to another address on Robinhood Chain, after our confirm.
- Export your wallet’s key (Account): Privy’s own window shows the key, so you can use the wallet in another wallet app. Racks never sees the key. Anyone with the key controls the wallet: keep it secret.
Risks
Who controls what
Nobody can move the collateral behind your contracts: each contract’s $12 stays in the option market until it’s redeemed, and a settled payout can’t be changed.
Everything else is run by three roles, with limits written into the contracts:
Admin, a Safe multisig
Can
- Set the pricing model (each market’s volatility and drift, and how much a weekend hour counts for its weekly contracts).
- Set the vault’s entry and exit fees and its lockup.
- Set the fee tiers (no fee above 5% and no taker’s fee below 0.5%; where fees go is fixed: 80% to the vault, 20% to the buyback).
- Set an extra fee on pool fills of resting orders (1% at most, off at launch, and never past 5% with the pool’s fee).
- Choose the operations wallet.
- Add or remove a route of the order book (1-tap trading’s helper at launch): it places orders in a person’s name and can cancel any resting order.
- Pause and unpause.
- Replace the liquidity vault.
- Choose the pools the fee router swaps in and the pool its reference price comes from, the keeper that runs its buyback, and the keeper’s gas target and caps.
- End stakers’ half of the buyback.
Limits
- A period can’t be settled outside the levels posted for it (1.5 points either side).
- Model within fixed bounds (a weekend hour counts between 0.1 and 2 weekday hours).
- The vault’s entry and exit fees at most 1% each, its lockup at most 30 days.
- Tier fees at most 5%, and a taker’s at least 0.5%.
- An order-book route moves no one’s money anywhere else: the orders it places are the person’s, and every refund of a cancel goes to the order’s owner.
- The vault can’t write more of any one contract than 15% of its value covers, and 20% of its trading fees go to the buyback: both fixed in the contract.
- The operations share of coin fees can only go down from 10%; the buyback’s 20% is fixed.
- Ending stakers’ half is one way: from then on the buyback burns everything it buys or takes, and every staking lock opens with nothing forfeited.
- The keeper’s gas from coin fees is at most 2 ETH, and $10,000 spent on it, in any 30 days.
- A vault replacement is announced on-chain and can take effect no sooner than 2 days later (it lapses if not completed within a week after that). It takes effect only once the old vault’s quotes are out of the pools, and the old vault can never trade there again, so a replacement can’t reach depositors’ money: it stays in the old vault, and they withdraw it there.
Keepers
Can
- Put forward each period’s result, inside the levels posted. List contracts. Run the vault’s quotes.
Limits
- A result must lie within the levels posted for the period, 1.5 points either side, and waits out a challenge window before it is final.
- The pools refuse any trade better than fair value, and any sale that would take what the vault pays out for one contract, net, past 15% of its value (25% for all contracts together).
- Every swap a keeper makes for the fee router has a floor it can’t set (2% under the pair token’s 30-minute average; 20% over $RACKS’s 6-hour median for a buyback).
Guardian, the fast emergency backup (a Safe that needs one signature of two)
Can
- Pause pricing, which stops trading with the vault’s pools and vault deposits and withdrawals (orders between people in the book still match).
Limits
- It can’t set a price or settle a period.
- One signer is enough, so the brake works at any hour.
- A pause ends by itself after 3 days, and only the admin can end it early.
- The guardian can’t renew it: it may start a pause only a week after the last one began.
- Settlement, redemptions and order cancels keep working while paused.
A fifth of every coin fee is taken in $RACKS at the trade, and the keeper claims it for the fee router, which burns half and sends half to stakers. The rest is in the token $RACKS is paired with, and anyone can claim it for the fee router: of the whole fee, 10% to the operations wallet and 70% into the vault.
- The fee router’s liquidity can only move into the vault the pools currently use, and that only changes after 2 days’ public notice (the one exception is the keeper’s gas, within its 30-day caps).
- The buyback’s share can only ever be spent on $RACKS, in the market the Safe names once, and what it buys, like the $RACKS taken at each trade, goes half to the burn address and half to stakers.
Contract addresses
Loading…
| Contract | Address |
|---|
Source code is verified on the explorer.
Questions? Ask in the Discord. The team answers there, in public, and never by DM.