Mainnet deployments
Mainnet program IDs, protocol accounts, token mints, and collateral-market addresses.
Load addresses from the
versioned deployment manifest at
/deployments/mainnet.json, verify its cluster
and schema, and verify each downloaded IDL's address before constructing a
transaction. Do not use addresses copied from screenshots or old transactions.
Programs, tokens, and global accounts
Programs
| Program | Mainnet address | Purpose |
|---|---|---|
| Nest Core | HxbLPNuQD7KKDVQoSQgY1cLMLrsaoseT65Xoczh7zHQW | Borrowing, collateral, nUSD, and PSM accounting |
| nUSD staking | EdYg6JsyntWpf3WGofNWKzBYnQPEvWFZSzUNim3PLbhB | nUSD and snUSD staking |
| NEST staking | J1aaoi1XYJH8Erg7VtJECLiRHmHPc1dQDY9j4tYj7ehM | NEST cooldowns and funded nUSD rewards |
| Leveraged vaults | EwwEjYvZ1CU3kVFNobn3nHtn8JVLuymLtaeZ2KF2fAav | 2SPY and 2QQQ vault accounting |
Nest-issued token mints
| Token | Mainnet mint | Purpose |
|---|---|---|
| NEST | 68Nq68CrtLVpyvK5Un7UADiNczaGf39hBbj3diRsYj6D | Protocol participation and incentives token |
| nUSD | BKvheJ3skKvXqUbfroAgCf8dFfUKJM4W38raUaygLiUS | Nest dollar token |
| snUSD | 3ff7JAqqEyq7kyeWkxcqNCDjLWMB1Fh85Zq15k7yj4ZD | Share token for staked nUSD |
| 2SPY | 6JstqnYXjvCu6Frao9MHJDVCTqAekLXpydYuuK8rQriX | Nest 2X S&P 500 share token |
| 2QQQ | DExogeVKoLrCZ7jh18vQu8V9M3Gzpzy9f8k1foUiMDrL | Nest 2X QQQ share token |
Protocol state and product accounts
| Account | Mainnet address | Purpose |
|---|---|---|
| Protocol PDA | 9kXrR4medW7vU6QQDYfkuVXmKErXuTKPrMiGbf7H4SrR | Global Nest Core state |
| nUSD staking state | DHfVbFFfkVKhr2hDihbTV7KnU37GsYyskk976npyDAKs | Global nUSD staking state |
| NEST staking pool | 3sCE4aL7Nis7dgM4gowRkhUdN8VA2AZYw91jVEtdhb7e | Global NEST staking state |
| 2SPY vault | DLVJ6NrvE8YJdJ1cNGTdqyiaHbn7m1vmuEApu3aAmw9B | Nest 2X S&P 500 |
| 2QQQ vault | FHEynnxf1a8ddKmgSpov4eZjWC5tzF1kiMZeQjKD2ncY | Nest 2X QQQ |
Protocol token accounts
| Account | Mainnet address | Purpose |
|---|---|---|
| PSM USDC vault | 9dYA9d2QePsBp8ZjD5E5vXkMKJUDqqYrXdfCLo2MiavL | Immediately available PSM USDC |
| PSM Kamino collateral vault | AC4wmWELCx27CEDC86LZbUvp7WqUUs6TzgWahjpGrFR3 | Receipt token for deployed PSM reserves |
| nUSD staking vault | GzCZdqBirZFeNXcy5gK1K49a4SU2RWMVrYuw5ZjHcF5R | nUSD backing snUSD shares |
| Staker revenue vault | 98QGnW3yYDfnW2ggzj8uZ22YNmnRmXhD1oRCDqR18vsW | Revenue allocated to snUSD |
| Insurance nUSD vault | EGvPwW7sEHChb2raqSaigZZS6kNEfiauZAVR1h1XbYiH | Protocol insurance balance |
| Protocol revenue nUSD vault | 4Y6wxXkfc4uHbtPeHg78VhVajZnvhw1Z699nGbMfXjJW | Accrued protocol revenue |
| NEST staking vault | EyXPBVWVvjEM72B4qUmKuDhuNzKKrzHFixa4Ze7XTmSi | NEST held by active and cooling positions |
| NEST reward nUSD vault | 4x4pynrBbM2tzo8iaYGV7yx9i3fUAixCip4WF5jzBRtf | Funded rewards for NEST stakers |
External settlement token
| Token | Mainnet mint | Purpose |
|---|---|---|
| USDC | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | External settlement and PSM reserve asset; not issued by Nest |
Supported collateral markets
Each row is a separate market. Two markets can represent the same underlying
asset while using different mints, issuers, decimals, configurations, and
vaults. Use symbol as the stable API key and never select a market by display
symbol alone.
| Market | Issuer | Mint | Market config | Custody vault | Decimals | Borrow LTV | Liquidation | Oracle |
|---|---|---|---|---|---|---|---|---|
| SPYx SPYx | xStocks | XsoC…DF2W | D1xj…drqm | 6tL1…XCys | 8 | 70% | 80% | pyth-lazer |
| QQQx QQQx | xStocks | Xs8S…mWHZ | 5KaX…UFKA | 7tcP…6ptS | 8 | 60% | 70% | pyth-lazer |
| AAPLx AAPLx | xStocks | XsbE…JzJp | 2s5n…po1J | 7u7F…w71a | 8 | 50% | 60% | pyth-lazer |
| GOOGLx GOOGLx | xStocks | XsCP…q6aN | 7CJE…bn65 | 1XrA…6SCR | 8 | 50% | 60% | pyth-lazer |
| METAx METAx | xStocks | Xsa6…o5Zu | DyfT…jwUK | 5Tnk…Z2oZ | 8 | 50% | 60% | pyth-lazer |
| NVDAx NVDAx | xStocks | Xsc9…9qEh | 2U7G…H6Cz | BgjD…LSyf | 8 | 50% | 60% | pyth-lazer |
| TSLAx TSLAx | xStocks | XsDo…HzoB | C24f…kgXt | XuMD…hvPV | 8 | 50% | 60% | pyth-lazer |
| COINx COINx | xStocks | Xs7Z…PxNu | E9Cy…WAEN | 4sVw…Ns3U | 8 | 50% | 60% | pyth-lazer |
| CRCLx CRCLx | xStocks | Xsue…3bd1 | Giy4…QXrw | GFwm…Ai3G | 8 | 50% | 60% | pyth-lazer |
| SPCXx SPCXx | xStocks | Xs3o…qpH8 | G8we…B7jN | zUVg…4Cqw | 8 | 50% | 60% | pyth-lazer |
| SPCX SPCXbp | Backpack | SPCX…imGb | 6QUv…Gyvx | 5xmg…WpaG | 6 | 50% | 60% | pyth-lazer |
| MU MU | Backpack | MUxE…Gay1 | J8hc…sMeC | FLfD…KXRc | 6 | 40% | 50% | jupiter-signed |
| SNDK SNDK | Backpack | SNDK…RhfH | HXpV…xvcQ | 5VU7…ofNP | 6 | 40% | 50% | jupiter-signed |
| DRAM DRAM | Backpack | DRAM…Y4Cw | 3oPc…Hw8w | 3b7V…Rpv3 | 6 | 40% | 50% | jupiter-signed |
| SPYon SPYon | Ondo | k18W…ondo | E4ZH…WZ9q | HzhV…uJvS | 9 | 70% | 80% | jupiter-signed |
| QQQon QQQon | Ondo | HrYN…ondo | FKDn…oGyW | Fkrc…3oxr | 9 | 60% | 70% | jupiter-signed |
| BOT BOT | Backpack | BoTx…6d8T | 7jKL…YP91 | BNC7…Gg7C | 6 | 40% | 50% | jupiter-signed |
| SKHY SKHY | Backpack | SKHY…9EQ3 | 86uK…Jgnj | 3KnB…ms4x | 6 | 40% | 50% | jupiter-signed |
| HOOD HOOD | Backpack | HooD…3e9A | 8JG2…7ijM | HLvi…Vk9N | 6 | 40% | 50% | jupiter-signed |
| INTC INTC | Backpack | iNTC…xFaF | GbbP…iR5x | 4Qs9…nheE | 6 | 40% | 50% | jupiter-signed |
| SOL SOL | Solana | So11…1112 | HGgE…2DJx | 3BkA…o9Xk | 9 | 50% | 65% | pyth-lazer |
| JitoSOL JitoSOL | Jito | J1to…GCPn | A4Tj…i7v9 | 8vA5…w5iL | 9 | 50% | 65% | pyth-lazer |
| MSTR MSTR | Backpack | MSTR…U7Nz | JADC…fJdZ | 7wWt…SP9Y | 6 | 40% | 50% | jupiter-signed |
| TTWO TTWO | Backpack | TTWo…FbKo | FfXx…EeCC | 3zWw…86sR | 6 | 40% | 50% | jupiter-signed |
| SILV SILV | Dominion | SiLV…B35L | HnSb…aeKW | 6toV…V97r | 6 | 60% | 70% | jupiter-signed |
Pinning a deployment
import { PublicKey } from "@solana/web3.js";
import type { Deployment } from "../nest-client";
// Nest developer documentation hosts the versioned deployment manifest.
const NEST_DOCS_ORIGIN = "https://docs.nestusd.com";
export async function loadNestMainnetDeployment(
origin = NEST_DOCS_ORIGIN,
) {
const response = await fetch(`${origin}/deployments/mainnet.json`, {
cache: "no-store",
});
if (!response.ok) throw new Error(`Deployment fetch failed: ${response.status}`);
const deployment = await response.json() as Deployment;
if (
deployment.schema !== "nest-public-deployment-v1"
|| deployment.cluster !== "mainnet-beta"
) throw new Error("Unexpected Nest deployment manifest");
// Parsing every address also rejects malformed or truncated manifests early.
[
...Object.values(deployment.programs),
...Object.values(deployment.accounts),
...Object.values(deployment.mints),
...Object.values(deployment.vaults),
...Object.values(deployment.tokenStaking),
...deployment.vaultProducts.flatMap((product) => [
product.vault,
product.shareMint,
]),
...deployment.collateral.flatMap((market) => [
market.mint,
market.collateralConfig,
market.collateralVault,
market.tokenProgram,
]),
].forEach((address) => new PublicKey(address));
return deployment;
}For Nest mainnet, origin is https://docs.nestusd.com. It is configurable so
an integration can pin and serve a reviewed copy from its own release. The
public API has a different origin, https://api.nestusd.com, and should not be
used as the deployment-artifact origin.
For a production integration, pin the exact manifest revision you reviewed or compare its expected program IDs before allowing writes. A new collateral row does not require your app to support it automatically.