Project Introduction
Beacon — signal the market, settle on-chain.
Beacon is a binary prediction market built natively on Circle Arc. Trade simple Yes/No questions with USDC — the chain's own gas token — and let a trusted oracle settle the outcome. No order books, no leverage, no complexity.
What it is
Prediction markets turn beliefs into prices. On Beacon, every market is a single binary question — “Will X happen by time T?” — with two outcomes, YES and NO. The market price is the crowd's honest estimate of the probability, expressed in the price of a YES share.
Beacon deliberately keeps the mechanics minimal: a fixed-price capped AMM where 1 USDC = 1 share. It is not the most capital-efficient market, but it is correct, transparent, and easy to reason about.
How it works
- 1
Buy a side
Send USDC to mint YES or NO shares — one share per USDC, minus a small fee. Your cost is collateralized in the market's pool.
- 2
The oracle resolves
At expiry, the market's oracle calls
resolve(yesWins). The outcome is recorded on-chain, exactly once. - 3
Winners split the pool
The winning side redeems the entire pool pro-rata — their principal plus the losing side's collateral. Losers go to zero. Call
claim()to withdraw.
Settlement math
pot = yesPool + noPool your_payout = your_shares × pot / winning_pool implied_yes = yesPool / pot
Why Circle Arc
- ◆ USDC is native. Gas, collateral, and payouts are all the same USDC — no token swaps or wrapped assets.
- ◆ Sub-second finality. Trades settle instantly, no confirmations to wait for.
- ◆ One asset, one balance. Beacon uses native value (18 decimals) end-to-end, sidestepping the 6/18-decimal footgun.
Design principles
USDC-native
Deposit, trade, and claim in USDC — the chain's gas token.
Trusted oracle
A designated resolver settles each market exactly once.
No order book
Fixed 1 USDC = 1 share. No spreads, no slippage.
On-chain auditability
Every buy, resolve, and claim is a verifiable event.
Idempotent settlement
Each run settles once; retries cannot double-pay.
Guarded money path
Owner, pause, and reentrancy protection on every rail.
Technology
Smart contracts
Foundry · Solidity ^0.8.24 · OpenZeppelin 5
MarketFactory deploys and registers markets; BinaryMarket holds pools, buy/resolve/claim.
Frontend
Next.js 15 · TypeScript · Tailwind · wagmi/viem
App Router, reactive market data, live activity feed, SPECTRAVOTE visual theme.
FAQ
What does the price mean?
The implied probability of YES equals yesPool / (yesPool + noPool). A 70% YES price means the market believes the event is 70% likely.
What is the fee?
A small bps fee is taken off each buy (default 1%) and sent to the fee recipient. The fee is the only house edge — winners split the rest.
Who resolves markets?
Each market has an oracle address. In this demo the deployer is the oracle; the architecture supports swapping in Chainlink or UMA.
Can I lose money?
Yes. If you hold the losing side, your shares are worth zero. Never risk more than you can afford to lose.
What happens if the winning side has no buyers?
Then there is nothing to redeem on that side; the pool stays in the contract. This edge case is noted in the docs.
Roadmap
- ✓ Fixed-price capped AMM (this MVP)
- → LMSR / CPMM pricing for capital efficiency
- → Chainlink / UMA oracle integration
- → ERC-1155 share tokens & secondary transfer
- → Event-driven indexing & richer analytics