NFT en NEAR: cómo usar NEP-171 y NEP-177
Clase 7 de 7 • Curso de Desarrollo en Blockchain con NEAR
Contenido del curso
Sesión 2: Simple dApp Overview
Sesión 3: Interacción de un contrato con el frontend
Sesión 4: Llamada entre contratos
Sesión 5: NFT standard example
Aprende, paso a paso, cómo funcionan los NFTs en NEAR con los estándares NEP‑171 y NEP‑177: transferencias, metadata, royalties y flujos reales con Paras y near-cli. Todo con enfoque práctico para que tus colecciones sean compatibles con marketplaces, wallets y herramientas como Rainbow Bridge.
¿Qué son los NFTs y cómo se diferencian de los tokens fungibles?
Los tokens en blockchain se dividen en dos categorías: fungibles (FTs) y no fungibles (NFTs). La diferencia clave es la fraccionabilidad y la unicidad.
- FT: se pueden fraccionar. Ejemplo: NEAR. Tienen valor de intercambio directo. Se transfieren como cantidades.
- NFT: no se pueden fraccionar. Representan objetos únicos o con copias limitadas. Se gestionan con smart contracts.
- Un NFT puede ser una imagen, audio, documento o la representación de un objeto físico.
- Se usan más allá del arte: acceso a comunidades, utilidades en DeFi o pruebas de propiedad digital.
¿Cómo operan los estándares NEP-171 y NEP-177 en NEAR?
Los estándares son reglas que garantizan interoperabilidad entre contratos, DApps y marketplaces. Seguirlos permite, por ejemplo, que tu NFT funcione en wallets y pueda moverse vía Rainbow Bridge si aplica.
¿Cómo se transfiere un NFT con NEP-171?
La transferencia define parámetros mínimos y opcionales:
- receiver_id: cuenta NEAR válida que recibirá el NFT.
- token_id: identificador del NFT.
- approval_id (opcional): requerido si usas la extensión de approval management para transferencias delegadas.
- memo (opcional): detalles adicionales de la operación.
Esta interfaz asegura que cualquier contrato o marketplace entienda la operación de envío.
¿Qué datos exige la metadata del contrato?
Tu contrato que maneja NFTs debe exponer su metadata mediante una función de consulta. Campos clave:
- spec: versión del estándar implementado, p. ej., nft-1.0.0.
- name: nombre legible por humanos.
- symbol: abreviación del contrato.
- Opcionales: icon, base_uri (comúnmente IPFS), reference (URL a JSON) y reference_hash. Si usas reference, el hash es obligatorio.
Esto permite que wallets y DApps lean la información del contrato sin revisar código.
¿Qué campos de metadata tiene un token?
Para que un objeto sea reconocido como NFT, la metadata del token debe estar disponible y bien formada.
- Básicos: title, description.
- Medios: media (URL al archivo) y media_hash. Usualmente se hospeda en IPFS para optimizar costos y separar almacenamiento del on-chain.
- Gestión de copias: copies para indicar cuántas unidades existen.
- Tiempos en Unix epoch milisegundos: issued_at, expires_at, starts_at, updated_at.
- Extensibles: extra (string libre), reference y reference_hash para JSON externo con más detalles.
Nota sobre almacenamiento: subir el archivo on-chain sería costoso en gas y almacenamiento. Por eso se guarda el medio fuera de la cadena (p. ej., IPFS) y on-chain solo las referencias.
¿Cómo crear y gestionar NFTs en práctica con Paras y near-cli?
Se mostraron dos caminos: usar un marketplace (Paras en testnet) y mintear desde un contrato con near-cli. Ambos leen/escriben siguiendo los NEP.
¿Cómo mintear y vender en Paras?
- Crea una colección y sube el media (imagen, audio o documento, según el marketplace).
- Define copies. Ejemplo: 3 copias del logo.
- Configura royalties. Ejemplo: 10 % para otra cuenta.
- Asigna precio por unidad. Ejemplo: 2000 (equivalente aproximado a 7 USD en el caso mostrado).
- Paga el cargo del marketplace. Ejemplo: 0.0000854 NEAR por crear el NFT.
- Compra y transferencia: se mostró una compra por 0.1 NEAR más almacenamiento.
- Visualización: el NFT aparece en la wallet en la pestaña de coleccionables.
¿Cómo mintear desde un contrato y ver en la wallet?
- Inicia sesión con near-cli y usa una variable de entorno:
export NEAR_ID=tu_cuenta.testnet. - Ejecuta
near callal métodonft_mintdel contrato de ejemplo, con:- token_id único.
- receiver_id tu cuenta.
- metadata con title, description, media y copies.
- Un depósito para cubrir almacenamiento y fees.
- Verifica con un
viewlos tokens del owner. - Abre tu wallet y revisa el coleccionable bajo el nombre del contrato (p. ej., “NFT Tutorial Contract”).
¿Qué otras extensiones conviene conocer?
- enumeration: conteo y búsqueda de tokens y copias.
- approval management: permitir a usuarios o contratos transferir NFTs en tu nombre. Útil para linkdrop o DApps intermedias.
- events v1.0: formato estándar para acciones como mint, transfer o burn. Clave para usarlos con indexers.
- royalties and payouts: pagos a múltiples receptores según porcentajes definidos.
- Interacciones avanzadas: cross contract calls y movilidad entre redes mediante Rainbow Bridge.
¿Te quedó alguna duda o quieres compartir tu experiencia minteando en NEAR? Comenta qué parte te gustaría profundizar y qué DApp estás construyendo.