Play
Daily Bell
Every Chog calls $CHOG's next 24 hours at 15:00 UTC. Fans ride one, and the real market settles it.
Every day at 15:00 UTC every Chog publishes a 24-hour $CHOG call. Fans ride the Chog they trust, and 24 hours later the real price settles every call. Open it at /bell; past Bells are at /bell/<YYYY-MM-DD>.
The ring at 15:00 UTC
The ring waits 60 seconds so the candle that closes at 15:00 is in the data. Then every one of the 1,969 Chogs makes a call: a % move over the next 24 hours, a conviction and a one-line thesis.
- Unclaimed Chogs call from their genome.
- Claimed Chogs call through one run of their AI on 0G Compute, a few at a time with a timeout. If the AI fails, the genome makes the call.
- Every forecast is clamped to ±50%.
On production the external pulse calls the Bell route at minute 1 of every hour, so the ring lands at 15:01 UTC. Vercel's own 15:00 cron fires anywhere within that hour on the Hobby plan, so the pulse is what makes the time predictable. A deployment that comes up after 15:00 rings that day's Bell at its first trigger: late, but still live, and its calls count from that later price.
Settlement
A call settles on the real hourly close 24 hours after the ring. Settlement waits 10 minutes past the horizon and only trusts candles fetched at least 5 minutes after it. If the pool had no trade in that hour, the Bell settles on the last close, provided it is no more than 6 hours old, once data fetched 2 hours later still shows no trade.
Score: points = max(0, 100 − 4 × miss in % points), plus 20 when the direction is right. Each Bell names an Oracle of the Day (the closest call) and a Most Rekt (the furthest; between equal misses, the more confident call is more rekt). Season records track oracle wins.
On production that is 15:11 UTC the next day: the 24-hour horizon plus the 10-minute grace, on the pulse's minute-11 run. The same maintenance run mints the Best call and Most rekt trophies into the winners' wallets (Trophy cabinet), the AI recap is written on the first request after settlement, and the Oracle Purse follows (below).
Rides and points
- Ride one Chog per Bell, within 12 hours of the ring: until 03:00 UTC for a Bell rung on time. Your fan card is an httpOnly cookie; your public fan ID is a hash of it.
- A ride counts from the first hourly close after you pick, so a late ride can't cash in on a move it already saw.
- Your ride scores your Chog's call with the formula above, against the move from your ride's start to settlement.
- Streak bonus: +5 for each consecutive Bell you rode, up to +25.
- A ride taken after the window closes, or before the first live Bell, is booked on the next Bell.
Live and replayed Bells
The 14 days before the first live ring are rebuilt from real candles with genome calls only and are labelled “Replayed Bell”. A live Bell shows its provisional move since the ring until it settles. Replayed Bells never award trophies or purses.
Oracle Purse
After a live Bell settles, real $CHOG goes into the Oracle's own wallet. The amount is ORACLE_PURSE_CHOG, whole $CHOG per settled live Bell; unset or 0 means no purse is promised. This deployment is configured for 500 $CHOG per Bell. It is paid from the House key into the winning Chog's ERC-6551 wallet, so the purse belongs to the NFT and passes to its next holder. It is a transfer by the team, not contract logic.
- It is sent automatically: after settlement, a scheduled job the team runs executes
scripts/send-oracle-purse.mts, which picks the winner, simulates the transfer, sends it and records the transaction hash. - The winner is the Oracle of the Day the Bell page shows. The House Chog never pays itself (its runner-up wins instead), and a Chog its holder hid is never named.
- One purse per Bell: the record is claimed before the broadcast, so a re-run can't pay twice. Replayed Bells never get one.
- The Bell page shows the purse as “on its way” from settlement, then “sent” with the transaction once it is recorded. If nothing is recorded within 48 hours it says so plainly rather than keep promising.
- Fans never receive $CHOG.
The live Bell's Oracle of the Day and Most Rekt also get a soulbound trophy in their wallets. See Trophy cabinet.
What triggers a Bell
- Vercel Cron calls
GET /api/bell/cronat 15:00 and 16:00 UTC; on the Hobby plan each fires anywhere within its hour. - An external hourly pulse calls the same route at minutes 1 and 11 (
1,11 * * * *), withCRON_SECRETas a Bearer header: the ring at 15:01, the settlement at 15:11, and a catch-up every other hour. A second pulse at minute 30 (30 * * * *) callsGET /api/agent/tickfor the agents, not the Bell. - Visiting a Bell page also catches up anything that is due.
Ringing and settling are idempotent and hold a lock, so overlapping triggers are safe.
