« Back to Glossary Index

ERC-20 Allowance (Aprobación de Tokens ERC-20)

⚡ Definición Rápida

El allowance (aprobación) en ERC-20 es un mecanismo que permite que una cuenta (owner) autorice a otra (spender) a gastar una cantidad específica de sus tokens en su nombre. Funciona mediante dos funciones principales: approve() para establecer el permiso y allowance() para consultarlo. El contrato spender (por ejemplo, un exchange descentralizado, un protocolo DeFi o un contrato inteligente) utiliza luego transferFrom() para mover los tokens aprobados. Este sistema es la base de la interoperabilidad DeFi, pero también introduce riesgos de seguridad significativos, especialmente cuando se conceden permisos ilimitados o se firman autorizaciones maliciosas.

Términos relacionados: erc-20ethereumdefipermit eip-2612smart contract


❓¿Qué es el Allowance en ERC-20 y por qué es fundamental en DeFi?

Imagina que quieres que un amigo retire dinero de tu cuenta bancaria para pagar un servicio.

No le das la tarjeta y la contraseña (tu clave privada), sino que llamas al banco, indicas el nombre de tu amigo y le das una autorización para retirar una cantidad concreta.

El allowance de ERC-20 es exactamente esa autorización bancaria. Es un permiso que otorgas a un contrato inteligente (como un DEX o un protocolo DeFi) para que mueva una parte de tus tokens.

Este mecanismo es esencial porque los contratos inteligentes no pueden acceder directamente a tus tokens sin tu autorización previa. Cada vez que haces un swap en Uniswap, depositas fondos en Aave o apuestas tokens en un protocolo de staking, antes has tenido que conceder un allowance a ese protocolo.

📖 Definición Técnica

El estándar ERC-20 define un sistema de permisos basado en un mapping de allowances. El token almacena un registro de cuántos tokens ha autorizado cada owner a cada spender.

El mapping `allowance[owner][spender]` devuelve la cantidad aprobada. La función `approve(spender, amount)` permite al owner establecer este valor, emitiendo un evento `Approval`. Si el spender es un contrato inteligente, este puede posteriormente llamar a `transferFrom(from, to, amount)`, que verifica que el msg.sender tenga suficiente allowance y reduce el valor del mapping en consecuencia. Además, el estándar ERC-20 también especifica funciones auxiliares como `increaseAllowance` y `decreaseAllowance`, que modifican la allowance de forma incremental y ayudan a mitigar ciertos riesgos de front-running.


⚙️ Cómo funciona: El Triángulo de la Autorización

El flujo de las aprobaciones ERC-20 se compone de tres actores bien diferenciados.

ActorFunción
Owner (Propietario)Cuenta que posee los tokens y concede el permiso. Llama a `approve(spender, amount)`.
Spender (Gastador)Cuenta o contrato que recibe la autorización. Ejecuta `transferFrom(owner, to, amount)`.
Allowance (Permiso)Cantidad registrada en el mapping `allowance[owner][spender]`. Inicialmente cero. Se actualiza con `approve` o `transferFrom`.

Este modelo de tres capas permite transacciones seguras y delegadas sin exponer la clave privada del usuario, y es la base de la interoperabilidad entre aplicaciones descentralizadas y tokens en el ecosistema DeFi.


⚠️ Riesgos de seguridad del Allowance

Aunque es fundamental, el sistema de allowances es también uno de los vectores de ataque más explotados en el ecosistema.

🔓 Aprobación Ilimitada (Unlimited Allowance)

La mayoría de las dApps solicitan por defecto un allowance infinito (2^256-1) para ahorrar gas, ya que no es necesario actualizar el permiso en futuras interacciones. Sin embargo, esto es extremadamente peligroso. Si el contrato aprobado es hackeado, se vuelve malicioso o resulta ser fraudulento, el atacante puede drenar todos los tokens de ese tipo de tu wallet sin necesidad de que interactúes nuevamente con el protocolo.

Esta puerta abierta de par en par a tu wallet es la causa principal de la mayoría de los robos en DeFi a través de ataques a contratos. Las wallets modernas te permiten editar manualmente los límites para fijar una cantidad concreta en lugar de un permiso abierto. Antes de firmar una transacción de `approve`, es fundamental revisar la cantidad solicitada y, si ves un monto altísimo o el símbolo `∞`, actuar con precaución.

