Revocar aprobaciones de tokens desde SSP

·7 min de lectura·Por SSP Editorial Team
Ilustración de la revocación de aprobaciones de tokens ERC-20 desde el wallet SSP, con un allowance puesto a cero y un SSP Key co-firmando la transacción.

Revocar aprobaciones de tokens desde SSP

Cada vez que confirmas un swap, un depósito o un listado de NFT en una cadena EVM, le concedes al dApp permiso para mover un token ERC-20 específico en tu nombre. Esos permisos —llamados aprobaciones o allowances— permanecen on-chain después de que la transacción se liquida. Meses después, el contrato en el que confiaste en marzo podría seguir teniendo permiso para vaciar ese token en junio. La solución es sencilla: revoca las aprobaciones que ya no necesitas. Esta guía te muestra cómo hacerlo desde SSP, el wallet auto-custodial 2-de-2 en el que cada transacción (incluidas las revocaciones) la co-firma tu SSP Key.

Si el concepto te resulta nuevo, lee primero Aprobaciones de tokens: los permisos que sigues concediendo. Allí se explica por qué existen las aprobaciones y por qué los allowances ilimitados son la superficie de ataque por defecto en DeFi. Este artículo es el complemento de limpieza.

Un repaso rápido

Cuando firmas una llamada approve(spender, amount), el contrato del token registra que spender (normalmente un contrato de router, vault o marketplace) tiene permiso para transferir hasta amount de ese token desde tu dirección. Muchos dApps solicitan 2^256 - 1 —en la práctica, ilimitado— para ahorrarte gas en interacciones futuras. Esa comodidad es también el riesgo: si el contrato spender se ve comprometido más adelante, o si dejas de usar el dApp pero el allowance persiste, un atacante puede vaciar todo el saldo cuando quiera.

La revocación revierte esa concesión. No deshace transferencias pasadas ni "borra" nada, simplemente devuelve el allowance a cero.

Cómo funciona la revocación mecánicamente

Una revocación es solo otra transacción. Llamas a approve(spender, 0) en el mismo contrato del token, en la misma cadena en la que se concedió la aprobación original. Esa única llamada de función escribe un nuevo 0 en el mapping allowance[owner][spender] del contrato, sobrescribiendo el valor antiguo.

Algunos detalles que conviene interiorizar:

  • Una revocación por cadena por par token-spender. Si aprobaste un spender de USDC en Ethereum y el mismo spender en Polygon, necesitas dos transacciones de revocación, una en cada cadena. Los allowances no se comparten entre cadenas.
  • La revocación es una transacción independiente. Cuesta gas igual que cualquier transferencia. Planifícalo: ten activo nativo de la cadena (ETH en Ethereum, MATIC en Polygon, etc.) para cubrir la comisión.
  • Puede ser más barato de lo que temes. Una revocación es una escritura sencilla, a menudo más barata que un swap. En Layer 2 como Base suele ser de céntimos.
  • SSP sigue co-firmando. Como SSP es un wallet 2-de-2, la transacción de revocación pasa por el mismo flujo que cualquier otra: tu extensión la propone, tu SSP Key la revisa y la co-firma. Tu protección se extiende al propio proceso de limpieza: ningún dispositivo aislado puede revocar de forma unilateral, y ningún dispositivo aislado puede ser engañado para aprobar algo disfrazado de revocación.

Dos caminos para revocar

Tienes dos formas igualmente válidas de revocar aprobaciones desde SSP. Elige la que se ajuste a la situación.

Camino 1: usar un explorador de bloques de confianza

Esta es la ruta manual y transparente. Útil cuando sabes con exactitud el token y el spender que quieres revocar, o cuando no quieres conectarte a una herramienta de terceros.

  1. Abre la página del contrato del token en el explorador correspondiente:
    • Ethereum: etherscan.io
    • Polygon: polygonscan.com
    • Base: basescan.org
    • BNB Smart Chain: bscscan.com
    • Avalanche: snowtrace.io
  2. Ve a la pestaña Contract y después a Write Contract (o Write as Proxy si el token es un contrato proxy: la mayoría de las stablecoins importantes lo son).
  3. Busca la función approve. Los parámetros son spender (la dirección que quieres revocar) y amount (el nuevo allowance).
  4. Pon amount a 0. Pega la dirección del spender; cópiala de tu historial de transacciones, no la escribas de memoria.
  5. Conecta tu wallet. La mayoría de los exploradores soportan WalletConnect, la forma recomendada de conectar SSP. Aprueba la conexión en tu extensión.
  6. Pulsa Write. El explorador construye la transacción approve(spender, 0) y la entrega a SSP. La extensión de SSP te muestra los detalles de la llamada; tu SSP Key co-firma; la revocación se difunde.

Este camino es verboso pero no deja ninguna ambigüedad sobre lo que firmaste.

