mpl-core & mpl-token-metadata
Las bibliotecas de Metaplex modelan NFTs y activos digitales en Solana. mpl-token-metadata cubre las cuentas clásicas de Metaplex Token Metadata adjuntas a los mints de SPL. mpl-core (Core digital assets) proporciona un modelo de activos simplificado con plugins. Los crates de Rust envuelven constructores de instrucciones; los clientes de TypeScript a menudo usan integraciones de Umi o @solana/kit 7.0.0 junto con las API de DAS.
Receta
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
[dependencies]
mpl-token-metadata = "5.1"
mpl-core = "0.9"use mpl_token_metadata::accounts::Metadata;
// Análisis de diseño para PDA de metadatos NFT heredadosCuándo usar esto:
- Al acuñar NFTs con metadatos en cadena y un array de creadores.
- Al construir mercados que actualizan metadatos o verifican colecciones.
- Al adoptar Metaplex Core para la emisión de activos de menor costo.
- Al leer registros de activos a través de DAS en lugar de recorridos manuales de PDA.
Ejemplo de Trabajo
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(())
}Lo que esto demuestra:
- MPL Core utiliza constructores CPI para apuntar al programa Core.
- El nombre y la URI apuntan a JSON fuera de la cadena (IPFS/Arweave/https).
DataStateelige modelos de estado de cuenta o de libro mayor.- Funciona dentro de las instrucciones de Anchor 0.32.1 con cuentas explícitas.
Inmersión Profunda
Cómo Funciona
- Token Metadata adjunta una PDA por mint con nombre, símbolo, uri, creadores, colección.
- Los activos Core unifican la propiedad y los plugins con una interfaz de programa diferente.
- La API DAS indexa activos heredados y comprimidos para consultas de clientes.
- Las regalías se aplican a través de reglas del programa e integraciones de mercado.
Tabla de Crates de Rust
| Crate | Modelo de activo | Uso típico |
|---|---|---|
mpl-token-metadata | PDAs de NFT clásicas en mint | Mercados, máquinas de dulces heredadas |
mpl-core | Activos digitales Core | Nuevas colecciones con plugins |
mpl-candy-machine | Mecánicas de lanzamiento | Drops (ver sección NFT) |
mpl-bubblegum | Compresión | cNFTs (ver sección de compresión) |
Tabla de TypeScript / NPM
| Paquete | Rol | Notas |
|---|---|---|
@metaplex-foundation/mpl-core | Constructores de instrucciones Core | Emparejar con Umi o kit |
@metaplex-foundation/mpl-token-metadata | Metadatos heredados | Proyectos de migración |
@metaplex-foundation/umi | Shell del SDK de Metaplex | Agrupa serializadores |
DAS (getAsset) | Capa de lectura | RPC habilitado por proveedor |
Notas de Rust
// Prefiere DAS para paneles de control con muchas lecturas; usa crates para escrituras/CPIs
// Valida la longitud de la URI y que la suma de las participaciones de los creadores sea 100 antes de la CPITrampas
- Mezclar modelos Core y Token Metadata - diseños de cuenta incompatibles. Solución: elige por colección; documenta en la aplicación.
- Metadatos en cadena de gran tamaño - aumento de alquiler y CU. Solución: almacena JSON fuera de la cadena; solo URI en cadena.
- Desajuste del array de creadores - falla la aplicación de regalías. Solución: haz coincidir los puntos base de la tarifa del vendedor con las reglas de negocio.
- Verificación de colección faltante - membresía de colección falsa. Solución: ejecuta la instrucción de verificación de colección.
- Asumir escrituras DAS - DAS es de solo lectura. Solución: crea instrucciones MPL para mutaciones.
Alternativas
| Alternativa | Usar cuándo | No usar cuándo |
|---|---|---|
cNFTs de mpl-bubblegum | Mints masivos | Necesitas metadatos ricos en cadena |
| Solo token SPL | SFT fungible | Metadatos NFT completos |
| Metadatos de programa personalizados | Artículos de juego con lógica | Interoperabilidad estándar del mercado |
| Solo IPFS sin MPL | Prototipos fuera de cadena | Compatibilidad con OpenSea/Magic Eden |
Preguntas Frecuentes
¿Core vs Token Metadata?
Core es el modelo unificado más nuevo; Token Metadata sigue siendo muy utilizado en NFTs heredados.
¿Necesito Umi en Rust?
No - Rust usa los crates MPL directamente; Umi es principalmente para TS.
¿NFTs comprimidos?
Usa Bubblegum + DAS - crates y flujos diferentes.
¿Aplicación de regalías?
Dependiente del mercado; las reglas en cadena son necesarias pero no suficientes.
¿Integración con Anchor?
Constructores CPI dentro de manejadores #[program] con cuentas restantes explícitas.
¿URIs de almacenamiento?
Prefiere CIDs inmutables de Arweave/IPFS; evita https mutables para coleccionables.
¿Cuentas de edición?
Ediciones de Token Metadata para ediciones impresas; Core usa plugins.
¿Indexación?
Helius/Triton DAS para lecturas; Geyser para pipelines personalizados.
¿Pruebas?
LiteSVM con programas MPL cargados o pruebas de integración en devnet.
¿Lecturas del cliente en kit?
Combina el RPC de @solana/kit 7.0.0 con DAS HTTP para páginas de activos.
Relacionado
- Conceptos básicos de NFT en Solana - conceptos
- Metaplex Core - guía Core
- Token Metadata - metadatos heredados
- Lectura de NFTs (API DAS) - ruta de lectura
Versiones de Stack: Esta página se escribió 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, y LiteSVM 0.6.x.