Estándar NFT en NEAR: NEP-171 y NEP-177

Resumen

Crear un NFT en NEAR no se trata solo de subir una imagen bonita. Detrás hay un conjunto de reglas técnicas, los estándares NEP-171 y NEP-177, que definen cómo debe verse, transferirse y describirse un token no fungible para que cualquier marketplace, wallet o dapp lo reconozca. Si estás desarrollando con NEAR y quieres que tus NFTs viajen entre aplicaciones e incluso entre redes, necesitas entender estos estándares.

¿Qué diferencia hay entre un token fungible y un NFT?

La distinción clave es la fraccionabilidad. Un fungible token (FT) como NEAR se puede dividir: puedes enviar medio NEAR sin problema y todos los NEAR son intercambiables entre sí. Un non-fungible token (NFT) no se fracciona porque representa algo único, como una imagen, un documento, una tabla de surf grafiteada o incluso una entrada a una comunidad [9:30].

¿Qué es un NFT en NEAR? Es un objeto guardado en un contrato inteligente que representa de forma única un activo digital o físico, identificado por un token ID y un owner ID. No se puede dividir y puede tener copias limitadas o ser totalmente único.

Los NFTs ya no se limitan al arte. Hoy se usan en DeFi para préstamos con rendimiento, como pases de membresía, coleccionables de videojuegos o avatares generados por IA, como hizo Reddit con sus avatares regalados a usuarios.

¿Qué define el NEP-171, la funcionalidad central de un NFT?

El NEP-171 establece la estructura mínima que debe tener un token y cómo se transfiere [25:00]. Cada token retornado por una función debe entregarse como un objeto con dos propiedades obligatorias: el token_id en formato string y el owner_id con la cuenta dueña.

Para mover un NFT entre cuentas, el estándar exige una función de transferencia con estos parámetros:

  • receiver_id: la cuenta NEAR válida que recibe el token.
  • token_id: el identificador del token a transferir.
  • approval_id: opcional, usado cuando un contrato transfiere a nombre de otra cuenta.
  • memo: opcional, para información adicional como la red de origen en transferencias vía Rainbow Bridge.

Los dos primeros son obligatorios. Los otros aparecen cuando implementas extensiones como approval management o trabajas con puentes entre redes.

¿Por qué importa cumplir el estándar al pie de la letra?

Porque si tu NFT no respeta NEP-171, se queda atrapado en tu dapp. Ningún marketplace externo lo reconocerá, no podrás moverlo a Ethereum vía Rainbow Bridge y otras aplicaciones simplemente lo verán como un objeto cualquiera, no como un token.

¿Qué información debe llevar la metadata según el NEP-177?

El NEP-177 define dos interfaces de metadata: una para el contrato y otra para cada token [38:00]. La metadata del contrato es obligatoria e incluye:

  • spec: la versión del estándar implementada, por ejemplo nft-1.0.0.
  • name: nombre legible por humanos del contrato.
  • symbol: versión abreviada, como el código corto de un equipo en un marcador deportivo.
  • icon, base_uri, reference, reference_hash: campos opcionales para íconos, almacenamiento descentralizado y JSONs externos.

Tu contrato también debe exponer una función que retorne esta metadata, para que cualquier dapp pueda consultarla sin leer el código fuente.

¿Qué es el base_uri en un contrato NFT? Es la URL base de un servidor centralizado que almacena los activos descentralizados, normalmente apuntando a IPFS (Interplanetary File System). Permite que las imágenes y archivos no vivan dentro de la blockchain, lo cual sería muy costoso.

¿Qué propiedades lleva la metadata de cada token?

La metadata del token amplía la estructura básica con campos como title, description, media (URL del archivo), media_hash, copies, issued_at, expires_at, starts_at, updated_at y extra. Todas las fechas se guardan en milisegundos formato Unix.

El campo media apunta a IPFS porque guardar una imagen de cinco megas directamente en la blockchain sería brutalmente caro en almacenamiento y procesamiento. IPFS funciona como un servidor centralizado para almacenamiento de activos descentralizados, una contradicción aparente pero práctica.

El campo expires_at abre posibilidades interesantes: puedes crear NFTs como suscripciones que dan acceso a una comunidad por un mes y caducan automáticamente.

¿Qué otras extensiones del estándar NFT existen en NEAR?

Más allá del núcleo, NEAR ofrece extensiones para casos específicos [1:05:00]:

  • Enumeration: interfaz para conteo y búsqueda de tokens.
  • Approval management: permite que un contrato o usuario transfiera NFTs a nombre del dueño.
  • Events 1.0: define cómo emitir eventos al mintear, transferir o quemar tokens.
  • Royalties and payouts: distribuye pagos a múltiples receptores cuando alguien compra el NFT.

Las royalties son útiles cuando el autor original de una obra es distinto al minter. Puedes configurar que el 10% de cada venta vaya automáticamente a la cuenta del artista, y el contrato se encarga de hacer la transferencia al ejecutar la compra.

¿Cómo se mintea un NFT en la práctica?

Hay dos rutas principales. La primera es usar un marketplace como Paras en testnet: te conectas con tu wallet, creas una colección, subes una imagen, defines copias, atributos y royalties, y el sitio se encarga de subir el archivo a IPFS y firmar la transacción. El costo ronda los 0.00854 NEAR por token, equivalente a unos 0.003 dólares.

La segunda ruta es llamar directamente a un contrato desde NEAR CLI. Un comando típico sería:

bash near call nft-examples.testnet nft_mint '{"token_id":"hola-platzi","receiver_id":"'$NEAR_ID'","metadata":{"title":"Hola Platzi","description":"Ejemplo con contrato","media":"https://...","copies":1}}' --accountId $NEAR_ID --deposit 0.1

Aquí usamos una variable de entorno NEAR_ID con export NEAR_ID=tucuenta.testnet para no escribir la cuenta cada vez. Después puedes verificar el NFT en la pestaña Collectibles de tu wallet, donde aparecerá con la metadata renderizada.

¿Puedes convertir arte hecho a mano en NFT? Sí. Digitalizas el dibujo escaneándolo, lo subes al marketplace o lo referencias en la metadata, y el contrato se encarga del resto. La blockchain no distingue si la imagen nació en un lienzo o en Photoshop.

¿Qué te parece este recorrido por los estándares NFT de NEAR? Cuéntame en los comentarios qué proyecto estás construyendo con NEP-171.

      Estándar NFT en NEAR: NEP-171 y NEP-177