Prediction Market·EVM (Polygon, Gnosis, Polygon zkEVM, Linea, Chiliz)
Azuro
Onchain prediction market protocol that supplies liquidity, oracle data and an SDK so any app can launch a sports/event betting frontend in days. Liquidity Pool + Core contracts on multiple EVMs; data delivered via subgraphs.
- 01white-label sports betting frontends
- 02prediction market dApps
- 03embedded odds widgets
- 04liquidity providing strategies
- 05telegram/social mini-apps for betting
- pnpm add @azuro-org/sdk @azuro-org/toolkit @azuro-org/dictionaries
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_AZURO_AFFILIATE | Client | Affiliate address that receives a share of the protocol fee for each bet placed via your frontend. Required to claim referral rewards. |
| NEXT_PUBLIC_AZURO_CHAIN_ID | Client | Target chain id (e.g. 137 Polygon, 100 Gnosis, 1101 Polygon zkEVM). Drives which Liquidity Pool and subgraph the SDK reads. |
Use Azuro for an onchain sports/event betting frontend. Wrap the app in `AzuroSDKProvider` from `@azuro-org/sdk` configured with the target chain and affiliate address, then read live markets via hooks: `useGames`, `useGame`, `useOutcome`, `useBetTokenBalance`. Place bets with `usePrepareBet` + `useBet` (handles approval and the LP `bet` call) — odds come from the protocol's bonded liquidity model, not a CLOB. Subgraph queries (`@azuro-org/toolkit`) drive history and PnL. Resolution feeds in from the Azuro DataFeed oracle; market metadata (sport / league / participant names) is sourced from `@azuro-org/dictionaries`.
- ⚑Liquidity is pooled (LP-style), not orderbook — odds shift with bet size and pool depth. Show estimated odds *after* slippage from `usePrepareBet`, not the raw current odds, or users will be surprised at fill.
- ⚑Each chain has its own LP, Core, subgraph URL and fee config — hardcoding mainnet endpoints on a Gnosis deploy is a common silent breakage. Always derive endpoints from the chain id via `@azuro-org/toolkit`.
- ⚑Resolution depends on Azuro's centralized DataFeed; disputes / cancellations refund stake but can delay payout. Surface `condition.status` (Created / Resolved / Canceled / Paused) in the UI.
- ⚑Bet tokens differ per chain (USDT on Polygon, xDAI/USDC on Gnosis, etc.). Don't hardcode USDC — read `useBetTokenBalance` and the LP's `betToken` address.
- ⚑Affiliate rewards only accrue if the affiliate address is passed at bet time; setting it post-hoc does not back-fill historical bets.
- ⚑Subgraph indexing can lag the chain by several blocks during congestion — for fresh state (just-placed bets, just-resolved games) read directly from the LP/Core contracts as a fallback.