Every price used by the BotRadix DEX comes from PairForge, a market-data and oracle provider. The same price is used to execute orders, value positions and decide liquidations.
How a price is produced#
- Collection. Reporters read prices from several sources: Hyperliquid, Binance, Bybit, OKX, Gate and KuCoin, with USD references from Coinbase, Kraken, Bitstamp, Gemini and Binance.US.
- Signing. Today there are three reporters. A price is valid on chain only when at least two of the three reporters signed it (a 2-of-3 quorum). This is configuration: PairForge accepts three to sixteen reporters with a strict majority.
- Publication. Signed prices are published to the PairForge hub contract on Base, together with each market's funding rate.
- Use. The DEX contracts read the price from the hub at the moment of each action and check its age and confidence.
The reporters are operated by BotRadix.
Freshness and confidence#
| Rule | Limit |
|---|---|
| Maximum age of a price to be used on chain | 10 seconds |
| Valuing, closing and liquidating (exits) | At least two matching readings, at most 10 seconds old |
| Opening or increasing risk | A price observed at or after the committed action, at most 10 seconds old, with confidence within the market group's limit |
| Synthetic pairs | Both legs observed at most 5 seconds apart |
| Pre-trade check in the terminal | Market data at most 8 seconds old and within 1.5% of the reference price (terminal defaults). Self-exit after 24 hours and frozen markets have their exceptions; see Exit without BotRadix |
Prices are published when they are needed: every action of the terminal, the keeper and the bots publishes current prices first, in the same flow.
Synthetic cross pairs#
Markets such as ETH/BTC, GOLD/BTC or AVAX/DOT are priced as the ratio of their two legs, each measured in USD:
price(A/B) = price(A in USD) / price(B in USD)They trade as a single position, settled in USDC.
Market sessions#
A market can be closed administratively (SESSION_CLOSED), for example if its data sources become unreliable. While closed, ordinary opens, closes and liquidations that need an open-session price are suspended; it is not a fixed trading-hours schedule. Pending limit orders may remain, and their first execution pays taker. Challenge, freezing and emergency procedures have their own rules, and closing a session alone does not stop valid funding.
If a market with positions stops receiving prices, anyone can open a challenge on chain; if no new observation arrives within 3 days, the market freezes at its last observed price and its positions can be closed at that price. A public emergency requires opening another challenge while positions exist and waiting 72 hours: an observation of USDC or of a market with positions since the challenge opened (even with a closed session) prevents confirmation. The administrator may declare the emergency without this wait. See Exit without BotRadix.
Security and scalability#
Today#
- Independent validation on every signature. Before signing, each reporter checks the proposal against its own market observations. If the price does not match within its confidence margin, it does not sign, and it never signs two different versions of the same round.
- On-chain checks. The PairForge hub verifies the signatures, the quorum and the age of every price before accepting it.
- Rotation and revocation. BotRadix can replace the whole reporter set in a single operation, checked on chain, and instantly revoke a compromised reporter. While the contracts are open these changes take effect immediately; with a future sealing with notice, adding reporters would wait for the notice and only revoking would stay instant. See Security and contracts.
Room to grow#
The oracle hub contract on Base supports up to 16 reporters, with a quorum that must always be a strict majority (more than half). Growing the network from today's 3 reporters to 5, 7 or 9 is an administrator configuration step: it requires no change to the contract code.
| Reporters | Signatures required per price | Reporters that can fail without interrupting prices |
|---|---|---|
| 3 (today) | 2 | 1 |
| 5 | 3 | 2 |
| 7 | 4 | 3 |
| 9 | 5 | 4 |
| 16 (maximum) | 9 | 7 |
Roadmap#
Planned as ecosystem usage grows; not yet in place:
- Separate infrastructure. Spread the reporters across different servers, providers and regions, each with its own network connection and its own mix of market sources.
- More reporters. Grow the network to 5 reporters with a quorum of 3, then to 7 or more.
- Independent references. Cross-check the prices of the main assets against public third-party oracles (for example Chainlink or Pyth) before signing them.
- Extreme volatility. Filters against price jumps not confirmed by several sources, and regular stress tests with historical market episodes.
- Independent operators. In the long term, open the reporter network to operators outside BotRadix.
Each phase will be announced in the Changelog when it is applied.
What this means for you#
- Orders fill at the oracle price, not at a book price; your maximum slippage protects you from adverse moves between preparation and execution.
- If current prices cannot be published (for example during a data or network incident), actions that need them, including closes and withdrawals with open cross positions, wait until prices are available again.
- See Risks.