Camino 2: usar una herramienta dedicada de revocación

Para la mayoría de los usuarios esta es la opción práctica. revoke.cash es la herramienta open source más utilizada para esta tarea. Escanea tu dirección en las cadenas soportadas, lista cada allowance activo, marca los más arriesgados (cantidades ilimitadas, contratos desconocidos) y te permite revocarlos —individualmente o en lotes— a través de tu wallet conectado.

El flujo:

  1. Abre revoke.cash directamente en tu navegador. Marca el dominio real como favorito y entra solo desde ese marcador. Existen copias de phishing de herramientas de revocación precisamente porque los usuarios llegan a ellas listos para firmar transacciones.
  2. Conecta con WalletConnect, después escanea el código QR o copia la URI en SSP.
  3. Cambia el selector de cadena a la cadena que quieres auditar. revoke.cash obtendrá tus aprobaciones en esa cadena.
  4. Revisa la lista. Cada fila muestra el token, el spender, la cantidad del allowance y, normalmente, una etiqueta del dApp.
  5. Pulsa Revoke junto a lo que ya no uses. Cada revocación es una transacción approve(spender, 0) independiente, co-firmada por SSP.

Un flujo práctico de auditoría

Una o dos veces al año, reserva 20 minutos y sigue estos pasos:

  1. Conecta SSP a revoke.cash mediante WalletConnect.
  2. Revisa tus aprobaciones activas en cada cadena que hayas usado. Empieza por Ethereum —históricamente el grafo de aprobaciones más denso— y continúa con Polygon, Base, BNB Smart Chain y Avalanche.
  3. Empieza por lo más arriesgado. Ordena o repasa la lista buscando allowances ilimitados y nombres de dApp desconocidos. Un protocolo que usaste una vez en 2024 y no volviste a tocar es candidato perfecto. También cualquier contrato que no puedas identificar.
  4. Revoca. Confirma la transacción en tu extensión de SSP; el SSP Key te pide co-firmar; la revocación se difunde.
  5. Co-firma en el SSP Key. Este es el momento de verificar el destino. El SSP Key muestra el contrato al que estás llamando y la función: confirma que ambos coinciden con lo que pretendías.
  6. Repite por cada cadena. Los allowances son por cadena. No supongas que revocar en Ethereum limpia Polygon.

No necesitas dejarlo todo a cero. El objetivo es mantener los allowances en los contratos que usas activamente y poner el resto a cero.

Precauciones

  • Higiene de dominios. Usa solo el dominio oficial revoke.cash. Los clones de phishing se centran en este flujo precisamente porque el usuario ya está en modo de firmar transacciones. Márcalo como favorito y verifica la barra de URL antes de conectar.
  • Realidad por cadena. Revocar una aprobación de USDC en Ethereum no toca la aprobación de USDC en Polygon, aunque el token "parezca el mismo" en tu portfolio. Recorre cada cadena explícitamente.
  • Presupuesto de gas. La revocación cuesta gas. En Ethereum, un acumulado de revocaciones puede sumar; hazlas cuando el gas esté tranquilo. En Layer 2 el coste es insignificante.
  • Verifica siempre al spender. Antes de firmar cualquier transacción de "revocación", confirma que la dirección del spender en la llamada coincide con el contrato que querías revocar. Un sitio malicioso podría presentar una UI de revocación falsa que en realidad esté emitiendo una nueva aprobación a un atacante. Leer el nombre de la función (approve) y la cantidad (0) en la pantalla del SSP Key es tu última línea de defensa.
  • Los permits son distintos. Algunos tokens (USDC, variantes de DAI) soportan permit: firmas off-chain que actúan como aprobaciones. revoke.cash mostrará las concesiones basadas en permit que conozca; trata cualquier cosa que no reconozcas como tratarías un allowance on-chain.

La ventaja del 2-de-2 en la limpieza

Este es el punto que suele pasarse por alto: la revocación en SSP no es un solo clic en un solo dispositivo. Tu extensión redacta la revocación, pero no puede difundirla sola. Tu SSP Key tiene que co-firmar, y ese paso de co-firma es donde inspeccionas qué se va a enviar realmente. Si tu extensión se viera comprometida y tratara de enviar una "revocación" maliciosa que en realidad fuera una nueva aprobación, el SSP Key mostraría la función y la cantidad reales en su pantalla. Dos dispositivos, dos oportunidades para detectar un problema.

La higiene rutinaria de aprobaciones es el hábito de DeFi con mayor retorno y, sin embargo, el que más usuarios saltan. Pon un recordatorio en el calendario, haz la auditoría, duerme mejor. Y sigue leyendo la serie: empieza por Ethereum en SSP si quieres aterrizar los detalles específicos de la cadena, o vuelve a Aprobaciones de tokens: los permisos que sigues concediendo para recordar por qué esto importa.

Comparte este artículo

Artículos relacionados