Jupiter AMM Integration — Sterling Sovereign CPMM
Type: AMM Integration Request (AMM API / Partner registration)
Chain: Solana Mainnet-Beta
Status: Ready to submit as a GitHub issue / AMM partner form payload.
Implementation: PR #42 — feat: Add Sterling Sovereign CPMM routing adapter (closes this issue).
1. Protocol identity (on-chain, public)
| Field |
Value |
| DEX / Protocol name |
Sterling Sovereign CPMM (Sterling Chain AMM) |
| Blockchain |
Solana (Mainnet-Beta, chainId 101) |
| AMM Program ID |
7v9sLrk92NNLLUfXLJw3o7MycZNvwsTK6kLWfWb8vcVA |
| Pool PDA (sovereign) |
4wc5NC3ejYC5y4vQD4Eg3PsYW9ArZQV18fY1eHCJfxJQ |
| Pool seed |
["sterling_pool", mint_souverain, mint_collateral] |
| Config PDA |
Htopqis52g8nGvvkpnG7Z7XZhgBpqtN9huqUyk6LH9gB |
| Curve |
constant-product x·y=k |
| Fee (feeBps) |
0 |
| Peg |
1:1 USD (both assets cash-backed, non-speculative) |
| Pool status |
ANCHORED (code 2) |
| Settlement desk |
1493 |
| Official website |
https://sterlingchain.net |
2. Trading pair (92C / SLUSD)
| Role |
Token |
Mint |
Decimals |
Vault (token account) |
| Base (token A) |
92 Cash USD (92C) |
92k8rwgvovnWXAC5eE7ASMekSuphLiA9iS16UsAHCdWo |
2 |
GMhRnaKdq6CYyaaMeEr6TgEMehDXZn2BUVhvRBfo4Ha9 |
| Quote (token B) |
Sterling Chain L3 Certified USD (SLUSD) |
92B5Ubkm5JBVGQeEeMnrkmmL6NpAGAirUua62BWAhZyJ |
2 |
tDUgbwQ2pHwhbMMeyj1WasggoPXULC8xfNoPCYuCMde |
⚠️ Both tokens use 2 decimals (not the default 6). Please do not assume 6 in the parser.
Live reserve snapshot (fetched 2026-09-11, read directly from the pool account):
- tokenA (92C) reserve:
250054177848156 atoms
- tokenB (SLUSD) reserve:
249945833890331 atoms
- invariant
k: 62500000000018485151674579636
price_92c_in_slusd: 0.999566 SLUSD per 92C (0 bps fee)
Liquidity & Market Architecture:
- Current Status: Sovereign Bootstrapping Phase (dedicated CPMM pool active
on-chain at 0 bps).
- Routing Scope: Initial deployment establishing 92C/SLUSD sovereign parity
prior to secondary market aggregator bridging.
- Settlement: Fully collateralized internal reserves backed by sovereign mint
authorities.
Reserve qualification: the figures above constitute the
Total Sovereign Token Reserve Supply — 250054177848156 atoms of 92C and
249945833890331 atoms of SLUSD, held in the pool's own vaults. This is a reserve
quantity, not a market valuation; no USD figure should be derived from it at the
1.00 peg.
3. Swap instruction ABI
| Field |
Value |
| Instruction |
swap_sovereign_cpmm |
| Anchor discriminator |
16a5c2db47318c34 (sha256("global:swap_sovereign_cpmm")[:8]) |
| Args |
amount_in: u64, min_amount_out: u64, seal_92: u16 (LE 0x3239) |
| Instruction data length |
26 bytes (disc(8) ‖ amount_in(8) ‖ min_amount_out(8) ‖ seal_92(2)) |
| Account count |
8 |
| Account mapper note |
Slot [2] (pool_authority) equals slot [1] (sovereign_pool) — the same PDA is enforced on-chain (srequire_keys_eq!). |
| Pool account discriminator |
b90911fcd41b9f91 (sha256("account:SovereignPoolExtension")[:8]), fixed layout 322 bytes |
| Reserve offsets |
reserve_souverain @176, reserve_collateral @184 (stored reserves, not vault balances) |
| IDL |
Anchor IDL available on request (to parse on-chain pool state) |
4. Public AMM API (live, crawlable)
Base URL: https://sterlingchain.net/api/v1/jupiter
| Endpoint |
Method |
Purpose |
/tokens |
GET |
Token registry (92C, SLUSD, USDC) |
/price |
GET/POST |
Live price feed (peg 1.00 USD) |
/amm |
GET |
AMM pool state (for indexers) |
/quote |
GET/POST |
Swap quote (Jupiter v6 format) |
/swap |
POST |
Swap transaction (unsigned base64) |
/swap-instructions |
POST |
Swap instruction set |
/circulating-supply |
GET |
92C circulating supply (raw integer) |
/health |
GET |
Health check |
CORS: Access-Control-Allow-Origin: *, preflight OPTIONS → 204.
⚠️ Correction — circulating supply. The strict on-chain mint supply of 92C is
9999999900000 units (999999990000000 atoms at 2 decimals), verified against
the mint account. The /circulating-supply endpoint currently returns
10000000000000, i.e. 100 000 000 units above the mint supply. The endpoint
is being corrected to return the exact on-chain value; until then please treat
9999999900000 as authoritative.
5. On-chain proofs (publicly verifiable)
| Proof |
Value |
| Anchor transaction |
52FgC3oGQkmVt3Dc4LrryXNLVnKT4CdaZuzRmw9qzr9xw4vCXXmhf9SYprA5GiKwm52Ey1Db9Dg936nnPpCDfXx6 |
| Anchor content |
2,500,000,000,000 of 92C + 2,500,000,000,000 of SLUSD transferred into vaults GMhRna… / tDUgbw… |
| Mint authority |
E8McRGxy6rinwf9PZLTjmxw1K6oW18v1QXgztKovGQ2G (program / registry PDA) |
| Freeze authority |
None (renounced on both mints) |
| Proof of reserve |
https://sterlingchain.net/metadata/proof-of-reserve.json |
Authority roles — clarification (two distinct addresses, two distinct roles):
| Address |
Role |
Scope |
BPraWGcZzvsjQk1CQUq6mABTQXk2SwsYagzR6NLXErqn |
Deployment / treasury authority |
Signed the pool anchoring and the initial reserve deposit. Holds the issuance-side treasury. Not a swap counterparty. |
CMqD45Kq5oukPvaMDhzav5RxJqZb1xME1MmV71CzCeTw |
L3 settlement authority |
Authorized settlement desk (1493) for RFQ/DvP release only. By policy and by guardrail it is never fromPubkey of a capital transfer and never fee payer on the AMM path. |
Neither address is an AMM account: the pool's own authority is the Pool PDA
4wc5NC3ejYC5y4vQD4Eg3PsYW9ArZQV18fY1eHCJfxJQ, which signs vault transfers via
invoke_signed. Swaps do not require either address above.
6. Live endpoint verification
Verified against https://sterlingchain.net:
GET /api/v1/jupiter/amm → HTTP 200, Content-Type: application/json, CORS *.
Returns ammKey, programId, feeBps: 0, type: constant-product,
anchored: true, status: 2, reserves, k, peg_usd, swap_instruction,
instruction_discriminator, markets.
GET /api/v1/jupiter/circulating-supply → HTTP 200, CORS *.
Returns {"circulatingSupply": 10000000000000} — see the correction in §4:
the authoritative on-chain value is 9999999900000.
7. Contact
Jupiter AMM Integration — Sterling Sovereign CPMM
Type: AMM Integration Request (AMM API / Partner registration)
Chain: Solana Mainnet-Beta
Status: Ready to submit as a GitHub issue / AMM partner form payload.
Implementation: PR #42 —
feat: Add Sterling Sovereign CPMM routing adapter(closes this issue).1. Protocol identity (on-chain, public)
101)7v9sLrk92NNLLUfXLJw3o7MycZNvwsTK6kLWfWb8vcVA4wc5NC3ejYC5y4vQD4Eg3PsYW9ArZQV18fY1eHCJfxJQ["sterling_pool", mint_souverain, mint_collateral]Htopqis52g8nGvvkpnG7Z7XZhgBpqtN9huqUyk6LH9gBx·y=k0ANCHORED(code 2)14932. Trading pair (92C / SLUSD)
92C)92k8rwgvovnWXAC5eE7ASMekSuphLiA9iS16UsAHCdWoGMhRnaKdq6CYyaaMeEr6TgEMehDXZn2BUVhvRBfo4Ha9SLUSD)92B5Ubkm5JBVGQeEeMnrkmmL6NpAGAirUua62BWAhZyJtDUgbwQ2pHwhbMMeyj1WasggoPXULC8xfNoPCYuCMdeLive reserve snapshot (fetched 2026-09-11, read directly from the pool account):
250054177848156atoms249945833890331atomsk:62500000000018485151674579636price_92c_in_slusd:0.999566SLUSD per 92C (0 bps fee)Liquidity & Market Architecture:
on-chain at 0 bps).
prior to secondary market aggregator bridging.
authorities.
Reserve qualification: the figures above constitute the
Total Sovereign Token Reserve Supply —
250054177848156atoms of 92C and249945833890331atoms of SLUSD, held in the pool's own vaults. This is a reservequantity, not a market valuation; no USD figure should be derived from it at the
1.00 peg.
3. Swap instruction ABI
swap_sovereign_cpmm16a5c2db47318c34(sha256("global:swap_sovereign_cpmm")[:8])amount_in: u64,min_amount_out: u64,seal_92: u16(LE0x3239)disc(8) ‖ amount_in(8) ‖ min_amount_out(8) ‖ seal_92(2))[2](pool_authority) equals slot[1](sovereign_pool) — the same PDA is enforced on-chain (srequire_keys_eq!).b90911fcd41b9f91(sha256("account:SovereignPoolExtension")[:8]), fixed layout 322 bytesreserve_souverain@176,reserve_collateral@184 (stored reserves, not vault balances)4. Public AMM API (live, crawlable)
Base URL:
https://sterlingchain.net/api/v1/jupiter/tokens/price/amm/quote/swap/swap-instructions/circulating-supply/healthCORS:
Access-Control-Allow-Origin: *, preflight OPTIONS → 204.5. On-chain proofs (publicly verifiable)
52FgC3oGQkmVt3Dc4LrryXNLVnKT4CdaZuzRmw9qzr9xw4vCXXmhf9SYprA5GiKwm52Ey1Db9Dg936nnPpCDfXx692C+ 2,500,000,000,000 ofSLUSDtransferred into vaultsGMhRna…/tDUgbw…E8McRGxy6rinwf9PZLTjmxw1K6oW18v1QXgztKovGQ2G(program / registry PDA)None(renounced on both mints)Authority roles — clarification (two distinct addresses, two distinct roles):
BPraWGcZzvsjQk1CQUq6mABTQXk2SwsYagzR6NLXErqnCMqD45Kq5oukPvaMDhzav5RxJqZb1xME1MmV71CzCeTw1493) for RFQ/DvP release only. By policy and by guardrail it is neverfromPubkeyof a capital transfer and never fee payer on the AMM path.Neither address is an AMM account: the pool's own authority is the Pool PDA
4wc5NC3ejYC5y4vQD4Eg3PsYW9ArZQV18fY1eHCJfxJQ, which signs vault transfers viainvoke_signed. Swaps do not require either address above.6. Live endpoint verification
Verified against
https://sterlingchain.net:GET /api/v1/jupiter/amm→ HTTP 200,Content-Type: application/json, CORS*.Returns
ammKey,programId,feeBps: 0,type: constant-product,anchored: true,status: 2, reserves,k,peg_usd,swap_instruction,instruction_discriminator,markets.GET /api/v1/jupiter/circulating-supply→ HTTP 200, CORS*.Returns
{"circulatingSupply": 10000000000000}— see the correction in §4:the authoritative on-chain value is
9999999900000.7. Contact