Una aprobación de token ERC20 es un permiso que firmas y que permite a un contrato inteligente gastar tokens desde tu monedero. Revocar aprobaciones antiguas o infinitas es una práctica rutinaria de higiene del monedero que limita lo que una dapp comprometida puede drenar, y herramientas como Revoke.cash o el comprobador de aprobaciones de tokens de Etherscan lo convierten en una tarea de cinco minutos. Revocar solo cierra aprobaciones on chain, no firmas de permisos off chain, que son el mayor riesgo que la mayoría de los usuarios nunca ve.
Puntos clave
- Una aprobación de token es un permiso que firmas, y las aprobaciones infinitas permiten que un contrato siga gastando tus tokens hasta que las canceles.
- Revoke.cash y el comprobador de aprobaciones de tokens de Etherscan leen los mismos datos de la blockchain, así que elige por interfaz y modelo de confianza más que por funciones.
- El phishing de aprobaciones usa firmas permit y Permit2 que parecen inicios de sesión, y revocar aprobaciones ERC20 no hace nada para eliminarlas.
- Trata la limpieza como una higiene rutinaria, agrupa cuando sea posible y reserva presupuesto para gas, en lugar de esperar a entrar en pánico después de que hackeen un protocolo.
¿Qué es una aprobación de token y por qué querrías revocar una?
Cuando intercambias un token en un exchange descentralizado, prestas colateral en un mercado de préstamos o mueves activos a un producto de rendimiento, el contrato de destino normalmente no puede retirar tus tokens por sí solo. Los tokens ERC20 se diseñaron con un modelo sencillo de asignación: el contrato del token no sabe nada sobre la app que estás usando, y la app no puede mover tokens a menos que la hayas autorizado explícitamente. Así que antes de una operación o un depósito, tu monedero te pide que firmes una transacción de aprobación que dice, en la práctica, que el router de Uniswap puede gastar hasta X de mis USDC, o una cantidad ilimitada.
Esa aprobación firmada se almacena dentro del propio contrato del token, on chain, y permanece allí hasta que la cancelas. Si aprobaste un router por 100 USDC y usaste 95, los 5 restantes quedan como asignación. Si aprobaste una cantidad ilimitada, esa asignación vive para siempre hasta que la revoques, que es el problema central. Monederos como MetaMask muestran esto como 'ilimitado' en lugar del número gigantesco, en parte para ocultar lo expuesto que está el usuario.
Las aprobaciones no son malas en sí mismas. Son la forma en que funciona DeFi. El riesgo viene de tres lugares. Primero, la dapp que aprobaste es hackeada más tarde y el atacante invoca la asignación que sigue activa. Segundo, la dapp es una estafa desde el primer día y la aprobación es toda la carga útil. Tercero, usaste un protocolo hace meses, te olvidaste de él y desde entonces ese protocolo ha cambiado de manos, se ha actualizado o ha migrado. Ninguno de estos problemas es teórico: el incidente de Badger DAO de 2022 perdió aproximadamente 120 millones de dólares en parte porque se abusó de aprobaciones antiguas en el router de Badger, e innumerables pérdidas personales se remontan a aprobaciones concedidas a sitios de phishing.
Qué puede salir mal realmente: la superficie de riesgo real
La forma más clara de pensar en el riesgo de las aprobaciones es separar tres capas: el contrato gastador, el contrato del token y la capa de firmas. Cada capa tiene un radio de impacto distinto cuando falla, y la mayoría de las guías las mezclan en una sola. No son lo mismo.
El contrato gastador. Es la dapp, el router o la bóveda a la que diste permiso. Si este contrato se actualiza, se explota o simplemente sufre un rug pull mediante sus claves de administrador, cualquier asignación que apunte a él se convierte en una asignación que apunta al atacante. Con una aprobación infinita, el atacante puede drenar todos los tokens de ese tipo de tu monedero en una sola llamada, sin necesidad de más firmas.
El contrato del token. La aprobación se registra en el propio token. Revocar significa enviar una nueva transacción al token que vuelve a poner en cero tu asignación para ese gastador. Hasta que esa transacción se mine, la asignación anterior sigue activa. No hay botón de 'deshacer', solo una nueva transacción que sobrescribe la asignación anterior.
La capa de firmas. Esta es la parte que la mayoría de los usuarios pasa por alto. Los monederos y las dapps modernos usan firmas off chain (eth_sign, EIP 2612 permit, Permit2 de Uniswap) para que puedas conceder una aprobación sin pagar gas, o incluso sin enviar ninguna transacción. Esas firmas no se almacenan on chain como aprobaciones, viven en el historial del firmante. Una firma maliciosa puede dar permiso a un gastador para retirar tokens de tu monedero, y revocar tus aprobaciones on chain no hace absolutamente nada al respecto. La solución es una herramienta diferente, que tratamos más abajo.
El planteamiento honesto: revocar es necesario pero no suficiente. Cierra el goteo lento de asignaciones on chain sobrantes, pero no cierra la puerta que una firma permit abrió ayer.
Aprobaciones infinitas frente a finitas: ¿cuál es realmente más segura?
La mayoría de las wallets usan 'ilimitado' por defecto por comodidad, porque la alternativa es firmar una nueva aprobación cada vez que cambia tu saldo. Desde el punto de vista de la seguridad, una aprobación finita es estrictamente más segura, pero no es gratis.
Una aprobación infinita te cuesta una transacción la primera vez que usas una dapp, y luego cero transacciones continuas, porque la asignación es lo bastante grande como para cubrir cualquier interacción futura. La desventaja es exactamente el riesgo de cola larga descrito arriba: una dapp que usaste una vez en 2021 sigue teniendo un cheque en blanco sobre tus tokens en 2026. Una aprobación finita, en cambio, te cuesta una transacción prácticamente cada vez que depositas o haces una operación, ya que la asignación se consume y debe recargarse.
En la práctica, los usuarios prudentes encuentran un punto intermedio. Conceden aprobaciones infinitas solo a un pequeño conjunto de contratos probados en batalla con los que interactúan semanalmente, y aprobaciones finitas a todo lo demás. Revoke.cash facilita esta auditoría, porque muestra cada contrato autorizado, la asignación y el token en una sola pantalla.
Un matiz: algunos tokens implementan ERC20 de formas no estándar. USDT, por ejemplo, no permite cambios directos de aprobación desde un valor distinto de cero a otro valor distinto de cero. Primero debes establecer la asignación en cero, esperar a que esa transacción se mine y después establecer la nueva asignación. Revoke.cash lo gestiona automáticamente; si lo haces manualmente a través de Etherscan, primero debes establecer la asignación en cero.
Revoke.cash frente al comprobador de aprobaciones de tokens de Etherscan
Estas son las dos herramientas a las que llegarán primero los principiantes, y no son tanto competidoras como dos vistas sobre los mismos datos. Ambas leen tus eventos de aprobación en cadena directamente desde Ethereum, así que ninguna herramienta custodia tus fondos ni puede firmar nada por ti.
Revoke.cash es una dapp dedicada que enumera todos los tokens que has aprobado alguna vez, incluidos tokens ERC20, NFT ERC721 y ERC1155, y en cadenas más allá de Ethereum, la mayoría de las principales EVM y unas cuantas cadenas no EVM. Agrupa las asignaciones por contrato autorizado, muestra etiquetas de riesgo para protocolos conocidos y saca a la superficie asignaciones de tokens que ya no tienes, que es la exposición oculta más habitual. También enlaza a una transacción de revocación ya rellenada en tu wallet. El sitio es de código abierto y existe desde los primeros tiempos de DeFi, algo importante para la confianza.
El comprobador de aprobaciones de tokens de Etherscan está dentro del explorador de bloques Etherscan. Conectas una dirección de wallet y enumera todas las aprobaciones ERC20 vinculadas a esa dirección, con enlaces a los contratos relevantes del token y del contrato autorizado. Es más conservador y tiene menos funciones, pero hereda la confianza de marca de Etherscan y es una segunda opinión útil si un resultado de Revoke.cash parece extraño.
Ambas herramientas requieren que firmes una transacción de revocación en tu propia wallet. También puedes hacer lo mismo llamando a 'approve(spender, 0)' en el contrato del token directamente a través de la pestaña de escritura de contrato de Etherscan, pero ese camino es más fácil de hacer mal y más difícil de auditar. Para principiantes, Revoke.cash es la opción predeterminada más limpia.
La trampa de las firmas: por qué revocar no basta
Las firmas Permit (EIP 2612) y Permit2 de Uniswap se introdujeron para abaratar las aprobaciones o hacerlas sin gas. En lugar de enviar una transacción de aprobación, firmas un mensaje fuera de cadena que dice 'Autorizo al contrato autorizado X a mover hasta Y de mi token Z'. Luego ese mensaje lo envía el contrato autorizado, y el contrato del token lo verifica en cadena y establece la asignación por ti, en la misma transacción que la acción que la usa. Desde la perspectiva del usuario, la experiencia es más fluida: menos confirmaciones, sin gas separado.
La trampa es que un sitio malicioso también puede pedirte exactamente la misma firma, con una asignación mucho mayor y una caducidad mucho más lejana. La firma no hace nada hasta que el contrato autorizado la envía, pero una vez enviada es indistinguible de cualquier otra aprobación en cadena. Peor aún, algunos kits de phishing piden firmas permit que no se usan de inmediato, sino que se venden en la dark web para canjearse más tarde, cuando el usuario ya ha pasado página.
Revocar tus aprobaciones en cadena no afecta a estas firmas. La asignación creada por un permit solo existe en cadena después del envío, y una vez que existe aparece en Revoke.cash como cualquier otra aprobación, por lo que aún puedes revocarla. Pero la ventana peligrosa está antes del envío, cuando ni Etherscan ni Revoke.cash pueden verla. Esa ventana solo se cierra en la capa de la firma.
Las herramientas prácticas de defensa están a nivel de wallet: herramientas como Scam Sniffer, Pocket Universe, Blowfish y las advertencias integradas en wallets como Rabby y las versiones más recientes de MetaMask interceptan firmas sospechosas antes de que las firmes. La disciplina que debes adoptar es sencilla: nunca firmes un permit ni una aprobación fuera de cadena a menos que entiendas por completo el mensaje, el contrato autorizado y la asignación que concede. Lee las pantallas de advertencia que te muestra tu wallet. Si la dapp te pide un permit cuando solo querías ver un sitio, esa es la señal de phishing.
Una rutina de limpieza segura y repetible
El objetivo de una rutina es eliminar la decisión de '¿debería revocar esto?' en el momento, porque ahí es cuando es más probable que cometas un error. Ejecuta la rutina trimestralmente, o después de cualquier interacción con un protocolo sobre el que no estés seguro al 100 por cien.
Paso 1: Abre Revoke.cash, o el comprobador de aprobaciones de tokens de Etherscan como respaldo, y conecta la wallet que quieras auditar. Revisa la lista de contratos autorizados. Todo lo que no reconozcas, o cualquier cosa que apunte a un protocolo que ya no usas, es candidato a revocación.
Paso 2: Ordena por etiqueta de riesgo. Revoke.cash marca protocolos conocidos y contratos autorizados maliciosos conocidos. Cualquier cosa en este último grupo debe revocarse de inmediato, independientemente del tamaño de la asignación.
Paso 3: Para los contratos autorizados restantes, decide entre infinito y finito. Si el protocolo forma parte de tu rotación semanal, conserva la aprobación infinita y simplemente anótalo. Si lo usas una vez al mes o menos, establece la asignación en la cantidad exacta que pretendes usar, o ponla a cero y vuelve a aprobar más tarde.
Paso 4: Agrupa cuando puedas. Revoke.cash te permite poner en cola varias revocaciones en una sola transacción en algunas wallets, lo que reduce materialmente el gas. En Ethereum mainnet, revocar una docena de aprobaciones una por una puede costar entre 20 y 60 dólares en gas en momentos de mucha actividad, mientras que una versión agrupada cuesta una comisión base más un pequeño sobrecoste. No hay presión temporal en cadena para las revocaciones, así que puedes esperar a una ventana de gas bajo si el coste importa.
Paso 5: Después de revocar, ejecuta el comprobador una vez más para confirmar que cada asignación objetivo ahora aparece en cero. Luego audita tu historial de firmas en tu wallet, Rabby y MetaMask muestran los mensajes firmados recientes, y marca cualquier cosa que parezca desconocida. Todo lo que no puedas explicar, trátalo como comprometido y considera mover los fondos a una wallet nueva.
Cómo seguir una higiene de aprobaciones de forma inteligente
La higiene de aprobaciones no es un botón de pánico de uso puntual. Es un hábito, como rotar claves API o revisar extractos bancarios, y resulta más útil cuando es aburrido. Zippfeed muestra titulares sobre wallets y DeFi con puntuación de sentimiento (bullish, neutral o bearish) y una valoración de importancia, para que puedas detectar un exploit importante de un protocolo en cuanto se informe de él y auditar tus autorizaciones antiguas antes de que el ciclo de noticias avance.