¿Qué es ERC-777?
ERC-777 es un estándar de tokens de Ethereum para activos cripto fungibles que añade hooks de transferencia, permisos de operador, datos de transacción y comprobaciones más seguras de los contratos receptores al modelo básico de token.Al igual que ERC-20, representa unidades intercambiables: una unidad de token tiene el mismo valor y las mismas propiedades que otra unidad del mismo token.La especificación oficial de ERC-777 es un estándar Final de Ethereum Request for Comments creado para mejorar la interacción de los tokens fungibles con wallets y contratos inteligentes.
Sus principales funciones son la función
¿Sigue activo el estándar ERC-777?
ERC-777 sigue figurando como estándar Final en el repositorio oficial de propuestas de mejora de Ethereum.El estado Final significa que la especificación completó el proceso de estandarización EIP, pero no garantiza una adopción generalizada, compatibilidad activa de las bibliotecas ni que sea adecuado para todos los tokens nuevos.Una importante biblioteca de contratos inteligentes marcó como obsoleta su implementación de ERC-777 en la versión 4.9 y la eliminó en la versión 5.0.El registro de cambios actual de OpenZeppelin Contracts recoge el fin de la compatibilidad con la implementación, aunque las interfaces relacionadas con el estándar siguen disponibles.
Esta decisión sobre la biblioteca no anuló ERC-777 ni modificó su estado Final.Significa que los desarrolladores no deben esperar encontrar una implementación mantenida de tokens ERC-777 en las versiones actuales de esa biblioteca.Los contratos ERC-777 existentes pueden seguir funcionando conforme al código desplegado, pero las nuevas integraciones deben evaluar cuidadosamente su comportamiento de devolución de llamada, dependencias, auditorías y compatibilidad con el ecosistema.¿Por qué se creó ERC-777?
ERC-777 se creó para abordar varias limitaciones de usabilidad y seguridad asociadas a las transferencias ERC-20 básicas.Una transferencia ERC-20 a un contrato no obliga al contrato receptor a reconocer o procesar los tokens.Esto puede dejar los tokens atrapados si el contrato no tiene una función para recuperarlos o contabilizarlos.Las aplicaciones ERC-20 también suelen utilizar un proceso en dos pasos: primero, el usuario aprueba a un gastador y, después, este llama a
ERC-777 introdujo
Cómo funciona ERC-777
Un contrato ERC-777 almacena saldos de tokens y la oferta total, y expone funciones estandarizadas para enviar, quemar y delegar el control de tokens.Al enviar tokens, el contrato comprueba mediante ERC-1820 si el emisor ha registrado un hook de emisor.Si existe un hook de emisor, el token lo llama antes de modificar los saldos.A continuación, el token reduce el saldo del emisor y aumenta el del destinatario.Tras actualizar los saldos, comprueba si el destinatario ha registrado un hook de destinatario y lo llama cuando corresponde.Un hook puede aceptar el movimiento, ejecutar lógica adicional o revertir toda la transacción.Como la operación es atómica, una reversión en un hook obligatorio normalmente cancela el movimiento del token y todos los cambios de estado relacionados con esa transacción.Funciones principales de ERC-777
La interfaz ERC-777 incluye funciones para consultar los metadatos, los saldos, la granularidad, los operadores, las transferencias y las quemas de tokens.Las funciones
La función
La función
La función
Las funciones
Las funciones
La función send
La función
La función operatorSend
La función
Tanto los datos
La dirección del operador, el titular, el destinatario, la cantidad y los datos se incluyen en el evento estandarizado
¿Qué es un operador de ERC-777?
Un operador es una dirección autorizada para enviar o quemar tokens ERC-777 en nombre de un titular.El titular del token siempre es operador de su propio saldo.El titular puede autorizar otra cuenta o contrato inteligente y revocar esa autorización más adelante.Los operadores pueden facilitar pagos automatizados, la gestión de cuentas mediante contratos, actividades programadas, sistemas de recuperación u otros flujos de trabajo delegados con tokens.A diferencia de una asignación numérica de ERC-20, la autorización normal de un operador no está limitada a una cantidad concreta de tokens.Esta autoridad más amplia puede mejorar la usabilidad, pero también aumenta las posibles pérdidas si el operador es malicioso o se ve comprometido.Una wallet debe explicar con claridad que autorizar a un operador puede concederle control continuado sobre el saldo del titular.Operadores por defecto
Un token ERC-777 puede definir operadores por defecto que estén autorizados inicialmente para todos los titulares.La lista de operadores por defecto debe fijarse al crear el contrato del token y, conforme al estándar, no se puede ampliar ni reducir más adelante.Todo titular debe poder revocar un operador por defecto para sus propios tokens.El titular también debe poder volver a autorizar a un operador por defecto que haya revocado anteriormente.Los operadores por defecto pueden facilitar servicios para todo el sistema sin que cada titular tenga que realizar una transacción inicial de autorización.También plantean una importante cuestión de confianza, ya que un operador por defecto comienza con una amplia autoridad sobre los titulares del token.Antes de conservar una cantidad significativa de un token ERC-777, los usuarios deben revisar la lista de operadores por defecto y entender su finalidad.Hooks de emisor
El hook de emisor de ERC-777 se llama
Hooks de destinatario
El hook de destinatario de ERC-777 se llama
¿Qué es ERC-1820?
ERC-777 depende de ERC-1820 para detectar hooks de emisor y destinatario, así como interfaces compatibles.La especificación ERC-1820 define un registro universal en el que una dirección puede publicar qué interfaces admite y qué contrato las implementa.
El registro puede incluir interfaces de cuentas convencionales y de contratos inteligentes.Una cuenta puede registrarse como implementadora o designar a otro contrato para gestionar una interfaz en su nombre.Antes de llamar a un hook de ERC-777, el token consulta en el registro la implementación correspondiente del emisor o del destinatario.Esta dependencia del registro añade una consulta a un contrato externo a las operaciones ERC-777.Para que una implementación estándar funcione correctamente, la red compatible debe contar con el despliegue esperado del registro ERC-1820 y con el comportamiento de integración correspondiente.Eventos de ERC-777
ERC-777 define los eventos
El evento
El evento
El evento
Un token que también admita ERC-20 puede emitir eventos ERC-20
Granularidad y visualización de decimales
La granularidad es la menor cantidad interna de tokens que un contrato ERC-777 permite acuñar, enviar o quemar.El valor se fija al crear el contrato y no puede cambiar según el estándar.Todos los saldos y cantidades de movimiento deben ser múltiplos de la granularidad del token.La mayoría de los tokens utiliza una granularidad de uno, que permite mover cada unidad interna entera.ERC-777 establece que la unidad de visualización tiene 18 decimales respecto a la unidad interna.Si un token ERC-777 también expone la función opcional ERC-20
Compatibilidad entre ERC-777 y ERC-20
ERC-777 se diseñó para que un token pudiera implementar funciones ERC-20 junto con la interfaz ERC-777.El estándar ERC-20 define funciones conocidas como
Un envío nativo de ERC-777 mediante
ERC-777 frente a las asignaciones de ERC-20
ERC-20 suele conceder a un gastador una asignación numérica que limita la cantidad de tokens que puede transferir del titular.ERC-777 concede a un operador autoridad sobre el saldo de un titular hasta que se revoque esa autoridad.El modelo de operador proporciona un rol con nombre más claro y admite acciones estandarizadas de envío y quema.El modelo de asignación puede establecer un límite más acotado, aunque a veces los usuarios aprueban cantidades muy superiores a las necesarias.Ambos sistemas pueden ocasionar pérdidas si los usuarios autorizan contratos maliciosos o comprometidos.Las wallets deben mostrar si una acción crea una asignación fija, una asignación ilimitada o una autorización de operador ERC-777.Si un token admite ambos estándares, revocar un tipo de permiso no revoca necesariamente el otro.Riesgo de reentrancia en ERC-777
El riesgo más importante de integración de ERC-777 procede de sus hooks.Un hook de destinatario ejecuta código de contrato externo durante la transferencia del token.Ese código externo puede volver a llamar al protocolo emisor antes de que termine la función original del protocolo.Este comportamiento se denomina reentrancia.Un protocolo vulnerable puede calcular un saldo, enviar tokens ERC-777, recibir una devolución de llamada y permitir que esta repita una acción utilizando una contabilidad interna desactualizada.El problema puede aparecer incluso si el protocolo llama a una función de estilo ERC-20, ya que un token ERC-777 compatible con ambos estándares puede seguir ejecutando los hooks registrados.Los desarrolladores nunca deben dar por sentado que una transferencia de tokens fungibles está libre de devoluciones de llamada solo porque el nombre de la función se parezca al de una transferencia ERC-20 normal.Cómo reducir el riesgo de reentrancia
Siempre que el orden previsto de la lógica lo permita, un protocolo debe actualizar su propia contabilidad crítica antes de realizar una llamada externa al token.Debe emplear una protección adecuada contra la reentrancia en los puntos de entrada sensibles.Las funciones relacionadas deben revisarse conjuntamente, ya que impedir la reentrada en una función puede dejar otra expuesta a una explotación.El protocolo debe validar el contrato del token en lugar de aceptar activos arbitrarios cuyo comportamiento de devolución de llamada se desconoce.Las pruebas deben incluir un hook de emisor malicioso, un hook de destinatario malicioso, un movimiento de tokens anidado, una devolución de llamada revertida y una reentrada entre funciones.Los desarrolladores también deben revisar las rutas de acuñación y quema, ya que los hooks ERC-777 no se limitan a los envíos ordinarios.Una auditoría puede reducir el riesgo, pero no garantiza que todas las interacciones con las devoluciones de llamada sean seguras.Protección del receptor y sus límites
Las comprobaciones de receptores de ERC-777 pretenden reducir el riesgo de que los tokens queden bloqueados permanentemente en contratos que no pueden procesarlos.Un contrato receptor de tokens mediante
Ventajas de ERC-777
ERC-777 puede notificar a los contratos cuando reciben tokens fungibles.Puede combinar en una misma transacción la transferencia y el procesamiento del destinatario.Permite a emisores y destinatarios rechazar movimientos mediante hooks programables.Admite datos adjuntos que las aplicaciones pueden utilizar para interpretar un pago o una acción.Su modelo de operador proporciona un control delegado estandarizado y una revocación explícita.Los envíos nativos de ERC-777 reducen las transferencias accidentales a contratos que no registran compatibilidad con la recepción de tokens.La compatibilidad con versiones anteriores puede permitir que un token funcione con la infraestructura ERC-20 y, al mismo tiempo, ofrezca un comportamiento más avanzado a las aplicaciones compatibles con ERC-777.Limitaciones de ERC-777
Los hooks dificultan que los contratos inteligentes gestionen de forma segura los movimientos de tokens.La consulta a ERC-1820 añade una dependencia externa y más complejidad de integración.La autoridad de los operadores puede ser más amplia de lo que esperan los usuarios.Los operadores por defecto plantean una cuestión importante de confianza y permisos.La compatibilidad simultánea con ERC-20 genera comportamientos distintos en función de la interfaz de transferencia utilizada.Las aplicaciones pueden contabilizar dos veces las transferencias si procesan incorrectamente los eventos ERC-777 y ERC-20.Muchas herramientas y aplicaciones de desarrollo actuales se centran principalmente en ERC-20, lo que reduce las ventajas prácticas de implementar ERC-777.La eliminación de una implementación mantenida de ERC-777 de una biblioteca de contratos ampliamente utilizada aumenta el trabajo necesario para crear y mantener de forma segura un nuevo despliegue.Por qué ERC-777 tuvo una adopción limitada
Cuando se introdujo ERC-777, ERC-20 ya contaba con una amplia compatibilidad en wallets, aplicaciones, herramientas de análisis y sistemas de contratos inteligentes.Para sustituir ese efecto de red hacían falta ventajas suficientes que justificasen la nueva lógica de registro y devolución de llamadas.Muchos protocolos se habían creado en torno al comportamiento predecible de transferencias y asignaciones de ERC-20.Los hooks de ERC-777 introdujeron llamadas externas inesperadas en operaciones que algunos integradores consideraban simples actualizaciones de saldo.La sección de motivación de ERC-2612 señala que ERC-777 añadió una funcionalidad considerable que podía generar comportamientos inesperados en los contratos más extendidos.
Los desarrolladores optaron cada vez más por abordar problemas concretos de usabilidad mediante extensiones más limitadas de ERC-20, en lugar de adoptar un ciclo de transferencia completamente distinto.Por tanto, ERC-777 sigue teniendo importancia técnica, pero no es la opción predeterminada para la mayoría de los nuevos proyectos de tokens fungibles en Ethereum.¿Deberían los desarrolladores crear un nuevo token ERC-777?
El primer paso es determinar qué función de ERC-777 es esencial para el token propuesto.Si el objetivo principal son las aprobaciones firmadas, una extensión más limitada de ERC-20 puede ofrecer esa función sin introducir hooks de transferencia universales.Si se necesitan devoluciones de llamada del destinatario, el desarrollador debe valorar si un contrato de aplicación específico puede ofrecer un comportamiento más seguro y explícito.Una nueva implementación de ERC-777 exige revisar cuidadosamente la especificación completa, el registro ERC-1820, los hooks, los operadores, los eventos, la acuñación, la quema y la compatibilidad con ERC-20.No es seguro reutilizar una implementación antigua sin mantenimiento sin revisar los cambios del compilador y los supuestos de seguridad conocidos.Antes de controlar activos valiosos, el contrato debe someterse a pruebas unitarias, pruebas fuzz, pruebas de invariantes, pruebas de integración y una revisión de seguridad independiente exhaustivas.Los desarrolladores también deben confirmar que las wallets, los sistemas de custodia, los puentes y las aplicaciones descentralizadas previstas admiten el comportamiento de devolución de llamada del token.Cómo pueden evaluar los usuarios un token ERC-777
El primer paso es verificar la dirección del contrato del token mediante una fuente autorizada.El segundo es confirmar si el contrato solo admite ERC-777 o si también expone funciones ERC-20.El tercero es inspeccionar los operadores por defecto y determinar qué autoridad tienen.El cuarto es revisar los permisos de acuñación, quema, pausa, congelación, actualización y administración.El quinto es averiguar si el contrato utiliza un proxy cuya lógica pueda cambiar después de la compra.El sexto es comprobar las auditorías, la verificación del código fuente, la cobertura de las pruebas y el historial de incidentes.El séptimo es revisar las autorizaciones de operadores y revocar los permisos que ya no sean necesarios.El octavo es verificar que la aplicación receptora admita explícitamente ERC-777 y sus hooks.El noveno es probar una transacción pequeña antes de transferir una cantidad significativa.El décimo es recordar que cumplir una interfaz de token no demuestra su valor financiero, solvencia ni seguridad como inversión.Ejemplo de un pago con ERC-777
Supongamos que un usuario quiere pagar una suscripción on-chain con un token ERC-777.El contrato de suscripción registra mediante el registro ERC-1820 una implementación de
El usuario llama a
A continuación, llama al hook
Errores habituales con ERC-777
Un error habitual es suponer que ERC-777 es simplemente un sustituto más reciente de ERC-20.Otro es considerar que una transferencia de tokens no activa devoluciones de llamada.Un tercer error es aceptar llamadas a
Un sexto error es procesar los eventos
Preguntas frecuentes
¿Qué significa ERC-777?
ERC-777 es un estándar Final de Ethereum para tokens fungibles que define hooks, operadores, campos de datos, envíos y quemas de tokens.¿ERC-777 es fungible o no fungible?
ERC-777 es un estándar de tokens fungibles cuyas unidades son intercambiables entre sí dentro de un mismo token.¿Sigue siendo válido ERC-777?
Sí. La propuesta oficial sigue en estado Final, aunque la adopción es limitada y una importante biblioteca de contratos eliminó su implementación de ERC-777.¿ERC-777 es lo mismo que ERC-20?
No. ERC-777 añade hooks, operadores, datos adjuntos y comprobaciones de receptores, aunque un token puede admitir ambos estándares.¿Cuál es la principal función de ERC-777?
Su función más conocida es notificar a los contratos registrados del emisor y del destinatario durante los movimientos de tokens.¿Qué es tokensReceived?
¿Qué es tokensToSend?
¿Qué es un operador ERC-777?
Un operador es una dirección autorizada para enviar o quemar tokens en nombre de un titular.¿Puede un operador ERC-777 mover todos los tokens de un usuario?
La autorización normal de un operador no es una asignación numérica, por lo que un operador autorizado puede tener un control amplio hasta que el titular lo revoque.¿Qué es un operador por defecto?
Un operador por defecto es una dirección autorizada para todos los titulares desde la creación del token, aunque cada titular debe poder revocarla personalmente.¿Por qué ERC-777 utiliza ERC-1820?
ERC-1820 permite al token detectar qué contratos implementan hooks de emisor y destinatario e interfaces de token compatibles.¿Se pueden enviar tokens ERC-777 a un contrato inteligente?
Sí, pero un envío nativo de ERC-777 debe revertirse si el contrato receptor no ha registrado el hook de destinatario requerido.¿Pueden quedar bloqueados los tokens ERC-777 en un contrato?
Las comprobaciones de receptores reducen este riesgo en los envíos nativos, pero las transferencias compatibles con ERC-20 y una lógica defectuosa del destinatario todavía pueden provocar saldos inaccesibles.¿ERC-777 tiene decimales?
El estándar utiliza una unidad de visualización con 18 decimales y, si se implementa la función opcional
¿Qué es la granularidad de ERC-777?
La granularidad es la menor cantidad interna que se puede acuñar, enviar o quemar.¿Por qué ERC-777 puede provocar reentrancia?
Sus hooks ejecutan código de contratos externos durante las operaciones con tokens, lo que permite a una implementación del emisor o del destinatario llamar a otras funciones antes de que finalice la llamada original.¿Son inseguros todos los tokens ERC-777?
No, pero todas las integraciones deben gestionar deliberadamente las devoluciones de llamada, los permisos de operadores, las consultas a ERC-1820 y la lógica específica de cada contrato de token.¿Por qué se eliminó la implementación de ERC-777 de OpenZeppelin Contracts?
La implementación tenía una adopción limitada y su complejo comportamiento de hooks dificultaba mantenerla de forma segura como componente de uso general.¿Puede seguir funcionando un token ERC-777 existente?
Sí. Los contratos desplegados continúan funcionando conforme a su código, salvo que cambie su propio mecanismo de actualización o administración.¿Debería utilizarse ERC-777 para un token nuevo?
La decisión depende de si los hooks y operadores aportan ventajas esenciales que justifiquen la mayor complejidad de seguridad, integración y mantenimiento.Conclusión
ERC-777 es un estándar Final de Ethereum para tokens fungibles, diseñado para mejorar las interacciones con tokens mediante hooks, operadores, datos de transacción y comprobaciones de contratos receptores.Su función
Los hooks
También te puede interesar
WhatsMiner M30S++
Dominios Web3
Proyectos Web3
POPULAR
Criptomonedas de moda que están acaparando la atención del mercado
Volumen TOP
Las criptomonedas con mayor volumen de trading
Recién Añadidos
Criptomonedas recientemente listadas y disponibles para operar

