¿Qué es el estándar de token ERC-721 y cómo funciona dentro de la blockchain?

¿Qué es el estándar de token ERC-721 y cómo funciona dentro de la blockchain?

¿Qué es el estándar de token ERC-721?

ERC-721 es un estándar de Ethereum para NFT: tokens únicos que no se pueden intercambiar uno por uno como si todos fueran iguales. Cada NFT tiene su propio número, el tokenId. Gracias a ello, un contrato puede llevar un registro exacto de qué dirección posee qué NFT.

Puede compararse con tarjetas de acceso numeradas. Dos tarjetas pueden dar acceso al mismo evento, pero la tarjeta número 14 no es técnicamente la misma tarjeta que la número 15. En ERC-721 ocurre lo mismo: cada token se registra por separado.

Un token ERC-721 se identifica por dos elementos juntos: la dirección del smart contract y el tokenId. Esa combinación señala un token específico en una cadena de Ethereum.

El estándar proporciona a los smart contracts un conjunto común de reglas. Gracias a ello, una crypto wallet, un mercado u otra aplicación pueden reconocer cómo mostrar, consultar y enviar un NFT compatible. ERC-165 también forma parte de ello. Es una forma en que el software puede comprobar qué estándar admite un contrato.

Es importante saber lo siguiente: un tokenId único solo significa que el token es único dentro de ese contrato. No demuestra automáticamente que la imagen vinculada, la obra de arte o un objeto físico también sean realmente únicos o auténticos.


Puntos clave

  • ERC-721 es un estándar de Ethereum para tokens únicos y no intercambiables.
  • Cada NFT tiene su propio tokenId dentro de un contrato.
  • La dirección del contrato y el tokenId juntos identifican un token específico.
  • El estándar ayuda a wallets y aplicaciones a reconocer y procesar NFT de la misma manera.
  • Un tokenId único no demuestra automáticamente que la obra u objeto vinculado sea auténtico.

¿Cómo funciona el estándar de token ERC-721?

Un smart contract ERC-721 registra para cada tokenId qué dirección de blockchain es el propietario actual. Con ownerOf(tokenId) puede consultarse ese propietario. Con balanceOf(adres) se ve cuántos NFT posee en total una dirección.

Cuando alguien envía un NFT, el contrato cambia el propietario registrado. Para una transferencia de este tipo existen, entre otros, transferFrom y safeTransferFrom.

La segunda opción suele ser especialmente importante cuando se envía un NFT a otro smart contract. safeTransferFrom comprueba entonces si el contrato receptor puede recibir tokens ERC-721. Si no puede, la transacción se revierte. Así se evita que un NFT quede bloqueado por error en un contrato que no puede hacer nada con él.

Un propietario también puede conceder permiso a otra dirección:

  • Con approve, esa dirección puede mover un tokenId específico.
  • Con setApprovalForAll, un operador recibe permiso para mover todos los tokens ERC-721 de ese propietario.

Este último permiso es, por tanto, bastante amplio. Conceda una autorización de este tipo solo a un contrato en el que confíe. Un permiso para un solo NFT expira en cuanto ese NFT se transfiere.

El contrato también registra transferencias y permisos en eventos: notificaciones en el registro público de la blockchain. Las aplicaciones pueden utilizarlos para seguir cuándo un NFT cambia de propietario o cuándo un operador recibe autorización.

ERC-721 no determina cómo deben funcionar el minting o el burning. Minting es la creación y emisión de un nuevo token, mientras que burning retira un token de la circulación de forma permanente. El creador del contrato decide por sí mismo quién puede mintear, cuántos tokens pueden existir y si las transferencias, por ejemplo, pueden pausarse temporalmente o tener costes.

¿Para qué se utilizan los tokens ERC-721?

Los tokens ERC-721 se utilizan para elementos que se desean seguir de forma individual, porque cada token puede tener propiedades o una función propias. Piense en arte digital, objetos de colección, elementos de juego, entradas para eventos, certificados, tokens de acceso e identidad en línea.

