Noções básicas de NFT na Solana
9 exemplos para começar com NFTs na Solana - 7 básicos e 2 intermediários.
Pré-requisitos
npm install @solana/kit@7.0.0 @metaplex-foundation/mpl-core @metaplex-foundation/umicargo add anchor-lang@0.32.1Programa Metaplex Core: CoREENxT6tW1HoK8yfYWXSzaXUcGUimvH2vQJ55jEo.
Exemplos básicos
1. NFT na camada de token
NFTs clássicos são mints SPL com supply=1, decimals=0.
spl-token create-token --decimals 0
spl-token mint <MINT> 1
spl-token supply <MINT>- Uma unidade bruta em uma conta de token representa a propriedade
- A camada de metadados (Metaplex) adiciona nome, imagem e coleção
- Queimar/fechar contas segue as regras do SPL
Relacionado: Noções básicas do SPL Token
2. Ler NFT via DAS API
Carteiras buscam metadados ricos pela DAS, não apenas GPA bruto.
const res = await fetch(DAS_RPC, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "getAsset",
params: { id: "ASSET_ID" },
}),
});
const { result } = await res.json();
console.log(result?.content?.metadata?.name);- DAS unifica Metaplex Core, Token Metadata e NFTs comprimidos
- Requer provedor RPC com DAS habilitada
- O formato do
iddo asset varia por padrão - use o id da consulta anterior
Relacionado: Lendo NFTs (DAS API)
3. Modelo de conta única do Metaplex Core
Core armazena dados do asset em uma única conta Asset.
import { createUmi } from "@metaplex-foundation/umi-bundle-defaults";
import { publicKey } from "@metaplex-foundation/umi";
import { fetchAsset } from "@metaplex-foundation/mpl-core";
const umi = createUmi("https://api.devnet.solana.com");
const asset = await fetchAsset(umi, publicKey("ASSET_PUBKEY"));
console.log(asset.name, asset.uri);- Menor contagem de contas em relação ao Token Metadata legado
- Padrão preferido para novos projetos NFT em 2026
- Program ID:
CoREENxT6tW1HoK8yfYWXSzaXUcGUimvH2vQJ55jEo
Relacionado: Metaplex Core
4. Layout legado do Token Metadata
NFTs mais antigos usam mint + metadata PDA + master edition.
// Metadata PDA seeds: ["metadata", token_metadata_program, mint]
const TOKEN_METADATA_PROGRAM = "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s";- Ainda comum em mercados secundários e coleções antigas
- Mais contas = maior rent de criação
- Muitas ferramentas leem via DAS sem cálculo manual de PDA
Relacionado: Token Metadata
5. Metadados JSON off-chain
A URI on-chain aponta para JSON com imagem e atributos.
{
"name": "Example NFT",
"symbol": "EX",
"description": "Demo asset",
"image": "https://arweave.net/...",
"attributes": [{ "trait_type": "Color", "value": "Blue" }]
}- Imagem frequentemente no Arweave ou IPFS
- O hash do JSON deve corresponder às expectativas de integridade on-chain
- URI mutável permite atualizações de metadados se a autoridade for mantida
Relacionado: Metadados e armazenamento
6. Agrupamento em coleções
Coleções vinculam muitos assets sob uma identidade de coleção.
// Core: plugin de coleção no asset + conta de coleção
// Token Metadata: campo de coleção verificado na conta de metadados- Coleções verificadas mostram selo de verificação em marketplaces
- Campo de coleção não verificado é falsificável - a verificação importa
- Campos
groupingda DAS expõem a associação à coleção
Relacionado: Coleções e verificação
7. Visão geral de NFT comprimido (cNFT)
cNFTs armazenam dados do asset em uma árvore merkle; o custo on-chain por mint é mínimo.
// Mint via programa Bubblegum em Concurrent Merkle Tree
// Leitura via DAS getAsset com campos de prova de compressão- Escala para milhões de mints (itens de jogos, POAPs)
- Transferências exigem provas merkle
- Programa Bubblegum:
BGUMAp9Gq7iN3nEkgqX1FbwwdBonfLCEEgxoj36SYPk
Relacionado: NFTs comprimidos (Bubblegum)
Exemplos intermediários
8. Escolher o padrão para um novo projeto
| Padrão | Contas | Melhor para |
|---|---|---|
| Metaplex Core | 1 asset | Novos 1/1 e coleções |
| Token Metadata | 3+ | Compatibilidade legada |
| cNFT | Folha da árvore | Mints em massa |
- Use Core por padrão para novos NFTs on-chain, a menos que a escala cNFT seja necessária
- Token Metadata apenas ao integrar com requisitos legados de marketplace
Relacionado: Melhores práticas de NFT
9. Royalties em alto nível
Criadores definem basis points de royalty nos metadados ou plugins Core.
// Royalties aplicadas por marketplaces + programas opcionais de enforcement on-chain
// Não automáticas em transferência SPL simples- Vendas secundárias honradas dependem do enforcement do marketplace
- Transfer hooks do Token-2022 e plugins Core adicionam opções de enforcement mais fortes
- Documente a política de royalties nos metadados da coleção
Relacionado: Royalties e enforcement
Versões da stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.