DEX EVIDENCE INTERFACE
GMX
Onchain perpetuals protocol with bank vaults holding collateral and a two-phase request/keeper execution model.
How does this DEX actually work?
Structural flow from documented architecture — not a performance or safety claim.
- Trader
Signs wallet transaction
- Frontend / integration
Builds call to ExchangeRouter
- Onchain request
Order/deposit stored; no oracle prices yet
- Keeper execution
Keeper bundles signed oracle prices and executes
- Bank / vault contracts
Only bank contracts custody tokens
- Settlement
Positions and markets updated in DataStore
Where is collateral held?
Follow the path from wallet to settlement. Smart-contract custody is still custody risk.
- User walletUser wallet
- DepositExchangeRouter request
- VaultDepositVault / OrderVault / market banks
- Margin accountPosition state in DataStore
- SettlementOnchain settlement
Custody model: Smart-contract custody — Not labeled simply “non-custodial.” Unknown edges stay Unknown.
Key structural facts
- Liquidity model
- LP VAULT (GM / GLV market tokens)
- Counterparty
- Liquidity providers in market pools
- Chain / settlement
- Arbitrum · On-chain
- Chains
- Arbitrum, Avalanche, MegaETH
Traders vs pool; frozen orders protect against liquidity gaming
Who controls what?
Governance processes do not by themselves prove decentralized operational control.
Operational admin
Roles that can change contracts, parameters, or day-to-day operations.
- Upgrade / new logic contracts
Controller RoleStore role grants (operational admin)
Mechanism Deploy new handlers; grant roles — banks stay put
Timelock GovTimelockController / Timelock
- Parameter / fee config
Controller Config via ConfigTimelockController
Mechanism Timelocked config updates (operational + governance paths)
Timelock ConfigTimelockController
- Risk parameter path
Controller RISK_ORACLE role / RiskOracleConfig
Mechanism Allowlisted keys for enabled markets
Timelock Unknown / none documented
- Emergency pause
Controller Unknown
Mechanism Unknown
Timelock Unknown / none documented
Governance
Vote / proposal paths — shown separately from immediate operational admin.
- DAO governance proposals
Controller GMX DAO (Snapshot → Tally) — governance, not instant ops
Mechanism Offchain Snapshot then onchain Tally/timelock
Timelock GovTimelockController
Protocol & operator surfaces
- ProtocolNo verified legal name on this surface
Onchain perpetuals and liquidity markets
Smart contracts hold funds; logic upgrades via RoleStore
Verified structured - DAO governanceNo verified legal name on this surface
GMX DAO token governance (Snapshot + Tally)
Staked GMX mints non-transferable GMX_DAO voting power
Verified structured - Frontend operatorLegal operator unresolved
Official app frontend
Interface separate from bank contracts
Researched unresolved - Developer entityLegal operator unresolved
Protocol development / contributors
Not equated to DAO or frontend operator in this pack
Researched unresolved
How are prices determined?
Oracle provider presence is not a claim that the oracle is secure or endorsed.
- Primary oracle
- Chainlink Data Streams (ChainlinkDataStreamProvider)
- Price / index construction
- Min/max price reports; optional reference feed deviation check
- Fallback
- StaticOracleProvider for configured static prices
- Update mechanism
- Keeper fetches signed prices at execution
- Dependencies
- Chainlink Data Streams · Keeper network
- Last verified
- 2026-08-30 · Verified structured
What happens if margin falls too low?
Liquidation mechanics in plain language — not a guarantee of user outcomes.
- Maintenance / trigger
- Remaining collateral after losses/fees/capped negative impact below market minimum collateral (≈0.25%–1% of size)
- Partial / full
- Liquidation closes position; ADL may partially/fully reduce profitable positions
- Liquidator / keeper
- Keepers via LiquidationHandler
- Liquidation fee
- 0.20%–0.45% of position notional by market type
- Insurance / backstop
- ADL when pending PnL / pool value exceeds MAX_PNL_FACTOR_FOR_ADL — not a traditional insurance fund
- Bad debt handling
- UNKNOWN — no standalone bad-debt fund documentation in pack; ADL is solvency protection
Insurance or buffer existence is not a solvency guarantee. · Verified structured
Who is on the other side of the trade?
Counterparty models differ by protocol — not every perpetual DEX shares the same structure.
LP VAULT (GM / GLV market tokens)
Counterparty Liquidity providers in market pools
Traders vs pool; frozen orders protect against liquidity gaming
Verified structuredFees
Snapshot mechanisms and rates where documented. Not labeled cheapest or best value. Funding ≠ borrow unless documented.
- position open close0.04% or 0.06% of position size (market-dependent)
- borrowVariable borrow fee while position open (utilization-driven)
- fundingVariable long/short imbalance funding (UI shows live rate)
- liquidation0.20%–0.45% of notional by market type (standard / single-token / high-vol)
- execution feeUser-paid keeper gas buffer (excess refunded)
Funding and borrow are separate mechanisms per GMX fee docs. Live rates are market-variable — not snapshotted as fixed numbers.
Market coverage
Only officially supported classes from primary evidence. Presence is not a recommendation.
- CryptoSupported
- FXNot listed
- CommoditiesNot listed
- IndicesNot listed
- StocksNot listed
- ETFsNot listed
Crypto perpetuals / GM markets per official docs scope researched
Security evidence
Smart-contract audits are not financial audits. No combined “audited” badge. No security score.
Additional audit evidence not yet fully cataloged in this pack — not a negative security judgment.
Smart-contract audits
- Provider not structuredDate unknown · Official contracts docs warn some readers/events may be outside audit scopes — catalog not exhaustively structured hereVerified not structuredSource
Material incidents
None structured in this pack (not a claim that none occurred).
Access surfaces
Protocol access, frontend access, and terms eligibility are separate. Not “available globally” unless evidenced.
- Protocol access
Permissionless contract interaction where network access exists — not the same as legal eligibility.
Verified not structuredSource - Frontend access
Official frontend geo / ToS restrictions remain RESEARCHED_UNRESOLVED in this pack (not asserted from protocol alone).
Researched unresolved - Terms of service
Frontend ToS eligibility language not structured in this pack.
Researched unresolved - Legal eligibility
No regulatory authorization conclusion asserted from protocol architecture.
Researched unresolved
Direct answers
How does GMX work?
Users submit onchain requests via ExchangeRouter; keepers execute with signed oracle prices against bank vaults and GM/GLV liquidity.
Is GMX non-custodial?
Collateral sits in protocol bank smart contracts (smart-contract custody), not a centralized exchange wallet. That is not the same as zero custody risk.
Who controls GMX contracts?
Privileged actions are gated by RoleStore; config uses ConfigTimelockController; DAO governance uses Snapshot and Tally with GovTimelockController. Exact pause authority remains unresolved in this pack.
What oracle does GMX use?
Primary documented provider is Chainlink Data Streams, with additional Edge and static providers.
Where is GMX collateral held?
In bank contracts (e.g. DepositVault, OrderVault, market banks). Logic upgrades do not migrate those funds.
What does this DEX depend on?
Material dependencies only. Dependency count is not a risk score.
- BlockchainArbitrum (primary researched)Settlement and bank custody
- OracleChainlink Data StreamsExecution prices
- KeeperOracle and order keepersRequest fulfillment
- GovernanceRoleStore / timelocksAdmin and upgrades
Contracts (primary-sourced)
- DataStore (Arbitrum): 0xFD70de6b91282D8017aA4E741e9Ae325CAb992d8 — Protocol state store (permanent address)
- RoleStore (Arbitrum): 0x3c3d99FD298f679DBC2CEcd132b4eC4d0F5e6e72 — Role-based access control
- ExchangeRouter (Arbitrum): 0x7dE39FF2e232A2203196788d37e234cF8F1b83f1 — Primary write entry for orders/deposits/withdrawals
- DepositVault (Arbitrum): 0xF89e77e8Dc11691C9e8757e84aaFbCD8A67d7A55 — Bank contract holding deposit funds
- ConfigTimelockController (Arbitrum): 0x2Dd99f39f58445CDDC57AA5E0DB2C367335BBD44 — Timelock for Config parameter changes
Open gaps
- Named legal operator for frontend: LEGAL_OPERATOR_UNRESOLVED
- Emergency pause controller not fully mapped
- Exhaustive smart-contract audit catalog not structured
- Official frontend ToS geo language not structured
Primary sources
DEX Architecture / Control / Custody evidence only. No DEX score. Unresolved states remain unresolved.