mpl-core & mpl-token-metadata
Bibliotecas Metaplex modelam NFTs e ativos digitais na Solana. mpl-token-metadata cobre as contas clássicas do Metaplex Token Metadata anexadas a Mints SPL. mpl-core (Core Digital Assets) fornece um modelo de ativo simplificado com plugins. Crates Rust encapsulam construtores de instrução; clientes TypeScript frequentemente usam integrações Umi ou @solana/kit 7.0.0 juntamente com APIs DAS.
Receita
Cartão de receita de referência rápida - pronto para copiar e colar.
[dependencies]
mpl-token-metadata = "5.1"
mpl-core = "0.9"use mpl_token_metadata::accounts::Metadata;
// Parsing de layout para PDA de metadados de NFT legadoQuando usar isso:
- Mintar NFTs com metadados on-chain e array de criadores.
- Construir marketplaces que atualizam metadados ou verificam coleções.
- Adotar Metaplex Core para emissão de ativos de menor custo.
- Ler registros de ativos via DAS em vez de caminhadas manuais de PDA.
Exemplo de Trabalho
use anchor_lang::prelude::*;
use mpl_core::{
instructions::CreateV1CpiBuilder,
types::{Attribute, Attributes, DataState, PluginAuthorityPair},
};
pub fn create_core_asset<'info>(
asset: &AccountInfo<'info>,
payer: &Signer<'info>,
system_program: &AccountInfo<'info>,
mpl_core_program: &AccountInfo<'info>,
name: String,
uri: String,
) -> Result<()> {
CreateV1CpiBuilder::new(mpl_core_program)
.asset(asset)
.payer(payer)
.system_program(system_program)
.name(name)
.uri(uri)
.data_state(DataState::AccountState)
.invoke()?;
Ok(())
}O que isso demonstra:
- MPL Core usa construtores CPI para direcionar o programa Core.
- Nome e URI apontam para JSON off-chain (IPFS/Arweave/https).
DataStateescolhe modelos de estado de conta vs. ledger.- Funciona dentro de instruções Anchor 0.32.1 com contas explícitas.
Mergulho Profundo
Como Funciona
- Token Metadata anexa um PDA por mint com nome, símbolo, uri, criadores, coleção.
- Core Assets unifica propriedade e plugins com uma interface de programa diferente.
- API DAS indexa ativos legados e comprimidos para consultas de clientes.
- Royalties aplicados via regras de programa e integrações de marketplace.
Tabela de Crates Rust
| Crate | Modelo de ativo | Uso típico |
|---|---|---|
mpl-token-metadata | PDAs de NFT clássicos em mint | Marketplaces, máquinas de doces legadas |
mpl-core | Ativos digitais Core | Novas coleções com plugins |
mpl-candy-machine | Mecânicas de lançamento | Drops (ver seção NFT) |
mpl-bubblegum | Compressão | cNFTs (ver seção de compressão) |
Tabela TypeScript / NPM
| Pacote | Papel | Notas |
|---|---|---|
@metaplex-foundation/mpl-core | Construtores de instrução Core | Emparelhar com Umi ou kit |
@metaplex-foundation/mpl-token-metadata | Metadados legados | Projetos de migração |
@metaplex-foundation/umi | Shell do SDK Metaplex | Empacota serializadores |
DAS (getAsset) | Camada de leitura | RPC habilitado por provedor |
Notas Rust
// Prefira DAS para dashboards com muitas leituras; use crates para escritas/CPIs
// Valide o comprimento da URI e a soma das participações dos criadores em 100% antes do CPIArmadilhas
- Mistura de modelos Core e Token Metadata - layouts de conta incompatíveis. Correção: escolha por coleção; documente no aplicativo.
- Metadados on-chain superdimensionados - pico de aluguel e CU. Correção: armazene JSON off-chain; apenas uri on-chain.
- Incompatibilidade do array de criadores - falha na aplicação de royalties. Correção: corresponda aos pontos percentuais de taxa do vendedor às regras de negócios.
- Verificação de coleção ausente - associação falsa de coleção. Correção: execute a instrução de verificação de coleção.
- Suposição de escritas DAS - DAS é somente leitura. Correção: construa instruções MPL para mutações.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
cNFTs mpl-bubblegum | Mints em massa | Precisa de metadados ricos on-chain |
| Apenas token SPL | SFT Fungível | Metadados completos de NFT |
| Metadados de programa personalizados | Itens de jogo com lógica | Interoperabilidade padrão de marketplace |
| Apenas IPFS sem MPL | Protótipos off-chain | Compatibilidade OpenSea/Magic Eden |
FAQs
Core vs Token Metadata?
Core é o modelo unificado mais novo; Token Metadata permanece amplamente utilizado em NFTs legados.
Preciso de Umi em Rust?
Não - Rust usa crates MPL diretamente; Umi é focado em TS.
NFTs Comprimidos?
Use Bubblegum + DAS - crates e fluxos diferentes.
Aplicação de royalties?
Dependente do marketplace; regras on-chain são necessárias, mas não suficientes.
Integração Anchor?
Construtores CPI dentro de manipuladores #[program] com contas restantes explícitas.
URIs de armazenamento?
Prefira CIDs imutáveis Arweave/IPFS; evite https mutáveis para colecionáveis.
Contas de edição?
Edições de Token Metadata para edições impressas; Core usa plugins.
Indexação?
Helius/Triton DAS para leituras; Geyser para pipelines personalizados.
Testes?
LiteSVM com programas MPL carregados ou testes de integração em devnet.
Leituras de cliente em kit?
Combine RPC @solana/kit 7.0.0 com HTTP DAS para páginas de ativos.
Relacionados
- Noções Básicas de NFT na Solana - conceitos
- Metaplex Core - guia Core
- Token Metadata - metadados legados
- Lendo NFTs (API DAS) - caminho de leitura
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.