Revocar la aprobación de un token significa decirle a un contrato inteligente de Ethereum que ya no puede gastar tus tokens, aunque le hayas dado permiso hace meses. La mayoría de los usuarios de DeFi tienen aprobaciones "infinitas" olvidadas en contratos antiguos o ya comprometidos, y los kits de vaciado de wallets los buscan específicamente, así que revisar, revocar los arriesgados y cambiar a aprobaciones finitas es una de las victorias de seguridad más baratas en cripto.
Puntos clave
- Una aprobación ERC-20 es un mensaje firmado que permite a un contrato inteligente mover una cantidad determinada de un token específico desde tu wallet en tu nombre, e "infinita" significa sin límite hasta que la canceles.
- Los kits de vaciado de wallets ordenan las wallets según qué aprobaciones antiguas aún tienen allowance, por lo que una aprobación a un protocolo que un día fue de confianza puede convertirse en una vía de explotación activa si ese protocolo es hackeado más tarde o se re-despliega por un equipo malicioso.
- Revoke.cash y el panel de aprobación de tokens de Etherscan son las dos herramientas más fiables para auditar allowances en Ethereum y en la mayoría de cadenas EVM.
- Cambiar de aprobaciones infinitas a finitas (el comportamiento por defecto en wallets modernas como Frame, Rabby y los flujos más recientes de MetaMask) elimina la mayor parte del riesgo residual sin romper el uso normal de DeFi.
Qué es realmente una aprobación de token
Cuando intercambias un token en Uniswap, prestas ETH en Aave o haces un bridge con USDC entre cadenas, en realidad no entregas tus tokens al protocolo. Firmas un pequeño mensaje on-chain que dice: "el contrato inteligente X puede retirar hasta N del token Y de mi wallet." Ese permiso firmado se llama aprobación ERC-20 y vive on-chain para siempre, a menos que tú, o el propio contrato, lo cancele.
La razón por la que existen las aprobaciones es técnica. Los tokens ERC-20 son activos tontos estilo bearer: no tienen el concepto de "Alice le presta 100 USDC a Bob." Solo entienden balances y allowances. Para permitir que un contrato de terceros, como un router de un DEX o un pool de préstamos, mueva tus tokens por ti, hay que concederle un allowance, que se establece con dos funciones: approve e increaseAllowance.
La mayoría de los protocolos piden el valor máximo posible, el mayor entero sin signo de 256 bits (2^256 menos 1), porque así se ahorran tener que pedirte que firmes una aprobación nueva cada vez que interactúas. Desde el punto de vista de UX, las aprobaciones infinitas son cómodas. Desde el punto de vista de seguridad, crean un permiso que puede que olvides que concediste.
Por qué las aprobaciones infinitas son peligrosas
Una aprobación infinita no es "riesgo infinito" por sí misma. Es solo tan peligrosa como el contrato que tiene el allowance. Si el protocolo que aprobaste está bien auditado, probado con el tiempo y sigue operado por el mismo equipo, la aprobación es más o menos tan segura como el propio protocolo. El peligro aparece en tres situaciones concretas, y son lo bastante comunes como para tomárselas en serio.
Primero, los protocolos son hackeados. Un contrato inteligente puede explotarse mediante un bug de lógica, una manipulación del oráculo de precios o un ataque de gobernanza. Si el atacante puede llamar a transferFrom contra una lista de usuarios aprobados, una aprobación infinita convierte un bug del protocolo en un vaciado directo de tus tokens. Esto no es hipotético: varios incidentes conocidos de DeFi en los últimos años incluyeron rutas de drenaje de tokens que se aprovechaban de allowances activas.
Segundo, los proyectos se abandonan y luego alguien los re-despliega con el mismo nombre o en la misma dirección. Una vez que un equipo deja un contrato, el bytecode que permanece en esa dirección es solo código. Si un nuevo owner o mecanismo de upgrade permite que un atacante se convierta en admin, tu antigua aprobación ahora apunta a una entidad hostil.
Tercero, y este es el que más subestiman la mayoría de usuarios, los kits de vaciado de wallets filtran activamente las wallets con aprobaciones olvidadas. Cuando firmas una firma maliciosa en un sitio de phishing, el kit no roba solo el token que aparece en la página; recorre cada allowance activa que tu wallet haya concedido alguna vez y retira cada una. El daño de un solo clic de phishing escala con la superficie antigua que tengas expuesta. Menos aprobaciones abiertas significa un radio de explosión más pequeño.
Qué aprobaciones son realmente seguras de mantener
No todas las aprobaciones son una bomba de relojería, y perseguir tener cero aprobaciones es a la vez poco práctico y sin sentido. El objetivo es reducir tu superficie de ataque, no anular la capacidad de funcionamiento de tu wallet. Una regla general razonable tiene tres niveles.
Mantén las aprobaciones a contratos que uses activamente, que estén gestionados por equipos reputados, que hayan sido auditados y que no hayan sido explotados recientemente. Si sigues usando Aave o Uniswap cada semana, la aprobación que gestionan esos front-ends es parte de cómo funciona el sistema. Revocarla solo significa volver a firmar la próxima vez que hagas una transacción, lo que cuesta gas y un poco de atención.
Reduce las aprobaciones infinitas en contratos que uses raramente. Los wallets modernos como Rabby, Frame y el flujo actualizado de MetaMask establecen por defecto una asignación finita basada en el monto de la transacción. Si un contrato que tocaste una vez todavía tiene una aprobación infinita de hace dos años, déjala en cero o en una cantidad finita pequeña.
Revoca las aprobaciones de cualquier cosa que no reconozcas, de cualquier cosa que muestre un nombre que nunca hayas oído, y especialmente de cualquier cosa cuyo contrato no esté verificado en Etherscan. Los contratos no verificados con asignaciones activas son el patrón más habitual que explotan los drainer kits.
Cómo encontrar cada aprobación que ha concedido tu wallet
Hay dos herramientas que vale la pena confiar para este trabajo, y cubren casi todas las cadenas EVM en uso activo. La primera es Revoke.cash, una dApp de código abierto creada específicamente para la gestión de asignaciones. Conectas tu wallet, escanea la cadena y lista cada contrato que actualmente tiene una asignación distinta de cero sobre tus tokens, agrupados por token. Cada fila muestra el gastador (spender), la asignación actual y un enlace directo a la transacción de revocación on-chain.
La segunda es el comprobador de aprobaciones de tokens de Etherscan, disponible en Etherscan para Ethereum y en los exploradores de bloques equivalentes para cadenas como BNB Chain, Polygon, Arbitrum, Optimism y Base. Pegas la dirección de tu wallet, accedes a la pestaña de aprobaciones y ves los mismos datos con una interfaz algo más técnica. Etherscan es útil como verificación cruzada porque Revoke.cash a veces se deja asignaciones en tokens más nuevos o menos comunes.
Sea cual sea la herramienta que uses, el flujo de trabajo es el mismo. Lee cada gastador. Si no lo reconoces, márcalo para revocar. Si lo reconoces, decide si todavía lo necesitas y si quieres dejar la asignación como infinita. Ten en cuenta que revocar es una transacción de escritura: cuesta gas, así que hazlo por lotes en un momento de bajas comisiones en lugar de una por una en horas punta.
Cómo revocar aprobaciones de tokens paso a paso
Aquí tienes el flujo de trabajo práctico que siguen los usuarios experimentados de DeFi. Se asume que estás usando un wallet de autocustodia como Rabby, MetaMask, Frame o Ledger Live y que tienes una pequeña cantidad de ETH en la cadena que estás limpiando, suficiente para cubrir el gas.
Abre Revoke.cash en tu navegador. Conecta el wallet que quieres auditar. El sitio se abrirá por defecto en Ethereum mainnet; si tus aprobaciones están en otra cadena EVM como Arbitrum, Polygon o BNB Chain, cambia el selector de red en la parte superior de la página. El sitio obtendrá entonces cada token que tienes y cada asignación activa de una sola pasada.
Revisa la lista. Para cada gastador que no reconozcas, o cualquier gastador al que ya no quieras confiar una asignación permanente, haz clic en el botón de revocar que aparece junto a él. Tu wallet mostrará una solicitud de transacción que establece la asignación a cero. Confírmala y paga la comisión de gas.
Para las aprobaciones que quieras mantener pero reducir, Revoke.cash te permite establecer un valor personalizado en lugar de cero. Un patrón habitual es fijar la asignación al monto exacto necesario para la siguiente transacción, que los wallets modernos pueden rellenar automáticamente por ti. Después de que se confirmen tus transacciones de revocación, refresca la página y comprueba que la asignación ahora sea cero o el nuevo valor finito.
Repite el proceso para cualquier otra cadena en la que hayas hecho actividad DeFi significativa. Muchos usuarios se sorprenden al encontrar aprobaciones en cadenas que usaron una vez para un airdrop y se olvidaron. Cada cadena necesita su propia pasada, ya que las asignaciones no son cross-chain por defecto.
Cómo establecer aprobaciones finitas en adelante
El mejor hábito que puedes construir después de limpiar tu wallet es dejar de firmar aprobaciones infinitas desde el principio. La defensa está integrada en la mayoría de las UIs de los wallets modernos, pero tienes que fijarte en ella.
Cuando una dApp pida una asignación, mira el valor. Si el valor por defecto es el número máximo de 256 bits, tu wallet está ofreciendo la ruta infinita heredada. Si el valor por defecto es el monto exacto del swap o del depósito, tu wallet está ofreciendo una aprobación finita. Rabby y Frame tienen por defecto finita para contratos conocidos. MetaMask ha evolucionado hacia valores por defecto finitos en sus versiones más recientes, aunque los flujos más antiguos aún exponen la opción heredada.
Si un contrato exige una aprobación infinita y no ofrece ninguna opción finita, trátalo como una señal de alerta amarilla. Algunos contratos realmente necesitan una asignación permanente, como los agregadores DEX que enrutan a través de múltiples pools, pero la mayoría no. En caso de duda, aprueba el monto exacto para la transacción que estás a punto de hacer, y revoca o reduce la asignación en cuanto se complete la acción.
Otro hábito práctico es usar un wallet "caliente" separado para actividades de alto riesgo como farming de airdrops, interacciones en testnet y firmar dApps desconocidas, y un wallet "frío" separado para tenencias a largo plazo y posiciones grandes en DeFi. El wallet caliente recibe los clics de phishing; el wallet frío solo interactúa con protocolos auditados y bien conocidos. Incluso si un drainer kit vacía tu wallet caliente, tu stack principal está en un wallet con una superficie de aprobaciones mucho menor.
Cómo se ve esto cuando algo sale mal
Merece la pena ser concretos sobre cómo es un drain en la práctica, porque el miedo a que «mis aprobaciones sean explotadas» a veces se trata como algo abstracto. Imagina que firmaste una aprobación infinita de USDT para un router de un DEX pequeño hace dieciocho meses. El DEX cerró, el equipo siguió adelante y la dirección del contrato fue tomada más tarde por un desplegador distinto.
Seis meses después, visitas un sitio de aspecto familiar, haces clic en lo que crees que es una aprobación rutinaria y en realidad firmas un permit malicioso o una autorización fuera de la cadena. El kit de drain ve que tu wallet todavía tiene una asignación infinita a ese router. En una sola transacción, llama a transferFrom y retira todo tu saldo de USDT. La transacción es válida, la asignación era real y no hay vuelta atrás.
Ahora imagina la misma wallet, pero revocaste la asignación de USDT a ese router seis meses antes y la sustituiste por un cero. El kit de drain escanea tu wallet, no encuentra nada que retirar para ese token y sigue adelante. El coste de la revocación original fueron unos pocos céntimos de gas; el coste de no revocar fue todo tu saldo de USDT. La cuenta no es sutil.
Cómo seguir el riesgo de aprobaciones de forma inteligente
La higiene de aprobaciones es una de las pocas áreas de la seguridad cripto donde el usuario tiene realmente control directo, pero es fácil olvidarlo una vez que tu wallet está «funcionando». Zippfeed rastrea las noticias relacionadas con aprobaciones de tokens, incluyendo exploits de protocolos, campañas de kits de drain y actualizaciones de seguridad de wallets, con puntuación de sentimiento (bullish, neutral o bearish) y una calificación de importancia, para que puedas detectar nuevos patrones de ataque antes de que lleguen a tu bandeja de entrada en lugar de después de que lleguen a tu wallet.