También pueden utilizarse para vincular ciertos activos físicos a un token (piense en una casa). Pero aquí hay una diferencia importante: ERC-721 registra sobre todo quién gestiona el token en la blockchain. Que ese token también otorgue fuera de la blockchain derecho a una entrada, un objeto u otra reclamación depende del creador, de los metadatos, de las condiciones del contrato y de cualquier acuerdo aparte.

Como muchas aplicaciones entienden la misma interfaz ERC-721, la mayoría de las aplicaciones pueden, en principio, reconocer y transferir un token. Esto hace que el estándar sea útil dentro de crypto, sin que cada aplicación tenga que averiguar de nuevo cómo funciona el contrato para cada colección de NFT. Por ello, también es muy fácil para las personas iniciar por sí mismas un proyecto de NFT.

¿Qué papel desempeñan los tokens ERC-721 en los NFT?

ERC-721 es una base técnica muy utilizada para los NFT en Ethereum. El estándar regula lo esencial: identificar un NFT individual, registrar al propietario, enviar el NFT y gestionar permisos.

NFT significa, en términos simples, non-fungible token: un token que no es intercambiable como una unidad equivalente. ERC-721 no es lo mismo que NFT. Es un estándar concreto con el que se pueden construir NFT. Por tanto, un NFT también puede utilizar otro estándar técnico.

Además, un contrato ERC-721 puede incluir reglas adicionales. Por ejemplo, reglas para minting, acceso a determinadas funciones, metadatos o restricciones sobre las transferencias.

Las royalties no están incluidas de forma estándar en ERC-721. ERC-2981 es un estándar aparte con el que puede consultarse información sobre royalties. Eso no significa todavía que un mercado pague automáticamente esa royalty: el pago depende del mercado u otra parte implicada.

¿Cómo se registran los derechos de propiedad digital?

Un contrato ERC-721 registra qué dirección es propietaria de un determinado tokenId. Cualquiera puede comprobar ese registro técnico de propiedad mediante ownerOf y mediante los eventos Transfer del contrato. Al fin y al cabo, todo es visible en la blockchain, por lo que el propietario de un NFT casi siempre puede comprobarse o consultarse. Además, en la mayoría de los casos pueden revisarse los smart contracts utilizados para la colección de NFT.

Supongamos que el tokenId 42 pasa de la dirección A a la dirección B. Entonces la dirección B se convierte en la propietaria registrada del tokenId 42. Mientras tanto, la dirección del contrato y el tokenId 42 siguen siendo la misma identificación técnica de ese token.

El NFT también puede tener metadatos: información adicional sobre el token. Mediante tokenURI el contrato puede remitir, por ejemplo, a un archivo JSON con un nombre, una descripción y un enlace a una imagen.

Esa propiedad en la cadena no es automáticamente lo mismo que los derechos de autor, la propiedad intelectual o la propiedad jurídica de la imagen, la obra o un objeto físico. Poseer el NFT no significa, por sí solo, que obtenga todos los derechos sobre el contenido vinculado. Para ello, por lo general, se necesita un acuerdo válido aparte.

¿Cuál es la diferencia entre ERC-721 y ERC-20?

ERC-20 está diseñado para tokens fungibles, mientras que ERC-721 está diseñado para tokens no fungibles. Fungible significa que cada unidad es equivalente a las demás. Un token ERC-20 del mismo tipo es, por tanto, igual a otro token ERC-20 de ese tipo.

En ERC-20 se envía una cantidad, por ejemplo 10 tokens. En ERC-721 se envía un tokenId específico, por ejemplo el token número 42.

Las principales diferencias, resumidas:

  • Transferencia: ERC-20 gira en torno a una cantidad de tokens. ERC-721 gira en torno a un tokenId único.
  • Propiedad: En ERC-20 una dirección tiene un saldo. En ERC-721 el contrato registra por cada tokenId quién es el propietario.
  • Permisos: ERC-20 utiliza una allowance para un importe de gasto. ERC-721 puede conceder permiso para un NFT o para todos los NFT de un propietario.
  • Divisibilidad: Los tokens ERC-20 pueden enviarse en cantidades. Un token ERC-721 es técnicamente un tokenId individual y no tiene una función estándar decimals.
  • Cantidad total: ERC-20 tiene totalSupply como función estándar. En ERC-721, totalSupply solo está disponible si el contrato utiliza la extensión opcional ERC721Enumerable.

