- Gatekeeper scores a tweet on falsifiability, clarity, specificity, signal, and novelty. Most tweets are rejected.
- Writer drafts a clean question, description, resolution criteria, and a sealed judge prompt that lives on 0G Storage.
- Judge runs the frozen prompt at resolution time, signs the outcome with the allowlisted TEE key, and submits it on-chain.
Treasury that routes funds into Gimo Finance liquid staking (st0G). At resolution 80% of the yield earned goes back to bettors pro-rata, 20% to the protocol.
Quick start
Clone the repo, run
pnpm dev, browse live mainnet markets in 90 seconds.Architecture
The full system diagram — web, API, judge worker, contracts, subgraph.
Yield economics
How the 80/20 split, reserve floor, and one-shot snapshot work.
Smart contracts
Mainnet addresses, ABI surface, role gates.
Try it now
How a market works
- User pastes an X post URL in
/create. - The API runs the gatekeeper. If the tweet is settle-able, the writer drafts a market and seals the judge prompt to 0G Storage.
- The user signs
MarketFactory.createMarket(...)from their wallet. The factory deploys, in one transaction, aPredictionMarketclone, a per-marketTreasurywhose principal is that market, and aGimoAdapterwired to the Treasury. - Anyone bets YES or NO with native 0G. Stakes flow into the Treasury; the operator (creator by default) calls
deployIdleto push idle funds into Gimo’sstake(). - At
resolutionDate, the judge worker calls the judge model in TEE on the frozen prompt, signs the outcome, and submits toAIResolver. The resolver verifies the signature on-chain and forwardsresolve()to the market. - Winners pull payouts with
claim()— pro-rata of (notional pool + bettors’ 80% of yield).

