Metadatos y Almacenamiento
Los metadatos de los NFT combinan campos en la cadena (nombre, uri) con JSON y archivos multimedia fuera de la cadena. Las opciones de almacenamiento (Arweave, IPFS, HTTPS centralizado) afectan la permanencia, el costo y la confianza.
Receta
{
"name": "Mi NFT",
"symbol": "MNFT",
"description": "Activo de ejemplo",
"image": "ar://HASH",
"attributes": [{ "trait_type": "Rareza", "value": "Oro" }],
"properties": { "files": [{ "uri": "ar://HASH", "type": "image/png" }] }
}# Sugar upload -> ruta típica de Arweave bundlr
sugar uploadCuándo usar esto:
- Preparar los activos de la colección antes de la acuñación en cadena.
- Elegir entre alojamiento permanente o mutable.
- Validar el esquema de metadatos para los mercados.
- Vincular los campos
animation_urlyexternal_url.
Ejemplo de Trabajo
# Directorio por elemento: assets/0.json, assets/0.png, ...
sugar validate
sugar upload # sube imágenes + metadatos a Arweave a través de Bundlr
sugar deploy// Después de la subida, la uri JSON en los metadatos en cadena apunta a la puerta de enlace de Arweave o ar://
const metadata = {
name: "Elemento #0",
symbol: "DEMO",
description: "Almacenado en Arweave",
image: "https://arweave.net/TX_ID",
attributes: [
{ trait_type: "Fondo", value: "Azul" },
{ trait_type: "Ojos", value: "Láser" },
],
};
// Campo uri en cadena -> misma ubicación JSON// Fetch del cliente con caché desactivada en la revelación
const res = await fetch(uri.replace("ar://", "https://arweave.net/"));
const json = await res.json();Lo que esto demuestra:
- Esquema JSON estándar compatible con los principales mercados.
- Campo
imagerequerido para la visualización en galería. - El array
attributespotencia los filtros de rasgos y las herramientas de rareza.
Inmersión Profunda
Cómo Funciona
- La cuenta en cadena almacena una cadena corta
urique apunta al JSON. - El JSON hace referencia a los medios a través de
image,animation_url,properties.files. - Arweave: permanencia con pago único y direccionamiento por contenido.
- IPFS: basado en CID; se requiere un servicio de anclaje para la disponibilidad.
Comparación de Almacenamiento
| Almacenamiento | Permanencia | Modelo de costo |
|---|---|---|
| Arweave | Alta | Pago inicial por MB |
| IPFS + anclaje | Depende del anclaje | Tarifas de anclaje continuas |
| HTTPS | Baja (mutable) | Alojamiento de servidor |
Notas de TypeScript
// Validar el esquema JSON en CI antes de la subida
// Hashear archivos y comparar con el compromiso en cadena si se usa el patrón NFT verificableTrampas
- Solo uri HTTP - intercambio de metadatos si el servidor se ve comprometido. Solución: Arweave/IPFS para colecciones de producción.
- Imágenes sobredimensionadas - cargas lentas y rechazo del mercado. Solución: comprimir; seguir los límites de tamaño del mercado.
- ID de token vs nombre de archivo incorrecto - se muestra la imagen incorrecta. Solución:
sugar validatey comprobaciones de hash. - Fuga de revelación - JSON final subido demasiado pronto. Solución: configuración oculta + subida de revelación retrasada.
- Resolutor
ar://roto - algunos clientes carecen de puerta de enlace. Solución: proporcionar un fallbackhttps://arweave.neten la interfaz de usuario.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Arweave a través de Bundlr | Arte NFT de producción | Solo prueba rápida y desechable |
| IPFS NFT.Storage | Preferencia por el ecosistema IPFS | Necesidad de la garantía de permanencia de Arweave |
| SVG en cadena (pequeño) | Arte generativo diminuto | Archivos multimedia grandes |
Preguntas Frecuentes
¿Qué va en cadena y qué fuera de cadena?
Nombre/uri en cadena; imagen y atributos típicamente JSON fuera de cadena.
¿Arweave vs IPFS?
Arweave: permanencia con pago único. IPFS: CID con responsabilidad de anclaje.
¿Qué es Bundlr?
Capa de subida que financia transacciones de Arweave - usada por Sugar.
¿Campos JSON requeridos?
Mínimo name, image para la mayoría de los mercados; attributes para rasgos.
¿animation_url?
Campo opcional para medios interactivos de video/html.
¿Pueden cambiar los metadatos?
Sí, si la autoridad de actualización en cadena puede cambiar la uri a un nuevo JSON.
¿Metadatos inmutables?
Revocar la autoridad de actualización después de establecer la uri final; usar almacenamiento permanente.
¿Colecciones generativas?
Pre-renderizar todas las imágenes o SVG en cadena; JSON por índice con rasgos coincidentes.
¿Validar antes de acuñar?
sugar validate comprueba pares json/imagen y problemas de esquema.
¿Campo de imagen DAS?
DAS resuelve content.links.image a partir de metadatos indexados.
¿Riesgo del almacenamiento centralizado?
El servidor puede intercambiar la imagen - socava la narrativa de permanencia del NFT.
¿Límites de tamaño de archivo?
Específicos del mercado - comúnmente unos pocos MB para imágenes.
Relacionado
- Candy Machine - Flujo de subida de Sugar
- Metaplex Core - campo uri en cadena
- Lectura de NFTs (API DAS) - metadatos resueltos
Versiones de la pila: Esta página fue 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, y LiteSVM 0.6.x.