Your deposit address is the contract
When you tap Participate in Telegram, the bot doesn't ask you to connect a wallet or sign anything. It shows you a personal deposit address and you send plain USDC to it. That's the whole interaction.
The trick is in how that address is made. It is derived — before any money moves — from your market, your side, and crucially your payout wallet, all baked immutably into the address itself. There is no database row deciding where your money can go. Not the bot, not an admin, not a hacker with the bot's keys can ever point your funds anywhere except back to you or into the market you chose.
A market only goes on-chain once both sides have at least $1. Until then your USDC just waits in escrow. If the gate is never met, anyone can trigger your refund — and "anyone" is safe, because the refund can only ever pay your wallet.
send USDC
The pool: everyone against everyone
A young market is pari-mutuel — the system racetracks have used for 150 years. You don't trade against a price. You put money on a side, and when the market resolves, the winners split the entire pot in proportion to their stakes (minus a 2% fee).
That means the "odds" you see are live, not locked. Every new entry on your side dilutes your share of the pot; every entry against you fattens it. Your final terms are set by the pool ratio at the moment the market locks — not when you participate.
payout = your stakewinning pool × (total pot − 2% fee)
Try it. Drag the pools and watch what a $100 YES entry would pay — computed with the contract's own floor-rounded pro-rata math.
Graduation: the pot becomes a market
If the pool reaches $1,000 while the implied price sits between 10¢ and 90¢, the market graduates — in place, in one atomic transaction. Three things happen at the frozen clearing price p = YES pool ÷ total:
Your stake → shares
YES staker: s ÷ p shares-worth
NO staker: s ÷ (1−p) shares-worth
Worth exactly what your participation was worth the moment the pot froze. Nobody gains or loses at graduation itself.
The φ carve seeds the curve
x · y = k, opened at price p
15% of the pot becomes the market's own liquidity. It is not taken — it returns to participants at resolution through the waterfall.
The honest trade-off: graduation crystallizes your odds at the clearing price. Money that arrives later can no longer dilute you — but it can no longer fatten your payout either. You swap exposure to future flow for the ability to sell your position any time before close. That trade-off is the product.
The curve: x·y=k until close
After graduation the market quotes a real price from a constant-product market maker — the same mechanism behind Uniswap, specialized for YES/NO shares that each redeem at $1 if right, $0 if wrong.
Buying YES pushes the YES price up along the curve; every trade pays a 2% fee, and half of every fee flows back to the original participants — compensation for the φ they lent to the pool.
Be honest with yourself about depth: a curve seeded with $150 is thin. The simulator below shows the real slippage — a $100 market order visibly moves the price. The price bound on your deposit card is what protects you: a fill can never execute worse than the bound printed into your deposit address.
Sells are signed by your wallet only. The bot cannot sell, shrink, or move your position — it never could, at any stage.
Settlement & the waterfall
When the verdict lands, every winning share redeems for exactly $1. Then the loan comes home: the market's own liquidity (the φ carve, plus the participants' half of all trade fees) is cashed out at outcome value and poured into the waterfall pot, which is split among the winning side's original participants, pro-rata by their graduation stakes.
This winner-weighting has a beautiful consequence, verified to the cent: a graduated market where nobody traded pays winners exactly what the pari-mutuel pot would have paid (gross of fee). Graduation is economically invisible unless someone actually used the curve.
The INVALID case is different. If the market can't be resolved, every share — YES or NO — redeems at $0.50, plus a stake-weighted waterfall slice. On a lopsided market this is not a refund: at p = 0.60, a $300 YES participant gets back ~$257.50 and a $250 NO participant ~$303.13 — value moves from the majority to the minority side. Before graduation, INVALID refunds stakes in full. After it, you hold shares, and shares is what gets valued.
at outcome value
trade fees
split pro-rata by graduation stake — the loan returns to the lenders
If the bot disappears tomorrow
The bot moves the market through its life — it locks, graduates, settles. But it is deliberately built with no power over destinations, and every stage has a public escape hatch on a timer that anyone can pull:
What the operator can never do, by construction
- send your money to any address that isn't yours or the market's
- change your payout wallet after your deposit address exists
- sell, shrink, or transfer your position
- fill your deposit-card buy at a worse price than the bound printed into the address
- keep your funds after death — every state has a public exit
What you do trust the operator for: declaring the outcome honestly and on time. The hatches bound a dead bot, not a lying one — that's the residual trust in this design, and you should know it. The hatch delays are per-market parameters sealed into the market's commitment at birth — the values above are the current defaults, and the contract caps every trading window at 400 days.
The simulator
A whole market life in your hands. Runs the contract's exact integer math — same rounding, same guards, same dust. Differentially tested against the real Solidity contract: 436 on-chain assertions across 20 replayed lifecycles, all exact.
ledger
participants
| who | in | position | out | P&L |
|---|