📝 Ataques de Firma (Phishing de Permisos)

Este es uno de los tipos de estafa más comunes y devastadores hoy en día. Ya no basta con robar tu clave privada; los atacantes te engañan para que firmes una transacción de `approve` (o su variante sin gas `permit`) en su propio contrato fraudulento.

Al firmar, les concedes a ellos el permiso total sobre tus tokens. Una vez que lo hacen, pueden usar `transferFrom` para vaciar tu wallet inmediatamente o esperar a que deposites más fondos para robarlos más tarde. La mayoría de los robos masivos de tokens ERC-20 en la actualidad se producen mediante este tipo de ataques de phishing de firmas.

🔄 Front-running y Race Conditions (Aprobación-Y-Transferencia)

Un problema clásico del mecanismo `approve` es su vulnerabilidad a ataques de front-running cuando se intenta cambiar un allowance no nulo. Si un usuario cambia el allowance de `M` a `N`, un atacante puede observar la transacción de `approve` en el mempool y ejecutar un `transferFrom` para transferir los `M` tokens restantes antes de que se actualice el allowance a `N`. Para mitigar este problema, se recomienda utilizar `increaseAllowance` y `decreaseAllowance` o establecer siempre el allowance a cero antes de modificarlo.

⚙️ Problemas de Compatibilidad con Tokens No Estándar

Algunos tokens ERC-20 (como USDT) no siguen estrictamente el estándar. Por ejemplo, pueden rechazar cambiar un allowance de un valor no nulo directamente a otro, exigiendo que se llame primero a `approve(spender, 0)`. Esto puede provocar fallos en cascada en los protocolos DeFi.


🛡️ Buenas Prácticas para Desarrolladores

  • Prefiere `increaseAllowance` y `decreaseAllowance`: En lugar de usar `approve` directamente para modificar allowances, utiliza estas funciones para actualizar incrementalmente el permiso. Esto mitiga los ataques de front-running que intentan aprovechar el cambio de un valor a otro.
  • Audita tus contratos periódicamente: Permite auditorías externas para garantizar que no haya vulnerabilidades en la gestión de allowances, malas prácticas, o dependencias de tokens con comportamientos no estándar.
  • Sé consciente de las transferencias parciales: Puede que un spender no gaste todo el allowance. El contrato debe manejar correctamente los casos en los que el saldo restante no sea cero para evitar bloqueos en flujos posteriores.
  • Utiliza el patrón Pull over Push: Permite a los usuarios retirar sus fondos ellos mismos en lugar de enviarlos automáticamente, especialmente en flujos de autorización complejos, para evitar exceder los límites de gas o tener que depender de allowances inesperados.

🧠 Guía práctica para usuarios: Cómo gestionar tus allowances

1. Revisa periódicamente tus allowances activos

Puedes usar herramientas como Revoke.cash, el gestor de permisos de Etherscan, o el panel de gestión de permisos de tu propia wallet (como MetaMask o Rabby). Conecta tu wallet y la herramienta te mostrará todos los contratos a los que has concedido permisos de gasto.

2. Revoca los permisos que no uses

Si ves un permiso activo para un protocolo que ya no utilizas, o si el permiso es de tipo «Unlimited» (∞), revócalo. Para revocar un permiso, simplemente realiza una transacción on-chain que establezca el `allowance` de ese `spender` a cero. Algunas herramientas de revocación te permiten hacerlo con un solo clic.

3. Establece límites de gasto, no permisos ilimitados

Muchas wallets te permiten editar manualmente la cantidad antes de firmar la transacción de `approve`. Si solo vas a hacer un swap de 100 USDC, aprueba exactamente esa cantidad (o un poco más por el slippage) en lugar de dar un permiso ilimitado. Así, si el contrato es hackeado, el atacante solo podrá robarte 100 USDC.

4. Verifica la dirección del contrato y la URL

Asegúrate siempre de que la URL es la oficial del protocolo y de que la dirección del contrato coincide con la documentación oficial. Cuidado con los sitios de phishing que te piden firmar `approve` para contratos fraudulentos.


💡 Alternativas modernas al allowance tradicional

