Parl: Parimutuel Prediction Markets Protocol
Infrastructure for infinite-scale, market-maker-free prediction markets on EVM-compatible chains. Permissionless market creation with auto-categorization, optimistic oracle, and Chainlink Functions integration.
Abstract
Prediction markets are powerful tools for aggregating information and forecasting future events. However, existing implementations face a fundamental trade-off between liquidity and market breadth. AMM-based markets (like Polymarket) require active liquidity provisioning, which concentrates activity on a handful of high-volume markets. Long-tail markets — the thousands of niche or short-lived events — remain underserved.
Parl introduces a parimutuel pool mechanism that eliminates the need for liquidity providers entirely. Each market operates as an independent pool: all bets are collected, and winners split the pool proportionally. This design means any market — no matter how niche — can exist from day one with zero liquidity bootstrapping.
This paper presents the Parl protocol v0.3: its mathematical model, smart contract architecture (PoolEngine v2, MarketFactory, ParlOracle), resolution framework (Optimistic Oracle + Chainlink Functions), auto-categorization system, data API and indexer architecture, comparison with Polymarket, token economics, and value loop game design. The protocol is deployed on Avalanche Fuji testnet with full end-to-end functionality including permissionless market creation, auto-categorization, and a Polymarket-inspired user dashboard with probability displays.
1. Problem Statement
1.1 The Liquidity Bottleneck
Prediction markets require liquidity to function. In traditional order-book markets, market makers provide continuous quotes. In AMM-based markets, liquidity providers deposit assets into pools to enable trading. Both models suffer from a cold-start problem: a market with no liquidity is functionally dead.
This creates a power-law distribution of market activity: 80%+ of volume concentrates in fewer than 5% of markets. Niche, timely, or experimental events — the very class of events where prediction markets create the most informational value — never gain traction.
1.2 The Permission Barrier
In most prediction market platforms, creating a market requires either platform approval (Polymarket, Kalshi) or significant technical expertise (Augur, Gnosis). This gatekeeping limits the diversity of markets and slows the platform's ability to react to current events.
Parl solves this with permissionless market creation via a MarketFactory contract. Any user with an EVM wallet can create a market in a single transaction, paying only gas plus a minimal anti-spam creation fee. No approval, no KYC, no technical barriers.
1.3 Market Maker Incentives
AMM-based prediction markets require LPs to deposit capital into outcome-specific pools. This exposes LPs to adverse selection — informed traders bet against mispriced pools, and LPs absorb the loss. Over time, LPs demand higher fees or exit, reducing market efficiency.
Parl solves both problems by eliminating the concept of a "liquidity provider" entirely. In a parimutuel system, the bettors are the pool. Every new bet increases the pool, and the odds automatically adjust to reflect the new distribution.
2. The Parimutuel Mechanism
2.1 Historical Context
Parimutuel betting (from French pari mutuel, "mutual stake") originated in 19th-century horse racing. All bets on a race are pooled together; after deducting a commission, the pool is divided among winning tickets. The odds are not set in advance — they emerge from the distribution of bets.
2.2 Mathematical Model
Core Equations
2.3 Key Properties
Zero Slippage
Since all bets pool together, there is no slippage. Every bettor gets the same implied odds at the time of their bet.
Infinite Liquidity
A market can exist with just 1 wei deposited. The pool grows with every bet naturally.
No LPs Needed
No liquidity providers, no impermanent loss, no AMM curve math. Purely additive pools.
Fair Odds
Odds reflect the collective wisdom of all bettors, not the pricing model of an algorithm or LP.
2.4 Implied Probability & Price Display
Parl calculates and displays implied probabilities for every outcome in every market, matching the pattern used by Polymarket. The probability of outcome k winning is:
These probabilities are computed server-side by the Parl Indexer and served through the API. The frontend renders them as visual bars with percentage labels, giving users an intuitive sense of market sentiment. A market with 70% probability on outcome A and 30% on outcome B immediately signals crowd wisdom without requiring users to compute pool ratios manually.
3. Protocol Architecture
3.1 Design Philosophy
Parl is designed as a minimal protocol layer. The core contract handles three operations: create markets, place bets, and resolve + claim. Everything else — frontend UX, data indexing, notifications — is built on top as separate services.
3.2 Smart Contracts (V2)
Parl v2 introduces a three-contract architecture that separates concerns and enables permissionless market creation:
PoolEngine
0xB3702B20900AE748A68287B75b6065284081be00
The core parimutuel engine. Handles market state, bet placement, payout calculation, and resolution. In v2, createMarket() is permissionless — any address can create a market. Single contract, no proxies, minimal attack surface.
MarketFactory
0x95b38D36D50BcFd4E4c875c640EB1627b48585eC
Permissionless market creation gateway. Users call createMarket() with a small anti-spam fee (0.01 AVAX). The factory validates inputs, forwards to PoolEngine, and collects fees that can be withdrawn by the protocol owner.
ParlOracle (Optimistic)
0xb650C22EB696F68EdB14fFEd62E528E7E1FCbDC2
An optimistic oracle with a challenge window. Anyone can propose an outcome with a bond; anyone can dispute within the window; after the window expires without dispute, the market is resolved. Bonds are slashed on dishonest proposals.
ParlAutoResolver (Chainlink)
Not deployed (compiled)
A Chainlink Functions consumer for automated resolution via external APIs (CoinGecko, sports scores, weather). Registered as a resolver on PoolEngine; triggered by anyone paying for the request.
3.3 Off-Chain Services
Parl Indexer (Rust)
Monitors the chain for PoolEngine events using ethers-rs. Maintains a PostgreSQL database of markets, bets, claims, and fee ledger. Auto-categorizes markets on creation. Polls every 5 seconds with exponential backoff for rate-limit resilience.
Parl API (Rust, Actix-web)
REST API exposing market data, probability calculations, categories, simplified market listings (Polymarket-compatible format), and bettor queries. Six endpoints serving data to the frontend and third-party integrators.
Parl Frontend (Next.js)
Dune-inspired dark UI with Space Grotesk typography, gradient accents, and OLED backgrounds. Features include category-filtered market browsing, probability bars, real-time search, wallet connect via MetaMask, user dashboard with charts, and a Create Market modal.
End-to-End Data Flow
4. Resolution & Oracles
4.1 Resolution Model
Each market has a designated resolver address. Only this address can call resolveMarket(marketId, outcomeIndex, proof). After resolution, winners can claim their payout at any time via the claim(marketId) function.
4.2 Optimistic Oracle (ParlOracle)
The ParlOracle implements a propose-dispute-resolve pattern inspired by UMA's optimistic oracle design but simplified for Parl's use case:
4.3 Chainlink Functions (Planned)
For automated, data-driven resolution, Parl includes ParlAutoResolver, a Chainlink Functions consumer contract. This enables markets to resolve automatically based on real-world API data:
Crypto Prices
CoinGecko / Binance API — "Will BTC exceed $100k?"
Sports Scores
TheSportsDB / ESPN API — "Will Lakers win?"
Weather Data
OpenWeatherMap API — "Will temp exceed 30°C?"
4.4 Oracle Options Summary
| Type | Trust Model | Best For |
|---|---|---|
| EOA (Manual) | Single party | Test markets, managed events |
| ParlOracle (Optimistic) | Bonded proposer + dispute | Subjective outcomes, sports, politics |
| Chainlink Functions | Decentralized computation | Data-driven events (prices, weather) |
| Gnosis Safe (Multisig) | Multi-party M-of-N | Community-governed markets |
5. Permissionless Market Factory
5.1 Motivation
In Parl v1, only the contract owner could create markets. While this was safe for initial testing, it fundamentally limited the protocol's utility. V2 introduces the MarketFactory contract — a permissionless gateway that any user can call.
5.2 Factory Design
User Flow
5.3 Anti-Spam & Economics
Market creation requires a 0.01 AVAX fee (~$0.0003 at current testnet prices, negligible in value but sufficient to prevent spam attacks). The fee is configurable by the protocol owner. Collected fees accumulate in the factory contract and can be withdrawn by the owner via withdrawFees().
Excess payments are automatically refunded to the user. If a user sends 0.1 AVAX for a 0.01 AVAX fee, 0.09 AVAX is returned immediately in the same transaction.
Factory Contract Interface
factory.createMarket(keccak256(...), ["Yes","No"], oracle, 200)
// with value: 0.01 AVAX
6. Auto-Categorization
6.1 Category Detection
Parl implements a server-side auto-categorization system that analyzes market outcome strings and assigns a category. Categories are stored in the database and served via the API, enabling Polymarket-style category filtering in the frontend.
6.2 Category Hierarchy
The categorization engine uses keyword matching with a priority hierarchy to avoid false positives. For example, "Party A wins election" contains "win" (sports keyword) but "election" (politics keyword) takes priority:
| Priority | Category | Keywords | Example |
|---|---|---|---|
| 1 (highest) | Politics | election, president, congress, senate, party, vote | "Party A wins election" |
| 2 | Crypto | btc, bitcoin, eth, ethereum, solana, defi, tvl, nft | "BTC exceeds $100k" |
| 3 | Weather | temperature, storm, hurricane, celsius, climate, rain | "Temp above 30°C" |
| 4 | Technology | ai, gpt, openai, spacex, tesla, satellite, launch | "GPT-5 launches" |
| 5 (lowest) | Sports | nba, nfl, team, win, match, goal, soccer, ufc | "Lakers vs Celtics" |
6.3 Frontend Integration
The frontend displays category badges with distinct colors:
Users can filter markets by category via tab buttons in the frontend, and the API supports ?category=sports query parameters for programmatic filtering. The /api/categories endpoint returns all categories with market counts.
7. Data API & Indexer
7.1 Indexer
The Parl Indexer is a Rust binary that connects to Avalanche Fuji via WebSocket/HTTP and listens for PoolEngine events (MarketCreated, BetPlaced, MarketResolved, ClaimProcessed). It maintains a PostgreSQL database with 6 tables:
| Table | Rows | Purpose |
|---|---|---|
| markets | Active | Market metadata, status, pool size, category |
| bets | Active | Bet receipts per user per market |
| claims | 0 | Claim records for resolved payouts |
| fee_ledger | 0 | Accumulated protocol fees |
| indexer_state | 1 | Last indexed block for resume |
7.2 API Endpoints
| Endpoint | Description | Params |
|---|---|---|
| GET /api/markets | List markets with probabilities | ?status=&category= |
| GET /api/markets/:id | Single market detail | UUID or hex ID |
| GET /api/markets/:id/bets | Bets for a market | UUID |
| GET /api/markets/:id/payout/:addr | Calculate payout | UUID + address |
| GET /api/bets | Bettor's bet history | ?bettor=0x... |
| GET /api/simplified-markets | Lightweight market list | ?category= |
| GET /api/categories | Categories with counts | None |
| GET /health | Service health | None |
7.3 Simplified Markets Format
The /api/simplified-markets endpoint returns a lightweight JSON format designed for frontend tables, inspired by Polymarket's API format:
[
{
"id": "9a228815-...",
"question": "BTC exceeds $100k | BTC below $100k",
"outcomes": ["Yes", "No"],
"status": "active",
"category": "crypto",
"total_pool_avax": "0.0100",
"volume_avax": "0.0100",
"probabilities": [55.0, 45.0],
"created_at": "2026-07-02T00:26:50Z"
}
]8. Token Economics
8.1 Fee Model
Parl generates revenue through platform fees on each market. Market creators set the fee at creation time, expressed in basis points (100–500 bps = 1%–5%). Fees are deducted from the total poolbefore payout distribution.
Fee Tiers
| Tier | Fee (bps) | Requirement | Best For |
|---|---|---|---|
| Standard | 200 (2%) | None | General markets |
| Premium | 100 (1%) | Stake 1,000 $PARL | Power creators |
| Zero | 0 (0%) | Stake 10,000 $PARL | Bootstrapping |
| Negative | −100 (−1%) | DAO approval + stake | Subsidized / featured |
Fee Distribution Flow
💡 Negative fees are a powerful bootstrapping tool. A market creator (or third party) can subsidize a market so that winners receive morethan the total pool — the difference is covered by a subsidy pool. This lets platforms attract users with “boosted odds” events.
8.2 $PARL Token Model
$PARL is the native protocol token, designed to align incentives across market creators, bettors, stakers, and the broader ecosystem. No token is deployed on testnet; all mechanics below are planned for mainnet launch.
Token Utility
Fee Discounts
Stake $PARL to access lower fee tiers — from 2% down to 0% or even negative fee markets.
Staking Rewards
25% of all protocol fees are distributed to $PARL stakers pro-rata. Yield scales with volume.
Market Creator Bonds
Creators stake $PARL to signal quality. Higher stakes unlock lower fees and featured placement.
Governance
$PARL holders govern fee splits, treasury allocation, oracle whitelists, and protocol parameters.
Oracle Staking
Resolvers stake $PARL as a bond against dishonest resolution. Slashed on dispute loss.
Buyback & Burn
A portion of treasury fees is used to buy back $PARL from the market, creating deflationary pressure.
Token Supply & Distribution (Proposed)
| Allocation | % of Supply | Vesting |
|---|---|---|
| Ecosystem & Rewards | 40% | 4-year linear vest |
| Team & Advisors | 20% | 3-year cliff + 2-year linear |
| Investors | 15% | 2-year cliff + 1-year linear |
| Community Sale | 10% | No lock, TGE available |
| Treasury | 10% | DAO-governed |
| Liquidity Pool | 5% | Initial DEX listing |
Token Flywheel
💡 Tokenomics is in active design. All figures above are proposals for community discussion. No $PARL token is deployed or available for trading. TGE is not before mainnet.
9. Value Loops & Game Design
Prediction markets, at their core, are games of coordination and prediction. The parimutuel model unlocks game-design primitives that AMM-based markets cannot replicate. This section explores the engagement loops, social mechanics, and game systems that turn Parl from a financial protocol into a platform people want to use.
9.1 Pool Boosters (Tipping)
Anyone can deposit additional funds into a market pool aftercreation. This increases the total payout for winners without affecting the distribution of existing bets.
Use Cases
9.2 Outcome NFTs (Bets as Collectibles)
Every bet is minted as an NFT — a non-transferable or optionally transferable token representing a position in a market. This turns betting into a collecting mechanic.
Bet Provenance
Each NFT tracks when you bet, how much, and at what implied odds. A permanent on-chain record.
Collector Rarity
Early bets on long-shot outcomes that win are rare artifacts. A bet on an event at 100:1 odds is a trophy.
Outcome Badges
Correctly predicting a series of events earns composite badges (e.g., 'Perfect Week', 'Oracle Tier 3').
Secondary Markets
Transferable bet NFTs enable a secondary market for positions. Sell your winning ticket before resolution.
9.3 Manager Mode
Inspired by the engagement systems behind EA Sports, Monopoly Go's event loops, and NBA Top Shot's collection mechanics, Manager Mode is a gamified layer over Parl markets:
Manager Mode Mechanics
9.4 Bettor Reputation & Trust Scores
Every address builds an on-chain reputation based on prediction accuracy, volume, and longevity. This reputation feeds into market creation trust scores.
Oracle Score
% of correct predictions over lifetime.
Volume Score
Total AVAX wagered across all markets.
Sybil Resistance
Linked to on-chain identity (ENS, Gitcoin Passport).
9.5 Social & Viral Mechanics
Shareable Prediction Cards
Auto-generated images of your bet and implied odds. Designed for Twitter, Telegram, and Farcaster.
Referral Loops
Refer a friend, earn a % of their first week's fees.
Market Embeddings
Any market can be embedded as an iframe or widget.
Reaction Markets
Quick one-click prediction on live events. Snackable, shareable.
9.6 The Flywheel
10. Comparison with Polymarket
Polymarket is the dominant prediction market platform by volume, using a CLOB (Central Limit Order Book) model with AMM-like liquidity provision via CTF (Conditional Token Framework). Below is a detailed comparison with Parl's parimutuel approach:
| Dimension | Parl | Polymarket |
|---|---|---|
| Market Model | Parimutuel pool | CLOB + CTF (ERC-1155 tokens) |
| Liquidity | Self-funding (bettors = pool) | Requires LP deposits |
| Slippage | Zero | Concentration-dependent |
| Gas per bet | ~80k wei | ~200k wei (token mint + swap) |
| Market Creation | Permissionless (via Factory) | Platform-approved / gated |
| Long-tail Viability | ✅ Any event works day 1 | ❌ Needs LP bootstrapping |
| Oracle Model | Optimistic + Chainlink | UMA Optimistic Oracle |
| Dispute Mechanism | Bonded challenge window | UMA DVM (governance vote) |
| Data API | Open, 8 endpoints | Open (Gamma, Data, CLOB APIs) |
| Frontend | Open source, customizable | Proprietary |
| Token | $PARL (planned) | No native token |
| Game Mechanics | Built-in (Manager Mode) | None |
| Auto-Categorization | ✅ | ✅ |
| Implied Probability | ✅ Pool ratio display | ✅ AMM price display |
| Chains | Avalanche Fuji (testnet) | Polygon (mainnet) |
| Audit Status | Not yet | Audited |
| SDK / API Access | REST API, open | REST + WebSocket, gated |
10.1 Key Takeaways
Polymarket's CLOB model provides deep liquidity for high-volume markets (like political events) and enables sophisticated trading strategies. However, it suffers from the cold-start problem — new markets require LP deposits before any trading can occur.
Parl's parimutuel model is fundamentally better suited for long-tail markets — the thousands of niche events where prediction markets create the most informational value. A market for "Will it rain in Jakarta tomorrow?" can exist with just 0.01 AVAX in the pool and still function perfectly.
Additionally, Parl's permissionless creation, game mechanics, and open-source frontend make it more accessible for developers and communities to build on top of the protocol.
11. Product Roadmap
Phase 0 — Testnet
✅ Active (v2)- ›PoolEngine v2 deployed (permissionless createMarket)
- ›MarketFactory live with 0.01 AVAX creation fee
- ›ParlOracle (Optimistic Oracle) deployed & verified
- ›ParlAutoResolver compiled (Chainlink Functions)
- ›Indexer + API + Frontend with categorized markets
- ›Auto-categorization (sports, crypto, politics, weather, tech, general)
- ›Probability calculations & implied odds display
- ›Polymarket-inspired UI with Dune design tokens
- ›User dashboard with wallet connect, charts, bet history
Phase 1 — Mainnet Alpha
🔜 Q3 2026- ›Smart contract audit (third-party)
- ›Multi-chain deployment (Ethereum, Base, Arbitrum)
- ›Multisig oracle support (Gnosis Safe)
- ›Pool boosters (market tipping)
- ›Creator reputation system
- ›SDK / API public documentation
- ›Token generation event ($PARL)
Phase 2 — Gamification
🔜 Q4 2026- ›Manager Mode (streaks, XP, quests)
- ›Outcome NFTs & crafting
- ›Bettor reputation & trust scores
- ›Dispute mechanism with bonded challenges
- ›Leaderboard and squad systems
- ›Mystery markets
Phase 3 — Social & Ecosystem
🔜 2027- ›Referral & syndicate systems
- ›Shareable prediction cards (OG images)
- ›Market embeddings / widgets
- ›Aggregator API for third-party frontends
- ›Push notifications / webhooks
- ›Conditional markets (if-this-then-that)
- ›Permissionless oracle network
- ›Mobile SDK (React Native)
12. Risk Factors
Smart Contract Risk
HighThe PoolEngine contract has not been formally audited. Bugs could result in loss of funds. Users should only deposit what they can afford to lose.
Oracle / Resolver Trust
HighThe resolver address controls market outcomes. A malicious or compromised resolver can resolve dishonestly. Production systems should use multisig, ParlOracle, or Chainlink.
MarketFactory Fee Risk
MediumThe creation fee is configurable by the owner. While locked to 0.01 AVAX for testnet, a malicious owner could raise it. Future versions will include fee caps.
No Dispute Mechanism (v0.1)
MediumThere is no on-chain dispute or challenge mechanism in the current version. Resolved outcomes are final from PoolEngine's perspective. The ParlOracle provides this at the oracle layer.
Testnet Limitations
LowParl is deployed on Fuji testnet. AVAX on testnet has no real value. The protocol may behave differently on mainnet with real economic stakes.
Regulatory Risk
VariablePrediction markets operate in a complex regulatory landscape. Operators should seek legal counsel before launching production markets.
⚠️ Disclaimer: This whitepaper describes a protocol in active development. All specifications are subject to change. Nothing in this document constitutes financial or legal advice.
13. Conclusion
Parl introduces a novel approach to on-chain prediction markets by leveraging the parimutuel mechanism. By eliminating the need for liquidity providers and AMM curves, Parl enables a fundamentally different market structure — one where any event, no matter how niche, can have a liquid market from the moment of creation.
The protocol is live on Avalanche Fuji testnet (v2 contracts) with full functionality: permissionless market creation via MarketFactory, auto-categorization across six categories, an Optimistic Oracle for honest resolution, Chainlink Functions integration for automated data-driven resolution, a comprehensive data API, and a Polymarket-inspired user dashboard with probability displays.
With the inclusion of token economics designed to align incentives and game mechanics inspired by the best engagement systems in consumer technology, Parl is positioned not just as a financial protocol — but as a platform that people genuinely enjoy using.