BotRadixBotRadixDocumentation

Smart contracts

Public contract addresses, upgradeability and administrative controls.

The BotRadix DEX runs as smart contracts on Base mainnet (chain ID 8453). This page lists the official addresses, explains what each contract does and describes, without simplification, the controls that the BotRadix administrator holds.

The Official v2.2 contract addresses section details fixed components, replaceable logic, upgrade functions and who signs. Consolidation phase, with sealing planned by component; currently unsealed with 0 h notice: the administrator can change the logic at any time, without advance notice.

Official addresses#

ContractAddressRole
DEX router0x740E207d90ec9D82fce040F8DA0268dB761F364EEntry point for trading, isolated margin, orders, the vault and on-chain reads
Cross margin0x79ED1002F842DE2A9E25d353F2627206483b2b3BCross-margin accounts and collateral (USDC and BAQ)
PairForge hub0x55Ec5A8DFEb6ab71BCAE98D833b4E1d96a6c871COracle: signed prices and funding rates
Coordinator0xA7509a1581bD718DE319475A0CEB9776bc29c463Executes administrator-signed configuration and upgrade plans
USDC0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913Settlement asset (native USDC issued by Circle on Base)
BAQ0x1B9f61483Dd6710E1Ad3b9d0bb92b710F1BA56B5BotRadix token; supplementary collateral

Caution

Approve tokens and sign transactions only for these addresses, and only from app.botradix.com or, for the independent exit, from BaseScan following Exit without BotRadix. A wallet request involving any other contract does not come from BotRadix.

How the contracts fit together#

  • Router. A modular contract: each function is delegated to an implementation module (a "facet") for positions, orders, the vault, delegated execution, market data and administration. Trading, isolated margin and orders all go through this single address.
  • Cross margin. Holds cross collateral and evaluates the health of each cross account across all its positions. It is an upgradeable proxy: its address (which holds the collateral) is fixed, but the administrator can replace its logic instantly during the open phase.
  • PairForge hub. Stores the latest prices and funding rates signed by the reporters, and checks the 2-of-3 quorum and the age of every price. See Prices and oracle.
  • Coordinator. Executes administrative plans. Each plan is authorized with an EIP-712 signature that carries a nonce and a deadline, and commits to the exact list of actions it will run.
  • Advance-notice gate. An immutable contract without an administrator of its own, which only obeys the Coordinator. Since version 2.2 it is the router's administrator and applies a notice to code changes and to operations. See Security and contracts.
  • Exit. An immutable contract with no owner. It forwards to the router the exit actions of the wallet that calls it; its community functions (freezing markets, closing frozen positions, completing distributions) can act on other accounts when their conditions are met, and payments always belong to the account owners. See Exit without BotRadix.
  • Protocol executors and keeper. BotRadix accounts that submit the actions you sign through your trading key or a session, and execute resting orders, take profit, stop loss, funding updates and liquidations. They pay the gas. They can only submit actions that you signed or that the contract rules allow, such as the liquidation of an account below its maintenance margin.

Administrative controls#

The contracts give the BotRadix administrator these powers:

ControlEffect
UpgradeReplace the router modules (through the advance-notice gate) and the cross-margin implementation and business logic (immediately), which changes the contracts' logic
PauseSuspend DEX activity, or only the opening of new positions. Pause-only keys can do this too, but never resume
Reduce-only modePositions can only be reduced or closed
Pause withdrawalsCollateral withdrawals are blocked while the pause lasts: at most 72 hours, then at least 24 hours without a pause
Market configurationList markets, set leverage tiers, open-interest caps and market sessions
ParametersAdjust fees, maintenance margin, the profit cap, the BAQ credit and other values within the limits of the code in force (which the administrator can also change while the contracts are open)
Oracle managementAdd, replace or revoke reporters and set the quorum
Vault liquidityWithdraw the vault's free liquidity: the part not reserved for traders' potential profits, and, under the code in force, only if after the withdrawal reserved capacity satisfies the admission ceiling and the auto-deleveraging target (being below the trigger is not enough). During an emergency it requires an open distribution, all claims paid and no deferred payment outstanding
EmergencyDeclare an emergency or settle a market without prices (anyone can do it after the waiting times described in Exit without BotRadix)
Service feeCurrently 0.03% on opens and increases, with a hard cap of 0.20% in the current code; each wallet must consent in its signature

Important properties of these controls:

  • Advance notice on the router, 0 hours today. Router changes go through the advance-notice gate. Its notices are 0 hours today, so a change can still take effect immediately; raising them is immediate and lowering them requires waiting for the notice in force.
  • No notice on CrossMargin and the business logic. Their proxies store a fixed administrator and a zero delay in immutable code, so upgrades of the contract that holds the collateral can take effect immediately while the contracts are open. They are publicly monitored.
  • Single administrator key. Administrative plans are signed by one administrator key held by BotRadix (an externally owned account, not a multisig).
  • Open contracts. The contracts are deliberately kept open (not sealed), so that features can be added and issues fixed. This also means every guarantee described in these docs depends on the code deployed at that moment. It is a temporary consolidation phase: sealing is planned by component after stability has been assessed, without a committed timetable. Each step must state which upgrade paths and parameters it constrains; sealing one component does not freeze the whole system.
  • Independent exit. Any wallet can close its positions and withdraw from BaseScan through the exit contract, with fallbacks after 24 hours, 3 days (a market without prices) and 72 hours (no prices at all). See Exit without BotRadix for the steps and their limits.

