> For the complete documentation index, see [llms.txt](https://docs.evently.market/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.evently.market/product/prediction-markets.md).

# Prediction Markets

## Overview

evently Markets is the platform's core product — a **LMSR-based prediction market** where anyone can create or trade on outcomes using USDm (the MegaETH stablecoin).

You don't bet. You **trade your conviction**. Information becomes a financial asset — priced by the market, settled on-chain, with instant finality on MegaETH's \~10ms blocks.

Markets cover Crypto, Politics, Fun, Technology, Business, Science, World, Entertainment, Pop Culture, and more. Many markets are sourced from Polymarket and display live Polymarket odds alongside evently's own prices for comparison.

Each outcome is represented as a tradable **ERC-1155 share**. One winning share redeems for exactly **1 USDm** after market resolution — regardless of total volume or how many people traded the same way.

***

## Access

Markets are structured around two independent whitelists:

* **Traders** — during beta, access requires an invite code or waitlist approval. At public launch, trading is open to all.
* **Market creators** — always require explicit creator whitelist approval. This applies even at public launch. Contact the evently team to apply.

To gain trader access during beta:

* **Invite code** — redeem a code from an existing member
* **Waitlist** — submit your wallet at [evently.market/markets](https://evently.market/markets)

***

## Fee Structure

| Fee           | Recipient                   | Basis Points               |
| ------------- | --------------------------- | -------------------------- |
| Creator fee   | Market creator              | 100 bps (1%)               |
| Treasury fee  | evently protocol treasury   | 100 bps (1%)               |
| Resolver pool | Resolver / staking post-TGE | 50 bps (0.5%)              |
| **Total**     |                             | **250 bps (2.5%) — fixed** |

Admin markets (created by evently team): creator cut goes to treasury instead.

***

## Pricing Mechanism — LMSR

Prices are determined by the **Logarithmic Market Scoring Rule (LMSR)**, the same mechanism used by Polymarket. The LMSR guarantees that:

* Being correct always yields a profit (unlike parimutuel)
* Prices always sum to exactly 100%
* The market maker (AMM) is always solvent

**Cost function:** `C(q) = b × ln( Σ exp(q[i] / b) )`

**Implied probability of option i:** `P(i) = exp(q[i]/b) / Σ exp(q[j]/b)`

`b = 200 USDm` controls price sensitivity. At creation all options start at equal probability (e.g. 50/50 for binary markets).

***

## Order Matching — CLOB + AMM

Trades are routed through two layers:

1. **CLOB (Central Limit Order Book):** resting limit orders are matched first at price-time priority
2. **LMSR AMM:** any remaining budget is priced by the AMM as market maker of last resort

**Buying:** CLOB ask orders at or below your price are filled first. Remainder goes to the AMM.

**Selling:** instant sell to the AMM via `sellToAMM()` with mandatory slippage protection (`minUsdmOut`), or post a limit ask via `placeOrder(SELL, ...)`.

Each address can hold up to **10 active resting orders per market** (across all options and sides). The overall book cap remains 200 orders per (market, option, side).

***

## Market Categories

| Category          | Examples                                           |
| ----------------- | -------------------------------------------------- |
| **Crypto**        | Price targets, DeFi TVL milestones, token launches |
| **Politics**      | Elections, policy outcomes, geopolitical events    |
| **Fun**           | Memes, viral trends, community bets                |
| **Technology**    | Product launches, tech industry outcomes           |
| **Business**      | M\&A, earnings, IPOs                               |
| **Science**       | Research outcomes, discoveries                     |
| **World**         | International events, macro                        |
| **Entertainment** | TV, film, music                                    |
| **Pop Culture**   | Awards, celebrity events, cultural moments         |

***

## Market Lifecycle

```
Active → BettingClosed → Resolved → [Disputed] → Finalized
                                          |
                                    Cancelled / Slashed
```

### 1. Active

Shares can be bought and sold. Market is open until `bettingDeadline`.

### 2. BettingClosed

Deadline passed. No more trades. Waiting for resolution.

### 3. Resolved

Creator declares the winning option with a mandatory **evidence hash** (on-chain audit trail). A **24-hour dispute window** opens.

### 4. Disputed

Any address that has traded on the market can dispute the resolution by posting **50 USDm collateral**. The `disputeResolver` (a dedicated role, separate from admin) adjudicates with a mandatory evidence hash. The dispute window is 24 hours after resolution.

**Admin disputes are free** — admin can dispute any market without posting collateral (security function, not a profit mechanism). Imported Polymarket markets can be disputed under the same rules.

### 5. Finalized

No dispute raised (or dispute settled). Winners can redeem shares at **1 USDm each**.

### 6. Cancelled

Markets with no trading activity can be cancelled by the creator, admin, or anyone after `resolutionDeadline`. **Markets with any trading activity cannot be cancelled** unless `resolutionDeadline` has passed — they must be resolved. On timeout cancellation, any accrued creator fees are confiscated to the treasury.

### 7. Slashed

Admin can slash a market in `Active`, `BettingClosed`, `Resolved`, or `Disputed` status. Cannot slash `Finalized`, `Cancelled`, or already-`Slashed` markets. Creator collateral goes to treasury; shareholders receive a pro-rata refund from the pool + subsidy.

***

## Market Creation

### Creator Whitelist

Market creation requires explicit approval on the creator whitelist — separate from the trader whitelist and always enforced. Apply via the evently team.

### Community Markets (Creator-Whitelisted Users)

* Requires **50 USDm collateral** + LMSR subsidy (`b × ln(n)` USDm)
* Collateral returned on honest resolution
* Creator earns **1% of all volume**, claimable after finalization
* Must set clear `resolutionCriteria`
* 2 to 4 options; question max 300 characters; options max 100 characters each
* Betting window must be at least 1 hour (prevents flash markets)

### Official Markets (Admin)

Created by the evently team — no collateral required. Displayed with an **Official** badge. Many are sourced from Polymarket with live odds via the CLOB API.

### Imported Polymarket Markets

Any creator-whitelisted user can mirror a Polymarket market by paying a **10 USDm one-time import fee** (to treasury). The Polymarket `conditionId` must be a valid 66-character lowercase hex string starting with `0x` — duplicates are blocked on-chain.

### Oracle Markets

Creator-whitelisted users can create binary price-feed markets that resolve automatically. Requires exactly 2 options and a valid Redstone price feed ID (ETH, BTC, SOL, MEGA). Collateral and fees are the same as standard markets. See the [Oracle Markets](#oracle-markets) section below.

***

## Trading

```
placeOrder(marketId, optionIndex, side, quantity, pricePerShare, minFill)
```

* `side`: BUY or SELL
* `pricePerShare`: limit price in USDm (18 decimals), must be between 0 and 1
* `minFill`: slippage guard — reverts if total shares filled < this value
* BUY orders escrow USDm upfront; SELL orders escrow shares upfront

For instant AMM sells:

```
sellToAMM(marketId, optionIndex, shares, minUsdmOut)
```

`minUsdmOut` is required and prevents sandwich attacks against the AMM.

***

## Dispute Rewards — Monthly VRF Lottery

When a dispute is settled **in the disputer's favour** (creator was wrong):

* Creator loses their 50 USDm collateral. **25 USDm** goes to the disputer as a reward (regular disputer also receives back their own 50 USDm collateral, totalling 75 USDm). If admin disputed, the full 50 USDm goes to treasury.
* All creator accrued fees are slashed to treasury.
* **30% of the total net treasury gain** (slashed collateral portion + slashed fees) is allocated to the current month's lottery pool.

At the end of each 30-day cycle, `distributeMonthlyDisputeRewards()` draws a **single winner** using **Drand BLS12-381 VRF** (MegaETH native precompile). The entire pool goes to that winner — winner-takes-all. The winner index is derived from `keccak256(vrfProof) % count`, verified on-chain.

This incentivises honest dispute participation without creating runaway dispute abuse, and adds provably fair randomness to the outcome.

***

## Oracle Markets

Oracle markets are binary markets where the outcome is resolved **automatically** from a live price feed — no human resolver needed.

Instead of a creator calling `resolveMarket()`, a keeper reads the on-chain Redstone price and calls `resolveMarketWithOracle()`. The contract verifies the price signature on-chain (≥3 signers from `redstone-primary-prod`) and resolves instantly.

### How it works

| Field             | What it means                                               |
| ----------------- | ----------------------------------------------------------- |
| **Price feed**    | The asset being tracked (ETH, BTC, SOL, MEGA)               |
| **Strike price**  | The price threshold in USD (8 decimal places)               |
| **Above / Below** | Whether option 0 wins if price is above or below the strike |

**Example:** *"Will ETH be above $3,000 at 31 May 00:00 UTC?"*

* Strike = `300000000000` (3000 × 10⁸)
* Strike Above = `true`
* If the Redstone ETH/USD price ≥ $3,000 → option 0 ("Yes") wins
* If below → option 1 ("No") wins

### Creating an oracle market

Oracle markets require exactly **2 options** and a whitelisted creator, just like regular markets. The additional fields (price feed, strike, direction) are set at creation and cannot be changed. Collateral and fees work identically to standard markets.

### Resolution

Any address can trigger resolution once the betting deadline has passed and before the resolution deadline expires. Resolution is permissionless — no keeper trust required, since the price data is cryptographically signed by Redstone validators on-chain.

***

## Lucky Trader Weekly Raffle

Every week, evently picks one active trader at random to win a **USDm bonus** from the protocol treasury.

### How to enter

Just trade. Any call to `placeOrder` or `sellToAMM` during the current week automatically enters your address into that week's raffle. You are entered **at most once per week** — submitting multiple trades doesn't give more entries.

The raffle tracks up to **500 unique addresses** per week.

### Winner selection

At the end of the week, the admin draws the winner using **Drand BLS12-381 VRF** (MegaETH's native randomness precompile). The winner address is derived from `keccak256(vrfProof) % traderCount` — fully verifiable on-chain. The result is final and cannot be replayed.

The winner receives the full bonus in USDm, paid directly from the treasury. The `LuckyTraderWinner` event is emitted and displayed live in the **Lucky Trader Banner** on the frontend.

### Frontend banner

The `LuckyTraderBanner` component on the markets page shows:

* The current week's eligible trader count
* The latest winner (address + bonus amount), flashing green when a new winner is drawn

***

## Redeeming Winnings

After finalization:

```
redeemWinnings(marketId)
```

Each winning share redeems for **exactly 1 USDm**. Solvency is guaranteed by the LMSR invariant: `poolBalance + subsidyDeposited >= total winning shares`.

***

## Polymarket Integration

Official markets import odds and volume data from [Polymarket](https://polymarket.com) via the Gamma API and CLOB price history API. Polymarket odds are displayed for reference — evently prices are set independently by the LMSR AMM.

***

## Constants

| Constant                       | Value                          |
| ------------------------------ | ------------------------------ |
| Creator collateral             | 50 USDm                        |
| Import fee (Polymarket)        | 10 USDm                        |
| Dispute collateral             | 50 USDm (waived for admin)     |
| Dispute window                 | 24 hours                       |
| Finalization buffer            | +1 hour                        |
| LMSR b parameter               | 200 USDm                       |
| Max options per market         | 4                              |
| Min options per market         | 2                              |
| Min betting window             | 1 hour                         |
| Min trade                      | 0.001 shares (1e15)            |
| Min order value                | 1 USDm                         |
| Max orders per book            | 200 per (market, option, side) |
| Max orders per user per market | 10                             |
| Max pause duration             | 72 hours                       |
| Treasury withdrawal delay      | 24 hours                       |
| Dispute lottery share          | 30% of treasury gains          |
| Dispute lottery cycle          | 30 days                        |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.evently.market/product/prediction-markets.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