Los metadatos también son opcionales en ERC-721. Por tanto, un contrato no tiene por qué ofrecer necesariamente un nombre, un símbolo o tokenURI, aunque la mayoría de los contratos NFT sí lo hacen.

¿Cómo se crea un token ERC-721?

Se crea un token ERC-721 construyendo un smart contract y añadiendo lógica de minting en él. ERC-721 por sí mismo no ofrece una función pública de minting lista para usar, por lo que el desarrollador decide cómo surgen los nuevos tokens.

En la práctica, suele hacerse así:

  1. Construir o utilizar un contrato ERC-721 Un desarrollador escribe un smart contract en Solidity que admite ERC-721 y ERC-165. A menudo se amplía una implementación base probada, como OpenZeppelin ERC721, en lugar de escribir todo desde cero.

  2. Definir las reglas para el minting El contrato debe determinar quién puede mintear, cómo se asignan los tokenIds, si existe un número máximo de tokens y si el minting tiene coste. El control de acceso también pertenece aquí: no todo el mundo tiene por qué poder crear nuevos NFT automáticamente.

  3. Asignar un nuevo tokenId Para cada nuevo NFT, el contrato debe utilizar un tokenId que aún no exista. Ese tokenId se asigna a una dirección válida, no a una dirección vacía.

  4. Usar, cuando sea posible, minting safe _safeMint comprueba, cuando el receptor es a su vez un smart contract, si ese contrato puede recibir tokens ERC-721. Esto reduce la posibilidad de que un NFT recién creado quede bloqueado en el receptor.

  5. Desplegar y ejecutar transacciones Tras el despliegue en una cadena EVM, el minting, las transferencias y los permisos se ejecutan como transacciones de blockchain. Los costes y riesgos dependen de la cadena elegida y, sobre todo, del código del contrato.

Copiar un contrato no basta para un uso seguro. La lógica adicional para pagos, listas blancas, actualizaciones o royalties puede introducir nuevas vulnerabilidades. Por ello, las pruebas y, cuando proceda, una auditoría de seguridad independiente son importantes.

¿Qué componentes incluye un smart contract ERC-721?

Un smart contract ERC-721 debe ofrecer un núcleo fijo de funciones y eventos. Esa interfaz fija garantiza que otras aplicaciones sepan cómo interactuar con los NFT.

Los componentes obligatorios incluyen, entre otros:

  • balanceOf: consulta cuántos NFT posee una dirección.
  • ownerOf: consulta qué dirección es propietaria de un tokenId específico.
  • transferFrom y safeTransferFrom: envían un NFT a otra dirección.
  • approve y getApproved: gestionan y comprueban permisos para un NFT específico.
  • setApprovalForAll y isApprovedForAll: gestionan y comprueban permisos para todos los NFT de un propietario.
  • Transfer, Approval y ApprovalForAll: eventos con los que las aplicaciones pueden seguir transferencias y autorizaciones.
  • supportsInterface: la función ERC-165 con la que las aplicaciones pueden comprobar que el contrato admite ERC-721.

También existen extensiones opcionales. ERC721Metadata añade name, symbol y tokenURI. ERC721Enumerable añade, entre otras cosas, totalSupply y funciones para enumerar tokenIds.

Además, un contrato práctico suele incluir funciones propias, como una función de minting, roles de administración, reglas de venta, una base URI o una función de burning. La forma en que el contrato almacena internamente los datos, por ejemplo propietarios y permisos, no la especifica ERC-721. El estándar se centra en lo que el contrato debe poder hacer hacia el exterior.

¿Cómo se vinculan los metadatos a un token ERC-721?

Los metadatos suelen vincularse mediante tokenURI(tokenId), una función opcional que devuelve una referencia a la información sobre un NFT concreto. Esa URI puede apuntar, por ejemplo, a un archivo JSON.