Important

Under the current code, the administrator has no function to move a trader's collateral to another address, and your trading key cannot withdraw. Because CrossMargin can be upgraded without delay while the contracts are open, these protections ultimately rely on BotRadix operating its administrative key correctly. Read Security and contracts and Risks.

Verification and audits#

  • All transactions, events and token balances are public and can be checked on BaseScan.
  • Check each address on BaseScan: its Contract tab shows whether its source is verified. Deployment alone does not prove source verification; matching source is not an audit.
  • No third-party audit report has been published. Before version 2.2 the contracts went through an internal multi-approach review and invariant testing, and the upgrade was rehearsed on a copy of Base.

These docs will link any third-party audit report if one is published.

How to verify it#

You do not have to take this page on trust: the key facts can be read directly from the chain. These commands use cast, the command-line tool from Foundry, with Base's public RPC. They are read-only: they sign nothing, send no transaction and cost no gas.

bash
RPC=https://mainnet.base.org
ROUTER=0x740E207d90ec9D82fce040F8DA0268dB761F364E
CROSS=0x79ED1002F842DE2A9E25d353F2627206483b2b3B
HUB=0x55Ec5A8DFEb6ab71BCAE98D833b4E1d96a6c871C
COORD=0xA7509a1581bD718DE319475A0CEB9776bc29c463
BAQ=0x1B9f61483Dd6710E1Ad3b9d0bb92b710F1BA56B5
USDC=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

# Cross margin: implementation, revision and open status
cast call $CROSS "implementation()(address)" --rpc-url $RPC
cast call $CROSS "implementationRevision()(uint64)" --rpc-url $RPC
cast call $CROSS "isSealed()(bool)" --rpc-url $RPC

# BAQ as collateral: reserve
cast call $CROSS "dexBaqReserveState()(uint256,uint256)" --rpc-url $RPC

# Router: administrator (the advance-notice gate) and the notices in force
cast call $ROUTER "admin()(address)" --rpc-url $RPC

# Coordinator: administrator key and open status
cast call $COORD "OWNER()(address)" --rpc-url $RPC
cast call $COORD "isSealed()(bool)" --rpc-url $RPC

# PairForge hub: quorum and number of reporters
cast call $HUB "QUORUM()(uint8)" --rpc-url $RPC
cast call $HUB "reporterCount()(uint32)" --rpc-url $RPC

# Tokens: BAQ supply and USDC held by the DEX contracts
cast call $BAQ "totalSupply()(uint256)" --rpc-url $RPC
cast call $USDC "balanceOf(address)(uint256)" $ROUTER --rpc-url $RPC
cast call $USDC "balanceOf(address)(uint256)" $CROSS --rpc-url $RPC

Results with version 2.2 (checked on 11 October 2026):

ReadResultWhat it confirms
implementationRevision24The cross-margin implementation included in version 2.2 (the revision may increase in later upgrades)
isSealed (cross margin and Coordinator)falseThe contracts remain open, as explained in Administrative controls
dexBaqReserveStateTwo USDC amounts (6 decimals)The BAQ reserve and the part committed at that moment
admin (router)The gate's addressChanges to the router only come through the advance-notice gate
ADMIN (gate)The Coordinator's addressThe gate only obeys the Coordinator
delays0, 0, 0, 2592000, 1209600Code notice and operations notice of 0 hours, no committed minimum, a maximum notice of 30 days and a 14-day window to execute a scheduled change
OWNER (Coordinator)An externally owned accountThe single administrator key that signs the plans
QUORUM and reporterCount2 and 3The 2-of-3 PairForge reporter quorum
totalSupply (BAQ)50000000000000000000000000005,000,000,000 BAQ (18 decimals)
balanceOf (USDC)Amounts with 6 decimalsThe USDC held by each DEX contract at that moment

The BAQ reserve and the balances change with activity, so you will see different figures. The implementation address and its revision change with every contract upgrade. Fees, the profit cap, the BAQ credit and the other adjustable values can be read on the router's and CrossMargin's Read Contract tabs on BaseScan; the Security and contracts lists their values at launch and their limits.

For integrators#

  • Signed intents use the EIP-712 domain BotradixDEX, version 1, chain ID 8453, with the DEX router as verifying contract. See Trading through the API.
  • To index DEX events from the start, begin at block 51,767,085.
  • USDC uses 6 decimals and BAQ 18 decimals.
  • Since version 2.2, every change to a position emits DexPositionStateV2 (leverage, size, margins, profit cap and funding) and every close emits DexPositionCloseReason with its reason (your order, take profit or stop loss, liquidation, auto-deleveraging, exit or emergency).
  • Useful router reads on BaseScan: dexAdlState (auto-deleveraging), dexPositionRiskV2 (a position's cap and take-profit backing), and dexExitStatus (the exit contract and an account's exit request); on the cross margin, dexWithdrawPauseState (current withdrawal pause and when it ends).
  • PRODUCTION_READY returns false on purpose: it only gates the legacy V1 venue and has no effect on the DEX.
  • For most needs, the API is simpler and returns the same on-chain data already indexed.

Version#

The current contracts are version 2.2, live since 11 October 2026 (version 2.1.1 went live on 4 October 2026). See the Changelog for the history.

Last updated: 2026-10-12