S
Settlement Check

A prediction market is a claim about the future.
This asks what will decide it — and whether anyone can check that.

Measured on the live Panta catalogue, and checked against Panta's own front end. Every number here comes from the snapshot below it; nothing on this page is typed by hand.

Demo, 2:53 · Pitch, 1:58 · Five things this project got wrong, with their corrections · source

13 of 100
markets the catalogue serves as tradeable have no account on Solana at all. Panta's own site renders them as “Market not found on-chain.”
17 of 100
cards come back stripped — no question, no resolution rule, no sources, no trade counts — and nothing in the response says which shape you are holding

What settles a market, read from the chain rather than from a field

The oracle field reads like the account that decides a market. It is not: on every market checked it names the wallet whose instruction is CreateEventUsdc, which creates markets and does not resolve them.

On chain, every result in this snapshot was submitted and every event resolved by 664h8sZvGwUx4hfqWYrewwvC7wenbKPTCFQTKZx5ghbR — an account owned by the System Program, holding no data. A person with a key, not a program. No UMA program appears in any of those transactions.

The settlement path is GraduateMarket → SubmitOracleResult → ResolveEvent → ClaimWin, and it arrives under two naming families: markets carrying a MigrateEventV2 settle without the Usdc suffix, the rest with it. Matching one and not the other — which this tool did at first — reports a settled market as one that nothing has settled.

sentToUma is true on 85 of the 100 markets here. That is a field in the API, not something the venue tells its users: its page says agent resolution, with a confidence score, a written rationale and a dispute window. The report puts the flag and the signature side by side and concludes nothing further.

Before you publish: the same rules, on a draft

Panta's create API requires a question, a resolutionRule of up to 2048 characters and a non-empty sourcesOfTruth. A complete card returns them; a stripped one returns none of them. oracle is sourcesOfTruth joined by commas — which is why the most common settlement source in this catalogue is the word on-chain, typed into that list by a creator.

--check-draft refuses a draft a buyer could not read, then hands it to Panta's own validator and reports the real creation fee. Nothing is signed, submitted or paid.

a draft shaped like the catalogue

6 thing(s) would leave a buyer unable to read this market
  BLOCK question: no question
        → state what is being bet on, in one sentence
  BLOCK sourcesOfTruth: 'on-chain' is a word, not a reference
        → name the account, the program or the outlet. A buyer sees this string and nothing else — it becomes the market's `oracle` field verbatim
  BLOCK endTime: trading would close before it opens
        → startTime must be earlier than endTime
  BLOCK resolutionTime: the market resolves before trading ends
        → resolutionTime must be at or after endTime
  BLOCK startTime: starts in 0s; the chain requires 3600s
        → move startTime further out, or declare it a breaking market in progress
  BLOCK imageUrl: points at a private address
        → host it somewhere a reader can reach
  WARN  resolutionRule: 8 characters
        → a rule this short rarely names both the measurement and the moment it is read; nobody can see this field after publication, so it is the creator's only record

WHAT THE CATALOGUE WILL SHOW
  title   (empty — and the listing leaves it empty anyway)
  oracle  on-chain
  resolutionRule  returned on a complete card — but 31 of 100 cards come back stripped of it,
                  with no field saying which shape you are holding

a draft that passes

1 thing(s) would leave a buyer unable to read this market
  BLOCK startTime: starts in 0s; the chain requires 3600s
        → move startTime further out, or declare it a breaking market in progress

WHAT THE CATALOGUE WILL SHOW
  title   Will the Ethereum Pectra upgrade activate on mainnet before 1 December 2026?
  oracle  https://ethereum.org/en/roadmap/,https://etherscan.io
  resolutionRule  returned on a complete card — but 31 of 100 cards come back stripped of it,
                  with no field saying which shape you are holding

PANTA SAYS  nothing usable. Their validator refused without naming a field, which it also does for drafts it accepts seconds later, so this is not evidence about your draft.
  what came back   HTTP 400: {"code":"INVALID_MARKET_PARAMS","message":"unexpected create quote failure — check server logs"}
  the local checks above still stand on their own.

Live: the same check, as settlements land

