
Originally published as a short-form thread on X. This is the expanded version.
Prediction markets are having their second act. Polymarket cleared multi-billion notional through the 2024 US election, and in July 2026 a second serious venue went live: World (world.xyz), a prediction market built into the Phantom wallet on Solana, with CASH — Bridge’s Stripe-issued stablecoin — as the collateral leg.
At the marketing layer, the two products look interchangeable. You buy YES/NO tokens on an outcome, they resolve for $1 or $0, you can exit before resolution. Same shape, same UX promise. But once you decode the contracts, the two systems make opposite bets about who you have to trust. That’s what this piece is about — not which venue is “better,” but what each one is actually asking you to believe.
TL;DR
Both venues use the same primitive — a complete-set vault where 1 unit of stablecoin mints 1 YES + 1 NO, and the winning side redeems 1:1 at resolution. Everything else is different:
- Liquidity model: Polymarket is a central limit order book — you trade against other users. World has no order book at all. Every fill is quoted by a market maker through DFlow’s request-for-quote router, and one of those makers (JanusFI) is World’s own program.
- Resolution: Polymarket uses UMA’s optimistic oracle — approved proposers post outcomes with a bond, anyone can dispute, contested markets escalate to token-holder voting.
- Collateral: Polymarket settles in pUSD. World settles in CASH, a Bridge-issued stablecoin where the issuer holds freeze and clawback authority over every account.
- Your position: on both venues, outcome tokens live in your wallet. On World, each market’s token pair carries a permanent delegate — the Token-2022 mechanism used to burn losing legs at settlement, which mechanically also lets the protocol authority move or destroy any position.
Two words to hold onto: Polymarket is a peer model with nominally decentralized resolution. World is a dealer model with centralized resolution.
The primitive both venues share
Before the differences, the thing that makes them the same product category.
A prediction market’s on-chain protocol, at its core, is a conditional-tokens vault. For every market:
- There’s a collateral pool (pUSD on Polymarket, CASH on World).
- There are two outcome tokens — YES and NO — that can only be minted or burned as an equal pair against collateral. Lock 1 unit of stablecoin, get 1 YES + 1 NO. Burn 1 YES + 1 NO, get 1 unit of stablecoin back.
- At resolution, one side is declared the winner and redeems 1:1 for collateral. The other side goes to zero.
That’s it. The protocol itself does no pricing. YES + NO must equal 1 at maturity, so the price of YES on the open market is the probability the market assigns to that outcome. If YES trades at 0.25 CASH, the market thinks the outcome is 25% likely. This is the invariant that makes prediction markets legible — every price is a probability, and probabilities have to sum to 1.
On Polymarket the primitive comes from Gnosis’ Conditional Token Framework (ERC-1155 outcome tokens on Polygon). On World it’s a Solana program called prediCt with two Token-2022 outcome mints per market. Different chains, different token standards, same math.
Everything else — who mints the sets, who prices the two legs, who decides who won — is where the two designs diverge.
Difference 1: who fills your trade
This is the biggest architectural gap, and the one most obscured by the “buy YES on X” language both venues use.
Polymarket is a central limit order book. When you buy YES at $0.62, there’s another user somewhere posting a sell order at $0.62. The Polymarket contracts match you, settle atomically, and take no principal risk. Polymarket the venue is not your counterparty — it’s the matching engine. If you want to see this concretely, our Polymarket alpha bot is an open-source reference that trades against the V2 CLOB directly — split, merge, hedge discovery, position management, the works.
World has no order book. There is no place for a user to post a resting order. Every trade routes through DFlow, a third-party request-for-quote system. When you tap “Buy YES” in Phantom, DFlow’s off-chain order server asks the connected market makers for a quote, picks one, and hands your wallet a fully constructed transaction to sign. Two makers are currently active: JanusFI, which shares prediCt’s upgrade key (World’s in-house market maker), and BisonFI, run by an independent third party. Both fill in practice.
The dealer earns the spread — currently 2–3% — baked into the quoted price. This is on top of any explicit fee: on World the spread is the whole cost. On Polymarket, where the counterparty is another user rather than a dealer, the equivalent cost is the bid-ask spread on the book plus a taker fee — introduced in 2026, ranging from 0.04 to 0.07 by category (roughly 1–1.8% at 50/50 probability, less at price extremes; crypto highest, geopolitics still fee-free); makers pay zero and earn rebates from taker fees.
This has two consequences worth stating plainly:
- Sometimes you’re trading against World itself. JanusFI is a World program. When DFlow’s router picks JanusFI, World is on the other side of your bet, and the same organization that runs the market is quoting its price.
- Liquidity depends on maker willingness, not user interest. If both makers pull quotes, the market is untradeable regardless of how many users want to buy or sell. On Polymarket, thin markets have wide books but they still have books.
Dealer models aren’t inherently worse than peer models — most of TradFi runs on them, tight spreads are possible, and RFQ can outperform order books in illiquid instruments. But it’s a different trust assumption than “on-chain prediction market” tends to imply.
Difference 2: who calls the result
Resolution is where the trust story gets sharpest.
On Polymarket, resolution runs through UMA’s Optimistic Oracle. The flow: an approved proposer posts an outcome with a bond. That proposal sits in a dispute window. If nobody disputes, it settles. If someone disputes it (by posting a counter-bond), the market escalates to a vote of UMA token holders, who decide by staking UMA on the correct outcome. Losing side loses its bond.
It’s slow, occasionally messy, and increasingly under fire — the 2025 Ukraine/Zelensky-suit market and the June 2026 Strategy Bitcoin market both resolved against what most observers considered the plain-reading outcome, and a May 2026 Wall Street Journal investigation found that in most disputed markets more than half the UMA votes came from the top-10 wallets, with roughly 1 in 5 disputes involving a voter who held a position in the market being judged. UMA responded in November 2025 with MOOv2, which restricted proposal rights to 37 pre-approved addresses while keeping disputes open to anyone. Still, it’s a decentralized process with economic checks: approved proposers post, anyone can dispute, and the tokenholders adjudicate. There’s a formal path to challenge a bad call — imperfect, but a path.
On World, resolution is a single instruction call: determine_outcome, invoked by one automated operator key that also creates the market, mints the tokens, pays winners, and closes the market. The instruction writes a 2-byte value — YES won, or NO won — into on-chain state. Winners auto-redeem.
Now here’s the nuance that matters. World has publicly partnered with Chainlink, using Chainlink Data Streams for price feeds and Chainlink Runtime Environment (CRE) for outcome computation. This is real integration and Chainlink’s blog post about it is accurate. But it operates off-chain: the resolution instruction on Solana carries no oracle account, no signed price report, no on-chain proof of anything. The chain has no way to verify that the outcome the operator writes came from Chainlink versus from anyone else holding that key.
Stated precisely: settlement lands on-chain, uses Chainlink data off-chain, and is not verified on-chain. There’s no dispute window, no bond mechanism, and no refund instruction in the current contracts. This is a documented and valid off-chain-with-on-chain-key pattern — it’s not a bug, it’s a design — but calling it “on-chain resolution” is a stretch.
If a World market resolves wrong, on-chain recourse doesn’t exist. On Polymarket it’s slow and adversarial but it exists.
Difference 3: what your position actually is
Both venues put outcome tokens in your wallet. That’s the crypto-native promise: you hold your position, not an IOU. On both venues, that’s true to a point — and on both, the point has limits.
Polymarket outcome tokens are ERC-1155s on Polygon. They can be transferred, held in any wallet, and traded on any venue that supports the standard. The Polymarket-issued pUSD collateral has all the usual centralized-stablecoin caveats (Circle/issuer freeze), but the position tokens themselves have no protocol-level clawback.
World outcome tokens are SPL Token-2022 mints. They live in your wallet, they’re real tokens — and each market’s token pair is deployed with a permanent delegate. This is a standard Token-2022 mechanism World uses for a specific, benign purpose: at settlement, the delegate burns the losing side of every user’s position automatically, which is how “one side goes to zero” is executed without requiring every loser to sign a burn tx.
But the mechanism doesn’t distinguish between “burn at settlement” and “move at any time for any reason.” The permanent delegate is a general-purpose authority — the same extension is documented as a compliance/clawback primitive elsewhere in the Token-2022 ecosystem. Whoever holds it can move or destroy any position in that market. In practice this hasn’t been used adversarially — but the capability is baked into every market’s token setup and cannot be revoked.
Layered underneath, the collateral itself is CASH, and CASH’s issuer (Bridge, a Stripe subsidiary) holds freeze and clawback authority on every CASH account independent of anything World does. If a wallet gets flagged, CASH in it can be frozen or moved by the issuer without World’s involvement. This is standard for regulated stablecoins — pUSD works the same way — but it means the money leg has two independent centralized checkpoints (Bridge on the stablecoin, World on the outcome tokens) rather than one.
Polymarket has one centralized checkpoint on the collateral leg. World has two. Neither is decentralized money.
Difference 4: the on-chain / off-chain split
One last thing that matters for anyone building on top of these systems, or reasoning about them as infrastructure rather than as products.
Polymarket’s on-chain contracts hold the collateral, hold the outcome tokens, and hold the order-book matching logic. The web interface is a nice-to-have; the market is fully on-chain and reachable from any wallet or bot that speaks the contract ABI.
World is a composed system where the on-chain half is only part of the surface:
- On-chain (Solana mainnet, permissionless read): four upgradeable programs — prediCt (collateral vault), DFlow (swap routing), JanusFI and BisonFI (maker inventory) — plus outcome tokens held in Solana’s native Token-2022 program.
- Off-chain (gated): World’s own API (
api.world.xyz) serves the market catalog and is Cloudflare-403’d to non-Phantom clients. DFlow’s quote endpoint (quote-api.dflow.net) is API-key gated — only approved integrators (Phantom) get fillable quotes.
The practical implication: the on-chain half is permissionless — anyone can call split and merge on prediCt directly, at a true 1:1 basis, bypassing the maker spread entirely — but the trading UX everyone actually uses (getting a quote, buying a specific outcome at a market price) requires access to gated backends only Phantom currently has. Our repo includes self-custody scripts that demonstrate the direct on-chain path works — no API key, no maker, no spread. But you’re building your own price discovery when you take that route.
None of this makes World less “on-chain” than Polymarket in the sense that the settlement, the collateral, and the tokens are all on-chain. It does mean that access to competitive pricing is gated behind a wallet partnership in a way Polymarket’s design doesn’t require.
Side by side
| World | Polymarket | |
|---|---|---|
| Chain | Solana | Polygon |
| Outcome tokens | Token-2022 YES/NO pairs | ERC-1155 (Gnosis CTF) |
| Collateral | CASH (Bridge / Stripe) | pUSD |
| Liquidity model | Dealer / RFQ via DFlow | Central limit order book |
| Counterparty | Market makers (JanusFI, BisonFI) | Other users |
| Trading fee | 2–3% embedded maker spread | 0.04–0.07 rate (peaks ~1–1.8%), 0% maker with rebates, geopolitics free |
| Early exit | Sell back to CASH via maker | Sell on the book |
| Resolution | Single operator key, no on-chain verify | UMA Optimistic Oracle with dispute window |
| Recourse for bad calls | None on-chain | UMA dispute + token-holder vote |
| Position seizability | Permanent delegate per market | None at protocol level |
| Collateral freeze | Bridge holds freeze + clawback | Circle holds freeze on pUSD |
| Programs immutable? | No — all four are upgradeable | Core contracts are non-upgradeable |
| Access to competitive pricing | Gated (Phantom / DFlow API key) | Open (any client can post orders) |
So what should you actually take from this
If you’re trading on either venue, the biggest practical difference is fee structure and exit friction. World has a 2–3% spread baked in; Polymarket now has category-based taker fees (up to ~1.8% on crypto, 0% on geopolitics) but zero maker fees. On like-for-like taker trades the total costs are closer than they were in 2025, but the shape is different: World’s cost is opaque and uniform, Polymarket’s is explicit and varies by category.
If you’re evaluating trust, the calculus is: do you want fast-and-centralized resolution with a single accountable operator (World), or slow-and-adversarial resolution with a formal dispute path (Polymarket)? For sports and price-feed markets where the answer is unambiguous, World’s speed is genuinely useful. For anything semantically contested — did an event “happen”? — Polymarket’s dispute mechanism exists for a reason.
If you’re building on top, know that World is not one contract. It’s four upgradeable programs plus two gated backends plus a Bridge-issued stablecoin. Chainlink is used but not verified on-chain. The permissionless on-chain path exists but bypasses price discovery. Read the reference material before you assume the token in a wallet has the properties you’d expect from a “regular” SPL token.
On the Polymarket side, building is more conventional — the contracts are the API, and you can drive them from any Polygon node. We’ve open-sourced two references that show what production-shaped integrations look like: polymarket-alpha-bot (standalone CLI, LLM-driven hedge discovery, per-user deposit wallets on V2/pUSD) and polyclaw (the same trading primitives wrapped as an OpenClaw agent skill). The write-ups — How to build a Polymarket bot using Polygon RPC and Integrating Chainstack with OpenClaw for Polymarket — walk through the CTF split/merge mechanics, CLOB API usage, and the RPC patterns that don’t rate-limit you out of a bot loop.
None of the above is a takedown. It’s a call to read what’s actually deployed rather than what’s marketed, on both venues. World is a real product with a coherent design. Polymarket is a real product with a coherent design. They’re just different designs, and pretending otherwise makes it harder to reason about either.
Reproduce this
Everything in this article is derived from on-chain state and cryptographically-verified Anchor discriminators. Full repo including addresses, scripts, IDLs, and the worked trade decode (real transaction, price/fee math to the raw unit):
FAQ
Partially. Settlement, collateral, and outcome tokens live on Solana and are readable by anyone. But resolution runs off a single operator key with no on-chain oracle verification, all four programs are upgradeable, and access to competitive pricing is gated behind Phantom’s DFlow API integration. It’s meaningfully more centralized than Polymarket, and calling it “fully on-chain” — as some launch coverage did — is a stretch.
Two independent authorities can. Each market’s outcome tokens carry a Token-2022 permanent delegate — used at settlement to burn losing legs, but mechanically capable of moving or destroying any position. Separately, CASH (the collateral) is issued by Bridge, which holds freeze and clawback authority over every CASH account regardless of what World does. Neither authority has been used adversarially in public, but both exist by design.
No. World integrates Chainlink Data Streams and CRE for outcome computation, but that happens off-chain. The on-chain resolution instruction (determine_outcome) carries no oracle account, no signed price report, and no proof — just a 2-byte value written by the operator key. This is a documented pattern (off-chain data with an on-chain settlement key) but it isn’t on-chain oracle verification, and there’s no way for the Solana runtime to confirm an outcome originated from Chainlink.
World charges 2–3% baked into the maker’s quote as spread — you don’t see it as a line item, but you pay it on every fill. Polymarket ran fee-free for years and introduced taker fees in stages through 2026: as of July 2026, taker fee rates range from 0.04 to 0.07 depending on market category (peaks at roughly 1.0–1.8% at 50/50 probability, lower toward the extremes; crypto highest, geopolitics remains free), and makers pay 0 with rebates funded from taker fees. Practically, a taker trade on Polymarket crypto costs roughly 1.5–2% all-in (fee + spread); on World a comparable trade costs 2–3% via the maker spread. Neither is free.
The on-chain half is permissionless — anyone can call prediCt.split and prediCt.merge directly and mint/burn complete sets at true 1:1 basis. Our research repo includes working scripts. But you can’t get a competitive quote for a specific outcome at market price — DFlow’s quote API is gated to approved integrators, and Phantom is currently the only one. You’d be building your own price discovery.
Neither is universally better. Polymarket has decentralized dispute resolution but slower and messier; World has fast, clean settlement but a single point of trust. Polymarket has low category-based taker fees and zero maker fees but harder onboarding (Polygon rails, pUSD); World has 2–3% spread but native Phantom UX and instant CASH payouts. They optimize for different failure modes. Pick based on what you can tolerate breaking.
Because “on-chain” is doing a lot of work in marketing copy right now, and it means different things on each venue. If you’re building analytics, arbitrage, or agent-based trading systems, you need to know: on Polymarket the contracts are the API; on World the contracts are half the API and the other half is a wallet-partnership backend. That changes what you can build and how much you have to trust.
Related reading
Building on Polymarket:
- How to build a Polymarket bot using Polygon RPC
- Integrating Chainstack with OpenClaw for Polymarket
- polymarket-alpha-bot — standalone CLI reference
- polyclaw — same primitives, OpenClaw skill
Solana infrastructure for trading and analytics:
- Solana trading infrastructure 2026: MEV, nodes, latency
- Solana node types: validator, RPC, and trader nodes
- How to build a Solana trading bot
Token-2022 mechanics (relevant to World’s design):
