Devnet
All three engines are deployed and seeded on Solana devnet. The app reads the live addresses from committed manifests in app/src/, so it works against these markets out of the box.
Program IDs
| Engine | Program ID |
|---|---|
zenith-amm | AA8cKcHQj63GEHRaLrrT87W1efRZ44U147JTCXC2Rmkq |
zenith-dlmm | 7pxn8tEm44gXjfPH9YXsLywuYpAbgbxq9nPwG1XQczsz |
zenith-camm | CjjcK3rnskHswBpTgZquLGgS7P2QyzeaNwwe98FUUdy7 |
Seeded markets
AMM — app/src/devnet.json
A tUSDC / tUSDT pool at price 1.0, tick spacing 64, with three positions of different ranges (full-range, tight around the price, and one out of range).
| Field | Address |
|---|---|
| Config | E4K66obJhnmniE7G29JwfvtVE5eYpN4Z2VKHNz7QihhV |
| Pool | Giu7iSftJwYECkK27TDLGvNyRAZRL9wz9TTzzVxTjyPW |
| tUSDC | ANc45hfXrW9gkDKGpd1F1mH5KomypqKhrKRSeKJhaAxW |
| tUSDT | GbLELJeoeEpuLPujVficqqBDZr8GWpKXEM4FFKy38Y1j |
The out-of-range position's liquidity is correctly excluded from the active band on-chain — a live demonstration of the tick gate.
DLMM — app/src/dlmm-devnet.json
A tBIN / tUSD pair, bin step 25, dynamic fee enabled, with a TWAP oracle and seeded positions.
| Field | Address |
|---|---|
| LbPair | 5idsMpbewctoSp9J2LJVCvN18qciFdSBrveyqsmk1Yxb |
| Oracle | ABV3MfvpttX2XWfs4JRPjW5RhahDmeEEMnpyDcbW59nK |
| tBIN | 5ExoMf1WFKjNikpeC4f5oentzR1mkGMAYaGinCStn43Y |
| tUSD | BEQYTaxC1pAdVvoE1REvYvMpLQo6UXkFDRoAm6PFtgs4 |
CAMM — app/src/camm-devnet.json
A tCP / tUSD constant-product pool with the idle-reserve yield vault configured and funded.
| Field | Address |
|---|---|
| Pool | HmBojyfuF23uq71ZVGXW8jcMk2e8HUEtTsYujhFCYRXK |
| LP mint | 3rujUxMQxzUXkR9xmSC5ta8UGBp5zFZAv7KsWWT8Gr3S |
| tCP | 3btCV9PEAvck5CVWmDhcj8dzWiHEMgzgARp5JQPLPnfB |
| tUSD | 5SMqgRNCK4LJpQY1scitwXVgV6y6HNqkABdvVpHswLuo |
The manifests carry the full set of addresses (vaults, authorities, yield sources, bin/tick arrays); the tables above list the entry points.
Get test tokens
Connect a devnet wallet to the app, make sure it has some devnet SOL for fees, then mint yourself the AMM test tokens:
cd sdk
node --experimental-strip-types scripts/mint-to.ts <your-wallet-pubkey> [amount]Re-seeding
The seed scripts live in sdk/scripts. Each creates fresh mints, opens a market, and writes the corresponding manifest. For example, the AMM seed:
cd sdk
node --experimental-strip-types scripts/seed-devnet.tsNotes for re-seeding:
- The public devnet RPC rate-limits bursts. The AMM seed spaces its transactions out; tune it with
SEED_DELAY_MS(milliseconds between transactions). - Bump
CONFIG_INDEXfor a fresh market if a previous run already used an index. - Deploying a larger program build in place needs a few extra SOL free, because the upgrade writes a new buffer while the old program's rent stays locked.
Deploys keep the same program IDs above (in-place upgrades via solana program deploy --program-id <keypair>), so the SDK constants and app manifests only change when the market is re-seeded, not the program.