Permit (EIP-2612)

Permit es una extensión del estándar ERC-20 que permite a los usuarios autorizar el gasto de tokens mediante una firma off-chain, eliminando la necesidad de una transacción `approve` on-chain. El usuario firma un mensaje EIP-712 con los parámetros de autorización, y un tercero (relayer) puede enviar la firma a la cadena llamando a `permit()`.

Esto reduce el coste de gas y simplifica la experiencia de usuario al reducir dos transacciones a una. Sin embargo, también abre la puerta a ataques de phishing donde los usuarios firman mensajes `permit` sin saberlo. La seguridad de este método depende de la confianza en el front-end de la aplicación.

Permit2 (Uniswap)

Permit2 es un contrato universal desarrollado por Uniswap que extiende la funcionalidad de `permit` a cualquier token ERC-20, incluso aquellos que no implementan EIP-2612 de forma nativa. Los usuarios aprueban una sola vez al contrato Permit2, y luego pueden firmar mensajes off-chain para autorizar a diferentes protocolos el gasto de cantidades específicas.

Permit2 está integrado en UniswapX, Opensea y muchos otros protocolos, mejorando la experiencia de usuario y añadiendo la capacidad de revocar permisos de forma más granular, e incluso de establecer permisos temporales.


🔮 El futuro de las autorizaciones en Ethereum

  • Permisos con expiración automática (EIP-7674): Aprobaciones que revocan automáticamente después de un período fijo, reduciendo el riesgo de permisos olvidados.
  • Permisos revocables por el spender: Extensiones que permiten al spender reducir o revocar su propio allowance, gestionando la exposición a tokens de forma más dinámica.
  • Integración con Account Abstraction (ERC-4337): En las próximas wallets inteligentes, las userOps podrán delegar el pago del gas y las autorizaciones podrán ejecutarse de forma más granular y segura sin aprobaciones masivas.
  • Permisos temporales y ligados a sesiones: Permisos que expiran tras un tiempo o tras un número de transacciones, especialmente útil para interacciones de aplicaciones diarias que requieren aprobaciones recurrentes pero controladas.
  • Recursos externos para profundizar: Consulta la documentación oficial de ERC-20 (EIP-20), la guía de OpenZeppelin sobre ERC-20, las herramientas de revocación como Revoke.cash, y el estándar Permit2 en GitHub.

🎯 Conclusión

El allowance es el sistema de autorización que permite la magia del ecosistema DeFi: contratos inteligentes que mueven tus tokens por ti. Sin él, los exchanges descentralizados, los préstamos flash y la agricultura de rendimiento no existirían.

Sin embargo, este poder conlleva una enorme responsabilidad. Los permisos ilimitados y las estafas de phishing de firmas son la causa principal de pérdida de fondos en el ecosistema.

La solución no es rechazar el sistema, sino comprenderlo y gestionarlo activamente. Utiliza las herramientas de revocación, revisa tus permisos periódicamente y desconfía de sitios que te piden firmar aprobaciones.

Si eres desarrollador, debes priorizar el uso de `increaseAllowance` y limitar la exposición del usuario. Los nuevos estándares como Permit y Permit2 mejoran la experiencia de usuario, pero no eliminan la necesidad de vigilancia activa sobre la seguridad de las autorizaciones.

Si quieres entender los fundamentos de Ethereum y DeFi, te recomendamos comenzar con nuestra guía para principiantes.

❓ Preguntas Frecuentes sobre ERC-20 Allowance


📚 ¿Quieres profundizar?

¿Qué es Blockchain?

🔗 ¿Qué es DeFi?

📝 Permit (EIP-2612)

⚠️ 10 Estafas Crypto


🚀 ¿Empezando en Crypto?

Lee nuestra guía completa gratuita para principiantes.


📋 ¿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. Los allowances ERC-20 son un componente fundamental de DeFi pero conllevan riesgos, especialmente los permisos ilimitados y los ataques de phishing. Siempre investiga por tu cuenta (DYOR) y nunca firmes aprobaciones en sitios que no sean de confianza.

📅 Actualizado: Mayo 2026
📖 Categoría: Wallets y Custodia / Seguridad y Claves

« Volver al Glosario
Scroll al inicio