./run.sh --watch subscribes to the market program and reports each settlement the moment it arrives — which market closed, what the catalogue claimed would decide it, and who signed. --replay runs the same code over a settlement that already happened.

Loading the live feed…

00:29:32  ResolveEventUsdc  5u15kVt2wz1cnLMU…
          market   FFFcvy12DfhFMQTPieuGFHgzdXwkk24oXTRpbpXJPF9
          claimed  4VGFQKGanc5oaLf51mee9m45HmiXRhKruh5mdRaMjipS
          the card carries sentToUma
          signed   664h8sZvGwUx4hfqWYrewwvC7wenbKPTCFQTKZx5ghbR
          → the flag is in the API; the signature is on the chain, and no UMA program is in it

The feed above is live.json, refreshed every hour by a GitHub Actions run of demo/live.py through Solami's RPC: it lists the market program's newest signatures, opens only the ones it has not seen, and keeps each settlement with the account that signed it and what the market's card claims. Every row links to the transaction on Solscan, so none of it has to be taken on trust.

The endpoint is a setting, and the difference is measured rather than asserted. Fourteen settled markets, identical code, six lookups in flight: Solana's public node read 0 of 14 and refused everything under concurrency; through Solami, 14 of 14 in 41s — and 14 of 14 in 9s at 24 in flight. The public node also drops an idle subscription (2 frames and one close over 70s on the market-program filter, while a busy filter held 15,551 frames without a break), and idle is exactly what watching settlements is. Solami holds it. ~/.config/solami.key or SOLANA_RPC chooses; the key is never printed. --mirage reads the same settlements from Solami's Mirage stream — the Yellowstone geyser firehose over a plain WebSocket, filtered on the server — and decodes the protobuf frames by hand, since this project has no dependencies: 40 transactions in 0.9 s on a busy filter, and the quiet market-program stream held on pings.

The snapshot

100 markets, 9 of them with their settlement read from the chain. Taken 2026-09-26T08:36:32Z.

MarketVerdictClaimed source Volume
no question stated no question world-crypto-coinmarketcap,world-crypt $997
primary · on sale
no question stated no question world-finance-reuters,world-finance-ya $437
secondary · on sale
no question stated no question world-stocks-bloomberg,world-finance-r $396
secondary · on sale
no question stated no question ng-pop-pulse,ng-pop-africamagic $316
secondary · on sale
no question stated no question af-news-bbc-africa —
primary · on sale
no question stated no question world-weather-wmo —
primary · on sale
no question stated no question world-stocks-bloomberg —
secondary · on sale
no question stated no question eu-sports-gazzetta —
secondary · on sale
no question stated no question world-finance-yahoo —
secondary · on sale
no question stated no question world-stocks-bloomberg —
secondary · on sale
no question stated no question world-stocks-bloomberg —
secondary · on sale
no question stated no question world-stocks-bloomberg —
secondary · on sale
no question stated no question world-crypto-coingecko —
secondary · on sale
no question stated no question world-finance-yahoo —
secondary · on sale
no question stated no question world-stocks-bloomberg —
secondary · on sale
no question stated no question world-stocks-bloomberg —
secondary · on sale
no question stated no question world-crypto-coingecko —
secondary · on sale
WILL FRANCE SCORE 2 OR MORE GOALS AGAINST IRAQ? names nothing on-chain $10,008
resolved
Will England score within the first 20 minutes of their Round of 32 match against DR Congo? names nothing on-chain $7,618
resolved
Will Lamine Yamal score the opening goal in Spain's Round of 32 match against Austria? names nothing on-chain $7,578
resolved
Will the Brazil vs. Japan Round of 32 match go to extra time? names nothing on-chain $5,804
resolved
Will both Canada and Morocco score in the first half of their Round of 16 match? names nothing on-chain $5,108
resolved
Will the Norway vs. Côte d'Ivoire Round of 32 match be decided by a penalty shootout? names nothing on-chain $4,990
resolved
Will a substitute provide a goal or assist? names nothing on-chain $4,912
resolved
Will Serena Williams defeat Maya Joint in their first-round Wimbledon singles match today? names nothing on-chain $4,794
resolved
Will Felix Nmecha complete 50 passes vs Paraguay? names nothing on-chain $4,225
resolved