Skip to content

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

EngineProgram ID
zenith-ammAA8cKcHQj63GEHRaLrrT87W1efRZ44U147JTCXC2Rmkq
zenith-dlmm7pxn8tEm44gXjfPH9YXsLywuYpAbgbxq9nPwG1XQczsz
zenith-cammCjjcK3rnskHswBpTgZquLGgS7P2QyzeaNwwe98FUUdy7

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).

FieldAddress
ConfigE4K66obJhnmniE7G29JwfvtVE5eYpN4Z2VKHNz7QihhV
PoolGiu7iSftJwYECkK27TDLGvNyRAZRL9wz9TTzzVxTjyPW
tUSDCANc45hfXrW9gkDKGpd1F1mH5KomypqKhrKRSeKJhaAxW
tUSDTGbLELJeoeEpuLPujVficqqBDZr8GWpKXEM4FFKy38Y1j

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.

FieldAddress
LbPair5idsMpbewctoSp9J2LJVCvN18qciFdSBrveyqsmk1Yxb
OracleABV3MfvpttX2XWfs4JRPjW5RhahDmeEEMnpyDcbW59nK
tBIN5ExoMf1WFKjNikpeC4f5oentzR1mkGMAYaGinCStn43Y
tUSDBEQYTaxC1pAdVvoE1REvYvMpLQo6UXkFDRoAm6PFtgs4

CAMM — app/src/camm-devnet.json

A tCP / tUSD constant-product pool with the idle-reserve yield vault configured and funded.

FieldAddress
PoolHmBojyfuF23uq71ZVGXW8jcMk2e8HUEtTsYujhFCYRXK
LP mint3rujUxMQxzUXkR9xmSC5ta8UGBp5zFZAv7KsWWT8Gr3S
tCP3btCV9PEAvck5CVWmDhcj8dzWiHEMgzgARp5JQPLPnfB
tUSD5SMqgRNCK4LJpQY1scitwXVgV6y6HNqkABdvVpHswLuo

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:

bash
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:

bash
cd sdk
node --experimental-strip-types scripts/seed-devnet.ts

Notes 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_INDEX for 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.

Built on Solana devnet. Integer-exact math, no floats.