Cargando precios…

Cómo revocar aprobaciones de tokens correctamente

Las aprobaciones infinitas antiguas pueden sobrevivir a la dapp que las solicitó. Aprende una rutina segura para limpiarlas y qué riesgo de firma no elimina la revocación.

Cómo revocar aprobaciones de tokens correctamente

¿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.

Preguntas frecuentes

¿Es seguro revocar aprobaciones de tokens?
Sí. Al revocar, envías una transacción on chain que vuelve a poner a cero tu permiso para un spender concreto, y no se mueven fondos durante el proceso. Solo pagas gas. El único riesgo es interactuar con un sitio falso de Revoke.cash o Etherscan, por eso conviene guardar las URL reales en favoritos y no seguir nunca enlaces de anuncios de búsqueda ni de mensajes directos. Esto es información general, no asesoramiento financiero.
¿Cómo funciona realmente revocar una aprobación?
Tu wallet envía una transacción al contrato del token llamando a la función estándar ERC20 approve con la dirección del spender y un permiso de cero. Una vez minada, el permiso anterior se sobrescribe y el spender ya no puede retirar ese token de tu wallet. En tokens como USDT, que no permiten cambios directos entre valores distintos de cero, primero debes poner el permiso a cero, esperar a que la transacción se mine y después aprobar una nueva cantidad.
¿Debo revocar todas mis aprobaciones de una vez?
Revocarlo todo puede ser un buen punto de partida, pero no es necesario si usas activamente un pequeño grupo de protocolos de confianza. Un enfoque práctico es revocar todo lo que no reconozcas o ya no uses, mantener aprobaciones infinitas solo para las dapps que utilizas con regularidad y cambiar el resto a importes exactos. La respuesta adecuada depende de cómo uses DeFi, y esto no es asesoramiento financiero.
¿Por qué revocar no elimina las firmas permit de phishing?
Las firmas Permit y Permit2 son mensajes off chain que crean un permiso on chain solo cuando el spender las envía. Hasta que se envían, son invisibles para Revoke.cash y Etherscan, y revocar tus aprobaciones on chain existentes no las invalida. Las defensas están a nivel de wallet, incluido el uso de herramientas de aviso sobre firmas, leer con cuidado lo que firmas y tratar cualquier solicitud de permit inesperada como un intento de phishing.
Tokens relacionados
$ETH