The prediction market stack that takes teams 6-12 months to build, explained step by step. Click any technical detail to go deeper. Or just scroll — the plain-English version tells you everything you need to know.
If you never read another section on this page, these three steps tell you how ThousandMarkets works.
Log into your admin dashboard. Click "Create Market." Write a question: "Will ETH hit $5,000 by December 31, 2025?" Set the outcomes (Yes / No), the end date, and the resolution criteria.
Click "Create." Done.
Behind the scenes, ThousandMarkets handles all the blockchain interactions — generating token IDs, deploying conditions on-chain, initializing the oracle. You don't see any of that. You see a form. You fill it in. Your market is live.
Your audience visits your branded portal (yourname.thousandmarkets.fun). They connect their wallet. They browse your markets. They buy "Yes" or "No" tokens with USDC on Base.
Orders are matched automatically through the trading engine. Trades settle on-chain. Prices update in real time. Your users see a clean, fast trading experience.
Every trade on your market generates a taker fee that flows to your ProtocolVault — a smart contract on Base mainnet that holds YOUR revenue. You see your balance in your admin dashboard. On-chain. Verifiable. Yours.
When the market's end date arrives, the UMA Oracle determines the outcome. Winning tokens become redeemable for USDC. Losers expire worthless. The market is settled. You keep the fees. Your users keep their winnings.
That's it. Create → Trade → Earn.
Everything below explains HOW each step works under the hood. You don't need to read it to use ThousandMarkets. But if you're the kind of person who wants to know what's behind the curtain — keep scrolling.
Ready to launch? Skip the deep dive →What happens when you click "Create Market" in your admin dashboard — from form to live, tradeable market.
In your admin dashboard, you enter: the question, outcomes (Yes/No), resolution criteria, close date, resolution window, and proposer reward (USDC incentive for the resolution proposer).
Every market needs unique blockchain identifiers. The system automatically generates a questionId and a conditionId — how the blockchain tracks your market across every contract interaction.
The system calls the ConditionalTokens contract to register your market on Base mainnet. This creates the on-chain "slot" for your prediction. Now "Yes" and "No" tokens exist. They can be traded.
The system initializes your market on the UMA Oracle Adapter — telling the oracle what question is being asked, the resolution criteria, when the market closes, and when proposals can begin.
Seed your market with initial liquidity by splitting USDC into outcome tokens. Depositing $1,000 creates $1,000 of "Yes" AND $1,000 of "No" tokens (they always sum to $1). Or opt into shared liquidity and let the network provide it.
The market appears on your portal. Users can see the question, current prices, and the trading interface. They connect their wallet and start trading. From form to live market: typically under 10 minutes.
What happens when a user places an order on your portal — from wallet signature to on-chain settlement.
A trader visits your portal. They click "Connect Wallet" — MetaMask, Coinbase Wallet, Rainbow, or any WalletConnect-compatible wallet. Connected to Base mainnet.
They decide to buy YES at $0.65 for $100. Their wallet asks them to sign a message — not send a transaction. This is an EIP-712 typed data signature. It costs nothing (no gas). It's a cryptographic proof that this order was authorized.
The signed order is stored in the orderbook, waiting for someone to take the other side. Your admin dashboard shows it as an open order. The probability shifts.
Another trader — maybe on YOUR portal, maybe on another tenant's portal via shared liquidity — places a matching sell order. The prices align.
ThousandMarkets' relayer continuously scans for compatible buy/sell pairs and calls the exchange smart contract to execute on-chain. THIS is where gas is paid — for trade execution, not order placement.
The contract verifies both signatures, transfers outcome tokens, and collects your taker fee. Permanent, transparent, verifiable on Base mainnet. Your ProtocolVault receives the fee.
Prices update. The orderbook refreshes. Other traders place orders. Every trade cycles through steps 2-6. More trades → more fees → more liquid markets.
Prices represent probabilities. If YES trades at $0.64, the market thinks there's roughly a 64% chance the event happens.
YES price + NO price always equals $1.00 (the spread is the market maker's edge).
If you're RIGHT
Buy YES at $0.64 → worth $1.00
Profit: $0.36/token
If you're WRONG
Buy YES at $0.64 → worth $0.00
Loss: $0.64/token
This is how prediction markets turn collective opinion into a real-time probability estimate.
What happens when a market's end date arrives — from proposal to final settlement. Trustless, transparent, dispute-ready.
When the close timestamp arrives, trading stops. No new orders. Existing open orders are cancelled. Status: live → resolving
Anyone can propose a resolution: "I propose: the answer is YES. ETH did hit $5,000." They post a bond in USDC. If they're wrong, they lose it.
A liveness period begins (typically 2-4 hours). During this window, anyone can dispute the proposal by also posting a bond.
If nobody disputes, the resolution is accepted. The oracle adapter calls reportPayouts() setting the payout vector. Proposer gets bond back + reward. Status: settled
If disputed, resolution goes to UMA's decentralized voting (DVM). UMA token holders vote on the correct outcome. Not ThousandMarkets, not the tenant admin — community consensus. Loser forfeits bond.
After settlement, winning token holders click "Redeem" → each token = $1 USDC. The CTF contract burns tokens and transfers USDC. Losing tokens are worthless.
Sometimes markets need immediate resolution: ambiguous questions, external events, oracle delays, or regulatory concerns. Your EmergencyGuard contract enables fast resolution bypassing the normal oracle process.
Important: Emergency resolution is always recorded on-chain — transparent and auditable. Use sparingly. It's a safety valve, not a shortcut.
How trading fees flow from every transaction to your wallet — automatically, on-chain, verifiable.
In your admin dashboard, configure your taker fee in basis points. Default: 30 bps (0.30%). For every $1,000 in volume, you earn $3 in fees. Pro tier adds maker fees and referral module.
When the relayer matches orders and settles on-chain, the FeeModule automatically calculates and collects your fee. The fee routes to your ProtocolVault — not to ThousandMarkets.
Every fee from every trade accumulates in your ProtocolVault — a smart contract on Base deployed for your tenant. Verify it on Basescan anytime.
Your dashboard shows total fees (all-time, 30d, 7d, 24h), fees per market, top markets by revenue, trend over time, and referral-driven fees.
ThousandMarkets' cut of your fees: $0. Always.
Turn your most active traders into your distribution channel. Generate unique referral links. Track referred trades. Configure referral rewards. Your traders bring new traders → volume → fees → more rewards. A built-in growth flywheel.
Everything on this page, in one diagram.
You just read through (or scrolled past) the complete prediction market lifecycle:
Each of these is a multi-week engineering project on its own. Together, they're 6-12 months of full-time development for a team of experienced smart contract engineers.
Or: 1 ETH and under an hour
on ThousandMarkets.
We built the complexity so you don't have to touch it.
You get the outcome. We handle the engineering.
The smart contracts are deployed. The trading engine is running. The oracle is ready. The shared liquidity network is waiting.
Launch your prediction market. Create your first market. Watch your community trade on it.