Gold Rush$RUSH

GOLD RUSH

The onchain race between stocks and gold. Pick an asset. Win the Rush.

Every Rush starts with a price snapshot. Gold and the stocks are normalised to 0% and tracked on relative performance until the round closes. Same starting line, best return wins. Settled on Hyperliquid.

Gold is always in the race. The stocks change. The benchmark doesn't.

This is the working spec. It is written to be argued with before anything is deployed, and to be published as the app's documentation afterwards.


The short version

A Rush is a round with four lanes: gold, and three stocks. You back one lane with HYPE while the round is open. When it closes, the lane with the best return since the snapshot wins, and its backers split the pot. Nobody sells you anything, nobody takes the other side: the losers' HYPE is the winners' prize, minus a 5% rake.

The rake is the protocol. It buys real gold on chain and puts it in a vault that has no owner and no sweep. $RUSH can be burned at any time for a pro rata share of that vault. Every Rush adds gold and never removes it, so the floor under the token only goes up.

A game whose house always buys gold, and a token whose floor is the gold it bought.


What we measured before designing anything

Everything below was read on chain on 2026-08-28, and it is the reason the design looks the way it does rather than the way the pitch would like it to.

Claim What is actually true
"a contract can read Hyperliquid prices" Yes, for spot: the precompile at 0x…0808 returns a pair's last traded price, scaled by 10^(8 − szDecimals). Checked against the candles to the cent: HOOD 109.00, QQQ 740.77, GLD 418.92, META 578.83, SPY 773.32.
"so we can use the deep equity perps" No. The equity markets with real size (SP500 $455M open interest, GOLD $403M) live on the xyz HIP-3 dex, and oraclePx reverts for every HIP-3 id. A contract cannot read them. Verified again today.
"the tokenized stocks are liquid" No. Over seven days: GLD printed 2.72 units, QQQ 2.16, SPY 0.86, TSLA 0.05, META 6.39, HOOD 59.15. Last trades were 8 to 19 hours old. These books are alive but tiny.
"gold on chain is thin too" Not on the EVM side. XAUt0 trades against WHYPE on Project X with a two sided book, and the pool prices gold at $4,571 an ounce today (HYPE $82.65, 55.3 HYPE an ounce). The pools support observe(), so a TWAP is available.
"so gold races on its HyperCore market like the stocks" No, and this one changed the design. GLD is the least traded thing on the list: 2.72 units in seven days and a last print days old. The lane that is in every Rush cannot be the stalest number on the board, so gold is priced on HyperEVM instead: GoldOracle reads two Project X pools, XAUt0/WHYPE and USDT0/WHYPE, both as half hour TWAPs, and divides them. The HYPE leg cancels, so what comes out is dollars an ounce on the same 1e8 scale as the stocks: $4,566.85 when this was written.

Two conclusions, and the whole protocol follows from them:

  1. The race is settled on HyperCore spot, because that is the only equity price a contract can read at all. Since those books are thin, the settlement is built to survive a manipulated print rather than to pretend one cannot happen.
  2. The treasury is XAUt0 on HyperEVM, because that is where gold is actually tradeable, and a vault you cannot redeem against is a promise, not a floor.

A Rush, end to end

Phase Length What happens
Open 2 hours Anyone backs one lane with WHYPE. Samplers start recording prices.
Run 24 hours No new backing. Anyone can keep sampling prices, at most one sample every 20 minutes.
Settle one call Returns are computed, the winner is paid, the next Rush opens.

The lanes

Four lanes: gold plus three stocks, drawn from an allowlist sealed at deploy. Gold is priced by GoldOracle on HyperEVM; the three stocks are priced by HyperCore's spot precompile. Same scale, same money, two different venues because the two assets are honestly liquid in two different places. The stocks rotate by round number, so the roster changes without anyone choosing it and no asset can ever be added later. Gold never rotates out. That is the brand and it is also the rule.

The allowlist as it stands, with what each one printed over the last seven days:

Lane HyperCore pair 7d prints Note
GOLD XAUt0 on HyperEVM, two pool TWAP continuous the benchmark, in every Rush
QQQ @288 2.16 the index
HOOD @271 59.15 the most active of them
META @287 6.39
SPY @279 0.86
TSLA @264 0.05
AMZN @280 thin
GOOGL @266 no trade in 7 days listed, priced, dormant

The snapshot, and why it is a median

A single reading of a thin book is worth nothing: one $500 trade sets it. So a Rush never reads a price once.

To move a median, an attacker has to hold a false price across more than half of many samples. The counter is cheap and available to everyone who stands to lose: a few dollars of trade prints the true price back, and a single sample() call records it. The defence is not that manipulation is impossible, it is that defending costs about the same as attacking and the pot is capped.

Three rules that come straight from the measurements

Payout

Winners split the pot pro rata to their stake, minus a 5% rake. If nobody backed the winning lane, nothing is paid: the whole pot rolls into the next Rush. A Rush that nobody read right makes the next one worth more.


Where the rake goes

Stream Share of the rake What it does
Gold vault 70% buys XAUt0 through one pinned Project X pool and leaves it in the vault
Buy and burn 20% buys $RUSH in the canonical pool and burns it
Operator 10% runs the thing, named at deploy, immutable

🔴 There is no arbitrary call anywhere. The vault's buy path is a pinned pool address and a pinned token, not a spender plus calldata. That distinction is the difference between a treasury and a back door, and it has already cost this shop one protocol.

🔴 There is no sweep. No owner can move gold out of the vault. The only way out is the one every holder has.


$RUSH, and the floor

/// The floor, in gold, per token. It has no path down.
function floor() external view returns (uint256) {
    return goldVault.balanceOf() * 1e18 / rush.totalSupply();
}

âš  Honest about what the floor is not: it is a claim on the gold the protocol has already bought, not on the gold it might buy. If nobody ever plays a Rush, the vault stays where it is and the floor stays where it is.


How the pieces are laid out

On HyperEVM (chain 999)

On HyperCore

Venue: Project X v3 (0xFf7B3e8C…), for the $RUSH pool and for the vault's gold buys. Proven on mainnet: canonical callback names, single sided add, and a pull() that fits a small block.


What the operator can and cannot do

Can Cannot
open the first Rush change the lanes, the allowlist or the rotation
call convert() to turn rake HYPE into gold, within slippage bounds send an asset anywhere except the vault
receive the 10% stream at the address sealed at deploy change that address
nothing else mint, pause, sweep, redirect, or stop a payout

Sampling, settling, redeeming and claiming are permissionless. If the operator disappears, Rushes still settle and holders still redeem; only the conversion of rake HYPE into gold would stop, and that HYPE stays in the vault's own balance until somebody calls it.


What it costs to run

Measured on a fork of the live chain with the real scripts, 23 tests green:

deploy the four contracts ~13M gas, so the big block lane and about five minutes
open the market, one sided 4.5M for the pool, then 0.9M for the float
a sample() ~250k, and anyone can pay it
settle() ~1.2M, once a day, anyone
pull(), the deployer's exit 167k gas, one transaction, straight to a named wallet
convert() turning rake into gold ~200k, anyone

The risks, in plain words