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 and global accounts
| Object | Mainnet address |
|---|---|
| Nest Core program | HxbLPNuQD7KKDVQoSQgY1cLMLrsaoseT65Xoczh7zHQW |
| Nest Stake program | EdYg6JsyntWpf3WGofNWKzBYnQPEvWFZSzUNim3PLbhB |
| Nest Vaults program | EwwEjYvZ1CU3kVFNobn3nHtn8JVLuymLtaeZ2KF2fAav |
| Protocol PDA | 9kXrR4medW7vU6QQDYfkuVXmKErXuTKPrMiGbf7H4SrR |
| Staking state PDA | DHfVbFFfkVKhr2hDihbTV7KnU37GsYyskk976npyDAKs |
| nUSD mint | BKvheJ3skKvXqUbfroAgCf8dFfUKJM4W38raUaygLiUS |
| snUSD mint | 3ff7JAqqEyq7kyeWkxcqNCDjLWMB1Fh85Zq15k7yj4ZD |
| USDC mint | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| Staking nUSD vault | GzCZdqBirZFeNXcy5gK1K49a4SU2RWMVrYuw5ZjHcF5R |
| Staker revenue vault | 98QGnW3yYDfnW2ggzj8uZ22YNmnRmXhD1oRCDqR18vsW |
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 | Decimals | Borrow LTV | Liquidation | Oracle |
|---|---|---|---|---|---|---|
| SPYx SPYx | xStocks | XsoC…DF2W | 8 | 70% | 80% | pyth-lazer |
| QQQx QQQx | xStocks | Xs8S…mWHZ | 8 | 60% | 70% | pyth-lazer |
| AAPLx AAPLx | xStocks | XsbE…JzJp | 8 | 50% | 60% | pyth-lazer |
| GOOGLx GOOGLx | xStocks | XsCP…q6aN | 8 | 50% | 60% | pyth-lazer |
| METAx METAx | xStocks | Xsa6…o5Zu | 8 | 50% | 60% | pyth-lazer |
| NVDAx NVDAx | xStocks | Xsc9…9qEh | 8 | 50% | 60% | pyth-lazer |
| TSLAx TSLAx | xStocks | XsDo…HzoB | 8 | 50% | 60% | pyth-lazer |
| COINx COINx | xStocks | Xs7Z…PxNu | 8 | 50% | 60% | pyth-lazer |
| CRCLx CRCLx | xStocks | Xsue…3bd1 | 8 | 50% | 60% | pyth-lazer |
| SPCXx SPCXx | xStocks | Xs3o…qpH8 | 8 | 50% | 60% | pyth-lazer |
| SPCX SPCXbp | Backpack | SPCX…imGb | 6 | 50% | 60% | pyth-lazer |
| MU MU | Backpack | MUxE…Gay1 | 6 | 40% | 50% | jupiter-signed |
| SNDK SNDK | Backpack | SNDK…RhfH | 6 | 40% | 50% | jupiter-signed |
| DRAM DRAM | Backpack | DRAM…Y4Cw | 6 | 40% | 50% | jupiter-signed |
| SPYon SPYon | Ondo | k18W…ondo | 9 | 70% | 80% | jupiter-signed |
| QQQon QQQon | Ondo | HrYN…ondo | 9 | 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),
...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.