The rulebook.
How a bout works, when the bells ring, how to pick, where the purse comes from, how the ring reads the result on-chain, and what can go wrong.
What Bellbout is
Every market day is a bout. On each NYSE trading day, two tokenized stocks on Robinhood Chain step into the ring: one in the red corner, one in the blue corner. From the opening bell to the closing bell, the stock with the bigger percentage move wins.
Before the opening bell, $BOUT holders pick a corner. One wallet, one pick, final. After the closing bell, anyone can settle the bout: the BellboutRing contract reads both Uniswap V3 pools on-chain and decides the winner without any server. Wallets that picked the winning corner split the purse.
Every stock gets a masked luchador identity (a ring name, two colors, a mask pattern). These are our own playful characters, not the companies' brands, and no company logos are used.
How a bout works
- Scheduled. The scheduler puts the bout on-chain at least 12 hours before the opening bell: red pool, blue pool,
openAt(opening bell) andcloseAt(closing bell). Each pool is the most liquidSTOCK/USDGUniswap V3 pool for that ticker on Robinhood Chain. - Picks open. Until the opening bell, any wallet holding at least the minimum $BOUT calls
pick(boutId, corner). Picks cannot be changed. - Purse. Every bout gets a fixed amount from the purse reservoir (PurseFeeder) as soon as it is scheduled, and anyone can add ETH with
fund(boutId)until it is settled. - Opening bell. Picks close. About ten minutes later anyone can call
snapOpen, which stores each pool's 10-minute average price right after the bell. - The fight. The live tape, the round scoreboard and the 3D arena follow the pool prices all session. They are for the show.
- Closing bell. Anyone calls
settle(boutId). The contract reads the 10-minute average price just before the bell, compares each stock's move, and records Red, Blue or Draw. - Claim. Wallets that picked the winner call
claim(boutId)and receive their equal share in ETH.
Bell times
Bouts follow the regular NYSE session: 09:30 to 16:00 New York time, Monday to Friday, skipping NYSE holidays. New York switches between daylight time (EDT, UTC−4) and standard time (EST, UTC−5); UTC and WIB (UTC+7, no daylight saving) do not, so the bells move by one hour in those zones twice a year.
| Bell | New York | UTC · EDT period | UTC · EST period | WIB · EDT period | WIB · EST period |
|---|---|---|---|---|---|
| Opening | 09:30 | 13:30 | 14:30 | 20:30 | 21:30 |
| Closing | 16:00 | 20:00 | 21:00 | 03:00 next day | 04:00 next day |
EDT runs from the second Sunday of March to the first Sunday of November; EST covers the rest of the year. In 2026, New York leaves daylight time on 1 November. On NYSE early-close days (for example the day after Thanksgiving) the closing bell is 13:00 New York time and the bout is shorter; the contract only requires a session of at least one hour.
How to pick
- Get a wallet that works on Robinhood Chain (MetaMask, Rabby or any EVM wallet) and a little ETH on Robinhood Chain for gas.
- Hold at least the minimum $BOUT in that wallet (see below). Buy it on Pons.
- Open today's bout, connect, and press Pick red or Pick blue. Confirm the pick on the page, then in your wallet.
- Done. Your pick is on-chain and appears under My picks. It cannot be changed or cancelled.
Rules for a pick
- Before the opening bell only. The contract refuses picks at or after
openAt. - One wallet, one pick per bout. A second pick from the same wallet reverts.
- Minimum hold (
minHold). At the moment you pick, your wallet must hold at leastminHold$BOUT. The contract checksbalanceOfat pick time only; tokens are not locked or spent. - Exhibition mode. Until the $BOUT token address is set on the ring (it can be set once and never changed), picks need no $BOUT at all.
- Picking is free apart from gas. You never send ETH or tokens to pick.
Purse & carry
Each bout has a purse in ETH. It is filled from the purse reservoir (see below) and anyone can add to it with fund(boutId) while the bout is pending. Nobody, including the contract owner, can withdraw a purse: it can only be paid to winners or carried.
When the bout is settled
- A corner wins and at least one wallet picked it:
payout = purse + carry, carry resets to zero, and each winning wallet can claimpayout ÷ winners. - Draw, or the winning corner had no picks: payout is zero and the whole purse is added to carry.
- Void: the purse is added to carry.
Purse reservoir. A small PurseFeeder contract holds ETH for upcoming purses. Once per bout, right after the bout is scheduled, the keeper calls drip(boutId) and the feeder funds that purse with a fixed amount (or whatever is left). Anyone can top the reservoir up by sending ETH to its address (listed under Contracts). Each bout can be dripped only once; ETH that has not been dripped yet can be taken back by the feeder owner, ETH already in a purse cannot.
Carry rolls forward and is added to the payout of the next bout that has winners. Integer division can leave a few wei of dust in the contract; it is not withdrawable by anyone.
The share shown on the bout page before the bell ("If red wins…") is an estimate: it assumes you join that corner now and that nobody else picks or funds. It changes until the bell.
How results are computed
The result comes only from the BellboutRing contract, reading the two Uniswap V3 pools on Robinhood Chain. No server, oracle or person decides it.
10-minute TWAP at each bell
Each Uniswap V3 pool keeps a history of cumulative ticks. Calling observe() with two timestamps gives the time-weighted average tick between them: (tickCumulative[1] − tickCumulative[0]) ÷ 600, rounded down like Uniswap's OracleLibrary. A tick is a price step of 0.01%: price = 1.0001tick.
- Open: the average over the first 10 minutes of the session,
[openAt, openAt + 600].snapOpenstores it once it is available; if nobody called it,settlecomputes it from history. - Close: the average over the last 10 minutes,
[closeAt − 600, closeAt].
A 10-minute average makes a single trade at the bell much less able to swing the result than a spot price would.
Orientation
Uniswap prices a pool as token1 per token0. In some pools the stock is token0, in others it is token1 (USDG on the other side). The contract records which side the stock is on when a pool is allowed, and flips the sign of the tick when the stock is token1, so a rising stock always means a rising tick in both corners.
Who wins
For each corner, Δ = closeTick − openTick. Because ticks are logarithmic, Δ is directly comparable between two stocks whatever their price or decimals: the bigger Δ is the bigger percentage move (Δ ticks ≈ Δ × 0.01%). The bigger Δ wins, even if both stocks fell (the one that fell less wins).
Draw: if |Δred − Δblue| ≤ 1 tick (about 0.01%), the bout is a draw.
The live percentages on the bout page come from spot prices sampled off-chain, so they can differ slightly from the official TWAP result. The result banner shows the official Δ converted to %.
Rounds are for the show
The session is split into six hourly rounds plus a final 30-minute decider. Each round goes to the stock that gained more during that hour on the live tape. Rounds feed the scoreboard and the 3D arena. They do not affect the result or the payout. A corner can lose most rounds and still win the bout on the open-to-close move.
Settle, void & claim
- Settle: from the closing bell on, anyone can call
settle(boutId)(our keeper calls it about a minute after the bell). It can only run once. - Void: if a bout is still pending three days after its closing bell (for example the pools could not answer
observe()for those times), anyone can callvoidBout(boutId). The purse goes to carry and picks earn nothing. - Claim: a wallet that picked the winning corner calls
claim(boutId)once and receivespayout ÷ winnersin ETH. There is no deadline. Use the claim button on the bout page or under My picks.
Seasons, card & standings
A season is 15 consecutive NYSE trading days. The card is drawn deterministically from the season number: rival pairs first (NVDA vs AMD, AAPL vs MSFT, GOOGL vs AMZN, TSLA vs RDDT, MU vs INTC, SPY vs QQQ, MSTR vs CRCL, NFLX vs COST, PLTR vs GME, HIMS vs LLY), then rotation so every fighter appears at least once. Friday is the main event. A fighter whose pool has less than $100k of liquidity on scheduling day is replaced by a reserve.
The standings rank wallets by wins, then best streak, then fewer picks, computed off-chain from the ring's events. Fighters keep a win-loss-draw record on the roster.
$BOUT
$BOUT is the community token of Bellbout, launched on Pons. Holding the minimum amount lets a wallet pick; the team tops up the purse reservoir that funds each bout. $BOUT has no claim on fees or purses by itself and no promise of return.
The only official contract address is the one shown on this site, pinned on our X and Telegram.
Contracts & pools
All on Robinhood Chain (chain id 4663). Read them yourself on the explorer.
Loading addresses…
Roster pools
The most liquid STOCK/USDG Uniswap V3 pool per ticker. Token order and fee are read on-chain when the roster is built.
Loading the roster…
Risks
- Smart contract risk.
BellboutRingis new and not audited. A bug could lock or misdirect funds. Only put into a purse what you can afford to lose. - Thin liquidity and price manipulation. Tokenized stock pools on Robinhood Chain can be shallow. Someone with enough capital can push a pool's price around the bells. The 10-minute TWAP makes this more expensive, not impossible. The result follows the pool price, which can differ from the stock's price on its home exchange.
- Pool outages. If a pool's history does not cover the bell windows,
observe()fails and the bout can end void after three days. - Sybil picks. One person can use many wallets, including picking both corners. The
minHoldrule makes each wallet hold $BOUT, which raises the cost, but does not prevent it. Payouts are split per wallet, not per person. - Small purses. Early purses may be tiny, and gas can cost more than a share.
- Off-chain display. The live tape, rounds, standings and this website come from our server. If it is down or wrong, the contract and the result are unaffected; you can always read and call the contract directly.
- Token risk. $BOUT and tokenized stocks are volatile third-party tokens.
FAQ
Do I lose my $BOUT when I pick?
No. The contract only checks your balance at the moment you pick. Nothing is transferred or locked.
Can I change my pick?
No. One wallet, one pick per bout, final. The page asks you to confirm before your wallet does.
What if both stocks go down?
The one that fell less wins. The ring compares moves, not direction.
Why does the live % differ from the official result?
The live tape is sampled from spot prices every ~15 seconds off-chain. The official result uses the 10-minute average tick at each bell, read on-chain.
Who can settle a bout?
Anyone, from the closing bell on. Our keeper usually does it about a minute after the bell, but you never depend on it.
Is there a deadline to claim?
No. A winning share stays claimable from the contract.
What does "Ring opens before launch" mean?
The BellboutRing contract is not deployed yet. The site already shows the planned card with live pool prices, but picks, funding and claims only work once the contract address is published here.
Is Bellbout gambling or investing?
Neither is promised. Bellbout is a game about price moves. Nothing here is financial advice, and there is no expected return.
Are you connected to the companies in the ring?
No. Tickers label the bouts; ring names, colors and masks are our own characters.
Not financial advice
Picks are a game. Nothing on Bellbout is financial, investment, legal or tax advice, and nothing here is an offer to buy or sell any security or token. Results depend on on-chain pool prices that can be volatile, thin or manipulated.
Bellbout is not affiliated with, endorsed by or sponsored by Robinhood Markets, Pons, Uniswap, the New York Stock Exchange, or any company or fund whose ticker appears in the ring. Ticker symbols are used only to identify the tokenized stocks; fighter names and masks are original characters and no company logos are used.