Program reference
Everything you need to verify Dojo on-chain.
Program ID
| Network | Program ID |
|---|---|
| X1 testnet | GL4GGQeNXw15sMVygu91n9nsp3tCTPGAiUyUJ7wVnvqu |
| X1 mainnet | not deployed yet |
IDL
Download the full Anchor IDL:
dojo.idl.json — 26 instructions, 9 account types, ~130 KB.
Drop it into any Anchor-compatible client to decode accounts, build transactions, and subscribe to events.
Fee tiers
Each pool belongs to an AmmConfig that fixes the fee rate and tick spacing. Fee math:
trade_fee_rate / 1_000_000= percentage taken from each swap.- Of that trade fee,
protocol_fee_rate / 1_000_000flows to the protocol. fund_fee_rate / 1_000_000flows to an ecosystem fund.- The remainder goes to liquidity providers in the pool's active ranges.
The live testnet AmmConfig is Fh9o18d7fZY6JwTHaUH5CPEzJAgCYzaqWGcfrNNsReYe — 0.25% trade fee, tick spacing 60.
Account model
Dojo stores pool and position state across a small number of Anchor-serialized account types:
- AmmConfig — fee tier + tick spacing, set per config index.
- PoolState — one per token pair + config, holds price, liquidity, fees accrued.
- ObservationState — per pool, ring-buffer of oracle observations.
- TickArrayState — per 60-tick segment of a pool's range.
- PersonalPositionState — one per LP position, keyed by the position NFT mint.
Every account is derivable from well-known seeds; see the IDL for exact byte layouts.
Source
Dojo is built on Raydium's open-source CLMM, deployed on X1. We don't modify the program: what you see on-chain is the audited Raydium CLMM, compiled for X1 and deployed to our program ID.
Explorer
Every program account, pool, and position has a direct link on explorer.x1.xyz. The program page: