ERC-777

⚡ Definición Rápida
ERC-777 es un estándar de tokens fungibles para Ethereum que mejora el ERC-20 mediante ‘hooks’ (ganchos) que permiten a contratos y wallets reaccionar automáticamente a las transferencias, un sistema de operadores de confianza para aprobaciones flexibles y una representación más intuitiva de los valores. A pesar de ser retrocompatible con ERC-20, su adopción se vio severamente limitada tras el descubrimiento de una vulnerabilidad de reentrada crítica que fue explotada en el ataque a imBTC en 2020, lo que lo convierte en un caso de estudio sobre los riesgos de seguridad en estándares avanzados.
Términos relacionados: ERC-20 • ERC-721 • ERC-1155 • Hooks • Token Standard
❓ ¿Qué es el ERC-777 y por qué intentó mejorar el estándar más exitoso de Ethereum?
El ERC-777 es un estándar de tokens fungibles propuesto para la blockchain Ethereum con el objetivo de ser una evolución del omnipresente ERC-20. Su diseño introdujo características avanzadas como «hooks» (ganchos) que permiten a los contratos y wallets reaccionar a las transferencias, un sistema de «operadores de confianza» para aprobaciones granulares y una representación más intuitiva de los valores, eliminando la confusión entre `decimals` y simplificando el proceso de aprobación en muchos casos.
El ERC-20, aunque revolucionario, tiene fallas conocidas que generan problemas de usabilidad y seguridad. El más famoso es el problema de la doble aprobación: si apruebas a un contrato para gastar 100 tokens y luego quieres cambiar esa aprobación a 50, primero debes ponerla a cero (por seguridad contra ataques de reentrada), lo que es contra-intuitivo y ha causado pérdidas de fondos. Además, los tokens ERC-20 son «tontos»: cuando llegan a una dirección, el contrato receptor no puede ejecutar automáticamente una acción.
El ERC-777 se diseñó para ser el sucesor natural. Imagina enviar tokens a un contrato de préstamo y que estos se depositen automáticamente, o que tu wallet pueda rechazar tokens de un remitente no deseado. El ERC-777 prometía esta inteligencia nativa, manteniendo la compatibilidad con todas las wallets y contratos que ya entendían ERC-20. Sin embargo, su lanzamiento se vio empañado por la revelación de una vulnerabilidad crítica en su diseño que fue explotada en el famoso ataque al contrato de imBTC en 2020, lo que frenó severamente su adopción.
📖 Definición Técnica
El ERC-777 es una especificación técnica que define un conjunto de funciones y eventos para tokens fungibles en Ethereum. Su innovación principal es la implementación de hooks: funciones `tokensToSend()` y `tokensReceived()` que se llaman automáticamente durante una transferencia, permitiendo que tanto remitentes como receptores ejecuten lógica personalizada. Además, introduce el concepto de «operadores de confianza» (trusted operators) que pueden enviar tokens en nombre del usuario sin necesidad de aprobaciones individuales. El estándar es retrocompatible con ERC-20, lo que significa que cualquier contrato o wallet que entienda ERC-20 puede interactuar con un token ERC-777 sin modificaciones.
🏛️ Comparativa: ERC-777 vs. ERC-20 vs. ERC-1155
Para entender el lugar del ERC-777 en el ecosistema Ethereum, es útil compararlo con los estándares más relevantes.
| Aspecto | ERC-20 | ERC-777 | ERC-1155 |
|---|---|---|---|
| Propósito principal | Token fungible simple | Token fungible con hooks inteligentes | Token multi-fungible (fungible y no fungible en un contrato) |
| Hooks (ganchos) | No tiene | Sí, `tokensToSend()` y `tokensReceived()` | Sí, `onERC1155Received()` y `onERC1155BatchReceived()` |
| Sistema de aprobaciones | Approve/TransferFrom por spender y monto | Operadores de confianza (más flexibles) | Approve/TransferFrom por spender y monto (similar a ERC-20) |
| Retrocompatibilidad | Estándar base | Totalmente retrocompatible con ERC-20 | No retrocompatible con ERC-20 |
| Seguridad | Baja complejidad, menor riesgo de reentrada | Alta complejidad, riesgo de reentrada (ataque imBTC) | Media complejidad, diseñado con seguridad en mente |
| Adopción | Masiva (prácticamente todos los tokens fungibles) | Muy baja (pocos proyectos, principalmente imBTC) | Alta (juegos, NFTs, DeFi) |
💰 Principales características técnicas del ERC-777
El ERC-777 introduce varias innovaciones clave que lo diferencian del ERC-20:
- Hooks de transferencia: La función `send()` del ERC-777 llama automáticamente a `tokensToSend()` en el remitente y a `tokensReceived()` en el receptor si estos están implementados. Esto permite que los contratos reaccionen a las transferencias en tiempo real, por ejemplo, para depositar automáticamente en un pool de staking o rechazar tokens no deseados.
- Operadores de confianza: En lugar del sistema de `approve`/`transferFrom`, el ERC-777 permite que los usuarios designen «operadores» que pueden enviar tokens en su nombre. Esto simplifica la lógica para dApps que necesitan manejar tokens de forma continua.
- Granularidad: Introduce el concepto de `granularity` como un número entero que define la unidad más pequeña del token, reemplazando el confuso sistema de `decimals` del ERC-20.
🏗️¿Cómo funcionan los Hooks: La magia (y el peligro) de las transferencias inteligentes
El flujo de una transferencia ERC-777 es más complejo y poderoso que el de ERC-20:
1. Inicio de la transferencia:
Un usuario (o contrato) llama a la función `send(recipient, amount, data)`.
2. Hook del Remitente (`tokensToSend`):
Antes de mover los fondos, el contrato del token ERC-777 llama a la función `tokensToSend` en la dirección del remitente (si esta la ha implementado). Esto permite al remitente ejecutar lógica, como actualizar un saldo interno o rechazar la transferencia si no cumple ciertas condiciones.
3. Transferencia real de balances:
El contrato de token actualiza los balances internos del remitente y receptor.
4. Hook del Receptor (`tokensReceived`):
Inmediatamente después, el contrato del token llama a la función `tokensReceived` en la dirección del receptor (si está implementada). Aquí es donde ocurre la magia:
– Un contrato de préstamo puede usar `tokensReceived` para depositar automáticamente los tokens y actualizar el colateral del usuario.
– Un contrato de staking puede comenzar a generar recompensas al instante.
– Una wallet inteligente puede filtrar y rechazar tokens no deseados (como tokens de spam o de estafas de phishing).
5. Finalización:
La transacción se completa. El `data` opcional puede enviar información extra al receptor.
Este flujo permite transacciones atómicas complejas que, en ERC-20, requerirían múltiples pasos y aprobaciones.
🔮 El lado oscuro: La vulnerabilidad que frenó su adopción
La misma característica que hace poderoso al ERC-777 «la capacidad de ejecutar código personalizado en medio de una transferencia» también lo hizo peligroso. El problema se relaciona con la reentrancia y la interacción con contratos que no están preparados para estos hooks.
El Ataque a imBTC (junio 2020):
imBTC era un token ERC-777 respaldado por Bitcoin en la plataforma Tokenlon. Un atacante explotó la siguiente secuencia:
1. Depositó imBTC en un pool de liquidez de Uniswap V1 (que esperaba un token ERC-20 normal).
2. Durante la transferencia `send()` del imBTC al contrato de Uniswap, se activó el hook `tokensReceived`.
3. Dentro de ese hook, el atacante llamó de nuevo (`reentered`) a la función `swap` de Uniswap para intercambiar los imBTC que aún no se habían depositado completamente.
4. Uniswap, al no esperar que su balance de tokens cambiara en medio de una operación, calculó mal el precio, permitiendo al atacante extraer más tokens de los que debería. Este ataque, una variante del clásico reentrancy attack, fue posible porque el contrato de Uniswap V1 (diseñado para ERC-20) no era consciente de los hooks del ERC-777 y no implementaba las protecciones adecuadas (el patrón checks-effects-interactions).
La lección: La retrocompatibilidad era superficial. Los contratos existentes que interactuaban con tokens de forma segura bajo ERC-20 podían volverse vulnerables cuando interactuaban con un token ERC-777, porque el modelo de seguridad subyacente (sin hooks) había cambiado.
✅❌ Ventajas vs. Desventajas: ¿Por qué no es el estándar hoy?
✅Ventajas y potencial:
- Transferencias Atómicas Complejas: Permite depósitos en un solo paso en DeFi, mejorando la UX y reduciendo costos de gas.
- Mayor Control y Seguridad para Wallets: Las wallets podrían implementar filtros para bloquear tokens maliciosos automáticamente.
- Sistema de Operadores Más Flexible: Simplifica la lógica para dApps que necesitan manejar tokens en nombre del usuario.
- Retrocompatibilidad Teórica: Un logro de ingeniería que permitía la coexistencia.
❌Desventajas y Razones de la Baja Adopción:
- Riesgo de Reentrada y Vulnerabilidades: El ataque a imBTC expuso un riesgo sistémico. Los desarrolladores ahora desconfían.
- Complejidad de Implementación: Es mucho más complejo que ERC-20, tanto para los emisores del token como para los contratos que interactúan con él.
- Falta de Soporte Nativo en Herramientas: Muchas wallets, exploradores de bloques (Etherscan) y librerías (como web3.js/ethers.js) dieron prioridad al soporte de ERC-20 y ERC-721, dejando a ERC-777 en un nicho.
- La Sombra de ERC-20: La inercia de la red es enorme. ERC-20 funciona «suficientemente bien» para la mayoría de los casos, y cambiar a un nuevo estándar conlleva riesgos.
- Advenimiento de ERC-1155 y Otros: Para casos de uso avanzados, como tokens semi-fungibles o colecciones de NFTs, el estándar ERC-1155 ganó tracción, desviando la atención del ERC-777.
💱 Legado y sucesores: ¿Qué vino después?
Aunque el ERC-777 no se adoptó masivamente, su legado es importante:
- ERC-1155 (Multi Token Standard): Aprendió de los hooks del ERC-777. Incluye un hook `onERC1155Received` que es más seguro y está diseñado desde el inicio para manejar tanto tokens fungibles como no fungibles (NFTs) en un solo contrato.
- ERC-1363 (Payable Token): Un estándar que intenta lograr un objetivo similar (transfer-and-call) pero con un enfoque más simple y seguro, evitando los hooks complejos del ERC-777.
- Mejoras a ERC-20 (ERC-2612, ERC-3009): En lugar de reemplazar ERC-20, la comunidad ha propuesto extensiones para solucionar problemas específicos, como los permisos sin gas (gasless approvals) mediante firmas EIP-712.
❓ Preguntas Frecuentes sobre ERC-777
📚 ¿Quieres profundizar en estándares de tokens?
Explora más recursos de La Cryptoguía sobre Ethereum y sus estándares:
⚡ ERC-20 – El estándar que revolucionó los tokens fungibles.
🏛️ ERC-1155 – El estándar multi-token para juegos y NFTs.
💰 ERC-721 – El estándar de los NFTs.
🔐 Smart Contract Security – Cómo protegerte de vulnerabilidades como la reentrada.
🚀 ¿Empezando en Crypto?
Si eres nuevo, empieza con nuestra guía completa para principiantes para entender los fundamentos antes de adentrarte en estándares técnicos.
📋 ¿Por qué confiar en esta definición? Cada término de la Cryptopedia sigue una metodología de verificación con fuentes primarias, whitepapers y legislación oficial. Conoce nuestro proceso →
⚠️ Disclaimer: Este artículo es informativo y educativo. No constituye asesoramiento financiero, técnico ni de seguridad. Los estándares ERC son propuestas técnicas complejas. Interactuar con tokens que implementan ERC-777 u otros estándares avanzados conlleva riesgos elevados de seguridad, incluyendo posibles vulnerabilidades de reentrada y pérdida total de fondos. Siempre verifica el estándar de un token, audita el código de los contratos con los que interactúas o utiliza protocolos auditados por firmas reconocidas. Nunca inviertas más de lo que estás dispuesto a perder y haz tu propia investigación (DYOR).
📅 Actualizado: Marzo 2026
📖 Categoría: Infraestructura Blockchain / Estándares ERC/EIP
