NFT / Marketplace·Solana
Metaplex
The Solana digital asset standard. Metaplex Core (mpl-core) is the modern single-account NFT standard with plugins for royalties, transfer rules, and freezing. The legacy Token Metadata standard (mpl-token-metadata) still backs most existing collections. Both are accessed through the Umi JavaScript framework.
- 01Solana NFT minting
- 02single-account NFTs (Core)
- 03candy machines
- 04compressed NFTs
- 05on-chain royalty plugins
- 06programmable NFTs (pNFTs)
- pnpm add @metaplex-foundation/mpl-core @metaplex-foundation/mpl-token-metadata @metaplex-foundation/umi @metaplex-foundation/umi-bundle-defaults @solana/web3.js
| Variable | Scope | Description |
|---|---|---|
| NEXT_PUBLIC_SOLANA_RPC_URL | Client | Solana RPC endpoint (Helius, Triton, QuickNode) used by Umi. |
Use Metaplex via the Umi framework: `createUmi(rpcUrl).use(mplCore())` for Core, or `.use(mplTokenMetadata())` for legacy collections. Prefer `mpl-core`'s `create()` and `createCollection()` for new mints — single-account assets are cheaper and composable with plugins (Royalties, FreezeDelegate, TransferDelegate, Attributes). Use `fetchAssetV1` / `fetchCollectionV1` to read state and `update()` for mutable fields. For airdrops/launches, layer Core Candy Machine on top. Sign with `umi.use(walletAdapterIdentity(wallet))` so the connected wallet pays.
- ⚑Metaplex Core (`mpl-core`) and legacy Token Metadata (`mpl-token-metadata`) are different programs — do not mix accounts/instructions; check which standard a collection uses before reading or updating.
- ⚑Royalty enforcement on Solana is plugin-based (Core Royalties plugin, or pNFT rule sets on legacy). Marketplaces choose whether to honor them; assume royalties may be bypassed by non-compliant venues like AMMs.
- ⚑Compressed NFTs (Bubblegum) require a Merkle tree account sized at mint time — you cannot grow it later, so size for max supply or accept hard caps.
- ⚑Umi expects its own keypair/signer interfaces; passing a raw `@solana/web3.js` Keypair without `createSignerFromKeypair` will silently fail at signing.
- ⚑Updating a Core asset's URI does not invalidate cached off-chain metadata; trigger a refresh on indexers (Helius DAS, SimpleHash) after mutating.
- ⚑Core Candy Machine is a separate program (`mpl-core-candy-machine`) from the legacy Candy Machine v3 — guards and config syntax differ.