The rules
How it works
- What am I actually staking?
- Tokenized shares of the stock you back. On mainnet that means an issuer's tokenized stock, such as an xStock; on devnet, test tokens that stand in for them, which the faucet hands out. The winner receives both stakes as shares, not as cash.
- Which stocks?
- Every tokenized stock and ETF on Solana: 1033 today, from Apple to Hong Kong listings. Lookalike tokens that borrow a real one's name are left out; only the issuer's own mints can be staked.
- How is the winner decided?
- By percentage move. Each stock's end price is divided by its start price, and the larger ratio wins. The program compares the two by cross-multiplying the integer prices, so there is no rounding anywhere in the decision. A $900 stock that rises $18 (+2%) loses to a $100 stock that rises $3 (+3%).
- Which prices?
- For every boundary, exactly one per stock, from one of two sources. TSLA and QQQ and VOO are priced by Pyth: the first Pyth update published at or after the boundary. Each update carries the publish time of the one before it, so the program demands previous < boundary <= this one, and only one update in existence satisfies that (the same rule as Pyth's own parsePriceFeedUpdatesUnique). Every other stock is priced by the Stonk Wars oracle: the close of its first one-minute bar at or after the boundary, signed by the oracle key and checked on chain by Solana's Ed25519 program. That is a fact about the past, so there is one answer and nothing to shop for.
- Can I fight at three in the morning?
- Yes, on 37 of them. A US stock's own market runs from 4am to 8pm New York time and the oracle reads it the whole way, pre-market and after-hours included. Outside even that, and at weekends, the price comes from a market that never closes: the stock's perpetual future on Hyperliquid, which trades every minute of every day. The rule is the same one the exchange gets, the close of the first one-minute bar at or after the moment in question, so a round measures exactly the interval it says it does.
- A perpetual future is not a share. Why is that fair?
- Because a fight compares two moves, not two price tags, and the alternative was worse. We priced weekends from each token's own Solana pool first, and measured it: those pools traded a median of three minutes an hour, and a fifteen-minute reading of them moved five times as much as the market actually had. The perps print every minute, carry real size, and track the underlying share closely; each market is checked against the stock's own last price before it is used at all, which is how we caught that the venue's CL is crude oil while our CL is Colgate-Palmolive. A stock with no perpetual market falls back to its pool, and one with neither keeps exchange hours.
- Why not Pyth for everything?
- This deployment's Pyth plan covers only a couple of equity feeds. Rather than lock out the rest of the market, the program takes a second source for the others and says so on every fight. When a stock gets a Pyth feed, one admin call switches it for new fights; fights already running keep the source they started with.
- Why not the token's price all the time?
- Because while the stock's own market is open it is the better number by a distance: far deeper, far harder to move, and the thing the token is a claim on. The pool is the answer to a shut exchange, not a replacement for an open one.
- When does a round start?
- At each stock's first price at least two seconds after the fight is taken, which is a price that did not exist when the taker signed. The two seconds cover the gap between the cluster's clock and wall time.
- Who settles it?
- Anyone. Our settler posts the prices within a minute of the bell, but any wallet can do the same from the fight page, and the result is identical whoever does it. Pyth prices need no key at all; the oracle's quotes are handed to anyone who asks, already signed.
- What if the market is closed?
- For the 37 that fight around the clock, nothing changes: the fight runs and settles on schedule, priced by the stock's perpetual future or, for a few with none, by its own Solana pool. For the rest, and for listings outside the US, a fight taken while their market is shut starts at the first price when trading resumes. If that is more than five days away, or it lands inside the last minute of a fixed-end round, the fight is void and both stakes go home.
- What if nobody takes my fight?
- Call it off any time before someone accepts and your stake comes straight back. Once the challenge expires, anyone can send it home for you.
- What if it ties, or breaks?
- An exact tie refunds each side its own stake. A fight whose price never arrives (a halted feed, a delisting) can be refunded by anyone a week after it should have moved.
- Can anyone take the stakes?
- No. Stakes sit in token accounts owned by the fight's own address. The program has exactly three ways to move them: back to the challenger before the fight starts, to the winner, or home to both. There is no admin withdrawal. The admin can register stocks, pause new fights and name the oracle for new fights, and cannot touch a stake. A fight whose prices never come is refunded in full.
- Is this real money?
- The live demo runs on Solana devnet with test shares and real market prices. Tokenized stocks are generally offered only to non-US persons; know the rules where you live.