En ese archivo JSON pueden aparecer campos como name, description e image. Un mercado de NFT o una crypto wallet puede utilizar esos datos para mostrar el nombre, la descripción y la imagen del token. Dado que cada NFT tiene sus propias estadísticas, puede verse como una especie de cromos de colección. Algunos cromos son únicos y raros, mientras que otros son comunes. Así es, en general, como se determina el valor de los NFT.

Un desarrollador puede almacenar una URI distinta para cada NFT. Otra opción es utilizar una base URI y añadir a ella un número o una parte específica para cada token. OpenZeppelin ofrece para ello, entre otros, ERC721URIStorage con _setTokenURI.

Es importante tener en cuenta lo siguiente: ERC-721 no obliga a que los metadatos sean permanentes o inmutables. Una URI es una referencia textual a datos fuera de la blockchain. Quién puede modificar la URI y dónde se aloja el contenido depende del contrato y de la estructura de almacenamiento. Por tanto, una imagen o un archivo JSON pueden cambiar o dejar de estar disponibles.

¿Cuáles son las ventajas y desventajas de ERC-721?

ERC-721 es útil porque ofrece una forma clara y compartida de crear tokens únicos en Ethereum. Pero el estándar no resuelve todos los problemas relacionados con los NFT.

Ventajas:

  • Interoperabilidad: wallets, brokers, subastas y otras aplicaciones pueden reconocer y procesar NFT ERC-721 de forma predecible.
  • Trazabilidad: por cada tokenId puede verse qué dirección es propietaria y qué transferencias ha habido.
  • Permisos flexibles: puede concederse permiso a una dirección para un NFT o a un operador para todos sus NFT.
  • Extensible: los metadatos y la enumeración son opcionales. Así, un contrato puede mantenerse pequeño o incorporar funciones adicionales.

Desventajas y riesgos:

  • Mucho poder con setApprovalForAll: un operador aprobado puede mover todos los tokens ERC-721 de su dirección. Revise esos permisos con regularidad y concédalos solo a contratos de confianza.
  • Riesgo con transferFrom: un NFT puede quedar bloqueado si el contrato receptor no puede manejarlo. safeTransferFrom lo comprueba mejor, pero la llamada externa adicional puede generar un riesgo de reentrancy. En ese caso, otro contrato intenta volver a llamar a una función durante la ejecución.
  • Costes más altos con la enumeración: ERC721Enumerable no suele utilizarse, porque enumerar tokens en la cadena puede requerir mucho gas adicional.
  • Sin garantía fuera de la blockchain: ERC-721 no demuestra automáticamente derechos de autor, autenticidad de las reclamaciones, metadatos permanentes ni un pago obligatorio de royalties.

En resumen: ERC-721 proporciona una base técnica para la propiedad y la transferencia de un NFT. Que una colección sea también segura y qué derechos le correspondan exactamente depende del código del contrato, de los permisos de administración, de los metadatos y de los acuerdos fuera de la blockchain.

Conclusión

ERC-721 es el estándar de Ethereum que da a los NFT una identidad propia. Un smart contract registra por cada tokenId quién es el propietario, cómo se transfiere un NFT y quién tiene permiso para ello.

Esto hace que ERC-721 sea útil, entre otras cosas, para arte digital, elementos de juego, entradas y tokens de acceso. Al mismo tiempo, un NFT no es automáticamente prueba de derechos de autor, autenticidad o propiedad jurídica de lo que está vinculado a él. Por ello, no mire solo el NFT en sí, sino también las reglas del contrato, los metadatos y los permisos que concede a un contrato.

Acerca de Finst

Finst es una plataforma de criptomonedas líder en los Países Bajos que ofrece comisiones de trading ultrabajas, seguridad de nivel institucional y un conjunto integral de servicios cripto como trading, custodia, staking y rampas fiat de entrada y salida. Finst, fundada por el antiguo equipo central de DEGIRO, está autorizada como proveedor de servicios de criptoactivos por la Autoridad Neerlandesa de los Mercados Financieros (AFM) y presta servicios tanto a clientes minoristas como institucionales en 30 países europeos.

La plataforma de criptomonedas para todos los inversores

Tanto si es un trader activo como un inversor a largo plazo, Finst le permite hacer crecer su patrimonio en criptomonedas con confianza y tranquilidad.

Abrir cuenta gratis