El Approve (aprobación) de tokens es el mecanismo estándar mediante el cual los tokens ERC20 interactúan con contratos inteligentes, pero también es uno de los mayores vectores de ataque en DeFi entre 2024 y 2026. Este artículo explica en detalle el mecanismo de Approve y cómo revocarlo. Vamos directo a la conclusión: cada interacción con DeFi puede dejar un Approve residual, no revocarlos a tiempo acumula un riesgo enorme y auditar mensualmente con Revoke.cash y revocar las aprobaciones innecesarias es un hábito imprescindible para cualquier usuario de DeFi. Para la cuenta principal y la de respaldo diaria puede registrarse desde el Sitio Oficial de Binance, en Android instale la App Oficial de Binance, y los usuarios de iPhone que necesiten cambiar a un Apple ID internacional pueden consultar el Pagina de Descarga.
Uno: cómo funciona el mecanismo Approve
El doble mecanismo de los tokens ERC20:
El estándar ERC20 define dos formas de transferencia:
- transfer: el usuario transfiere directamente (usted envía USDC a otra persona)
- transferFrom: el contrato transfiere en su nombre (un contrato inteligente retira USDC de su cuenta)
transferFrom requiere un Approve previo:
Paso 1: el usuario llama a approve(spender, amount) del contrato USDC
- spender = dirección del contrato
- amount = cantidad autorizada
Paso 2: el contrato llama a transferFrom(user, recipient, amount)
- solo funciona dentro del límite de amount
Por ejemplo, al usar Uniswap:
Paso 1: el usuario hace Approve al Router de Uniswap para retirar USDC (una sola vez, por 1000 USDC)
Paso 2: el usuario inicia un swap de USDC a ETH en Uniswap
Paso 3: el Router de Uniswap llama a USDC.transferFrom para retirar los USDC
Paso 4: el Router de Uniswap envía al usuario la cantidad correspondiente de ETH
Approve es el mecanismo subyacente que conecta a DeFi con los tokens ERC20.
P: ¿Hay que volver a hacer Approve en cada interacción?
No. El Approve es persistente:
- Si el usuario aprueba 1000 USDC para Uniswap, ese límite de 1000 USDC queda vigente de forma permanente
- El usuario puede operar repetidamente en Uniswap sin volver a aprobar, mientras no supere los 1000 USDC
- El Approve solo termina cuando el usuario lo revoca activamente o se agota
Este es el origen del riesgo acumulado de Approve: si no se revoca durante mucho tiempo, se acumulan numerosas aprobaciones históricas dispersas.
Dos: los dos tipos de Approve
Aprobación limitada (Limited Approval):
- El usuario autoriza una cantidad específica (por ejemplo, 1000 USDC)
- El contrato solo puede retirar hasta 1000 USDC
- Una vez agotada, hay que volver a hacer Approve
Aprobación ilimitada (Unlimited Approval / MaxUint256):
- El usuario autoriza la cantidad 2^256-1 (prácticamente ilimitada)
- El contrato puede retirar una cantidad ilimitada
- Nunca hace falta volver a aprobar
Por qué existe la aprobación ilimitada:
- Optimización de Gas: el usuario solo necesita hacer Approve una vez (ahorra entre 50 y 200 dólares en Gas)
- Experiencia de usuario: evita tener que aprobar en cada interacción
- Configuración por defecto de las DApp: Uniswap, SushiSwap y otras usan Approve ilimitado por defecto
Riesgos de la aprobación ilimitada:
- Si el protocolo es hackeado, los tokens en la wallet del usuario pueden ser retirados sin límite
- Tras aprobar un contrato de phishing, todos los activos restantes pueden ser transferidos
- Es difícil de detectar (el usuario no suele revisarlo por iniciativa propia)
Caso real:
En diciembre de 2024, un usuario que había hecho Approve ilimitado de USDC en Uniswap en 2022 recibió en su wallet 50.000 USDC. Dos horas después, un contrato malicioso (un Router falso que imitaba a Uniswap V3) llamó a transferFrom y se llevó todo el saldo. La investigación posterior reveló que el contrato de phishing explotó una aprobación histórica olvidada del usuario.
P: ¿Conviene elegir aprobación limitada o ilimitada?
Postura de seguridad (recomendada): hacer Approve manual de la cantidad exacta en cada interacción
- Ventaja: alta seguridad, la pérdida por incidente queda acotada
- Desventaja: consume Gas en cada operación (5-30 dólares)
Postura de comodidad: aprobación ilimitada por defecto
- Ventaja: ahorra Gas y solo requiere un Approve para uso prolongado
- Desventaja: si el protocolo es hackeado, la pérdida puede ser grande
Estrategia habitual:
- Tokens de gran monto (>10.000 dólares): aprobación limitada y revocar en cuanto se termine de usar
- Tokens de monto pequeño (<10.000 dólares): aprobación ilimitada con auditoría periódica
Tres: formas comunes de ataque vía Approve
Forma 1: ataque de Approve por sitio web de phishing
Un sitio de phishing imita la interfaz real; al conectar la wallet, el usuario firma una transacción de Approve:
- En apariencia: pide "verificar la wallet" o "reclamar un airdrop"
- En realidad: aprueba USDC / USDT / WETH a favor de un contrato malicioso
- Consecuencia: el contrato malicioso usa transferFrom para retirar todos los tokens aprobados
Forma 2: ataque mediante firma Permit
El estándar EIP-2612 introduce la función permit, que permite autorizar mediante una firma (sin transacción on-chain):
- El usuario firma un mensaje Permit
- El contrato usa esa firma para llamar a permit + transferFrom
- Los tokens de la wallet del usuario son retirados (sin necesidad de un Approve previo)
Por qué el ataque Permit es peligroso:
- Firmar no consume Gas (no va on-chain)
- La interfaz de firma de la wallet no explica de forma clara qué implica un Permit
- El usuario puede pensar erróneamente que es una "firma inofensiva"
Forma 3: protocolo hackeado a través de un Approve histórico
Un protocolo con un Approve histórico es hackeado:
- El usuario aprobó a un protocolo DeFi hace 2 años
- El protocolo es comprometido por hackers (filtración de claves privadas o secuestro de una actualización del contrato)
- El atacante usa el protocolo para llamar a transferFrom y retirar todos los tokens aprobados
Forma 4: Token Drainer malicioso
Sitios de phishing que, en una sola firma, solicitan múltiples aprobaciones a la vez:
- Una sola firma incluye aprobaciones de varios tokens (USDC / USDT / WETH)
- El usuario no logra ver con claridad el contenido exacto de la autorización
- Una sola firma expone varios tokens de la wallet al mismo tiempo
P: ¿Es Permit más peligroso que Approve?
Sí, Permit es considerablemente más peligroso:
| Dimensión |
Approve |
Permit |
| Va on-chain |
Sí |
No (solo firma) |
| Consume Gas |
Sí |
No |
| Claridad en la wallet |
Relativamente clara |
Poco intuitiva |
| Forma de revocar |
Transacción Revoke on-chain |
No se puede revocar (requiere modificar el nonce del contrato) |
| Alerta del usuario |
Alta |
Baja |
Cualquier firma Permit debe revisarse con cuidado: token, cantidad y destinatario.
Cuatro: cómo revocar un Approve con Revoke
Herramientas de revocación más usadas:
Revoke.cash (la más popular, recomendada):
- Sitio: revoke.cash
- Redes soportadas: Ethereum y las principales cadenas EVM
- Operación: conectar la wallet → ver la lista de aprobaciones → hacer clic en Revoke para revocar
Etherscan Token Approval:
- Sitio: etherscan.io/tokenapprovalchecker
- Solo para la mainnet de Ethereum
- Muestra el detalle de las aprobaciones
Solscan Approval (Solana):
- Sitio: solscan.io/account-token-approval
- Solo para Solana
- Revoca aprobaciones de tokens SPL
Pasos para usar Revoke.cash:
1. Entrar a revoke.cash
2. Hacer clic en "Connect Wallet" (conectar MetaMask / Rabby)
3. Se cargan automáticamente todas las aprobaciones (agrupadas por token / protocolo)
4. Revisar la lista:
- Nombre del token (USDC, USDT, WETH, etc.)
- Entidad autorizada (dirección del contrato + nombre del protocolo conocido)
- Cantidad autorizada (valor específico o Unlimited)
- Nivel de riesgo (rojo = alto riesgo, verde = protocolo conocido)
5. Hacer clic en "Revoke" para revocar la aprobación sospechosa
6. MetaMask abre una ventana para firmar y pagar el Gas
7. Esperar la confirmación on-chain (5-30 segundos)
Costo de Gas al revocar:
| Red |
Gas por revocación |
| Mainnet de Ethereum |
5-30 dólares |
| Polygon |
menos de 0,01 dólares |
| Arbitrum / Optimism / Base |
0,1-1 dólares |
| BNB Chain |
0,05-0,30 dólares |
| Solana |
menos de 0,01 dólares |
P: ¿Revocar un Approve requiere pagar Gas?
Sí. Revoke es una transacción on-chain y requiere pagar Gas. Pero:
- En la mainnet de Ethereum el Gas suele ser alto (5-30 dólares por transacción)
- En L2 y otras redes el Gas es muy bajo
Recomendaciones de optimización:
- Revocar cuando la red está menos congestionada (madrugada o fin de semana)
- Revocar varias aprobaciones a la vez (agrupar operaciones para ahorrar tiempo)
- Priorizar la revocación de las aprobaciones de mayor riesgo
Cinco: proceso estándar para auditar Approve periódicamente
Frecuencia de auditoría:
| Tipo de usuario |
Frecuencia recomendada |
| Usuario activo de DeFi (5+ interacciones semanales) |
Mensual |
| Usuario intermedio de DeFi (5-20 interacciones mensuales) |
Cada 3 meses |
| Usuario ocasional de DeFi (menos de 5 interacciones mensuales) |
Cada 6 meses |
Pasos de la auditoría:
Paso 1: conectar la wallet a Revoke.cash
Paso 2: clasificar y filtrar las aprobaciones
Ordenar por nivel de riesgo:
- Alto riesgo: aprobación ilimitada a un contrato desconocido
- Riesgo medio: aprobación ilimitada a un protocolo conocido
- Riesgo bajo: aprobación limitada a un protocolo conocido
Paso 3: revocar las aprobaciones innecesarias
Principios de revocación:
- Revocar todas las aprobaciones a contratos desconocidos
- Revocar las aprobaciones de protocolos que ya no se usan (por ejemplo, sin interacción en el último año)
- Conservar las aprobaciones de los protocolos que sí se usan (como Uniswap, Aave, etc.)
Paso 4: registrar las aprobaciones que se conservan
Anotar de cada aprobación conservada:
- Nombre del protocolo
- Dirección del contrato
- Cantidad autorizada
- Uso
Paso 5: verificar después de cada auditoría
- Tras revocar, Revoke.cash ya no debería mostrar esa aprobación
- Verificar con Etherscan que allowance(user, spender) del contrato sea igual a 0
P: ¿Cómo saber si un protocolo es "conocido" antes de revocar?
Formas de comprobarlo:
- Nombre del protocolo: el nombre que muestra Revoke.cash (por ejemplo, "Uniswap V3 Router")
- Dirección del contrato: buscarla en Etherscan para ver si está verificada y si pertenece a un protocolo reconocido
- Página del protocolo en DefiLlama: revisar el TVL y el tiempo de operación
- Documentación oficial: la dirección del contrato publicada por el propio proyecto
Un contrato no identificable junto con una aprobación Unlimited equivale a alto riesgo, y debe revocarse de inmediato.
Seis: gestión de Approve en distintas cadenas
Mainnet de Ethereum y cadenas compatibles con EVM:
- Mismo mecanismo: estándar ERC20 con Approve / transferFrom
- Herramienta: Revoke.cash funciona de forma universal
- Costo de Gas: la mainnet de Ethereum es la más cara; L2, Polygon y BSC son más baratas
Cadena Solana:
- Mecanismo distinto: los tokens SPL usan el modelo de "Token Account"
- No existe Approve / transferFrom: Solana usa "autorización por firma"
- Herramientas de revocación: Solscan o el Revoke integrado en Phantom
Cadena de Bitcoin:
- Sin contratos inteligentes: BTC no necesita Approve
- Redes de segunda capa como Lightning o Liquid: tienen mecanismos distintos
Familia Move (Sui / Aptos):
- Mecanismo distinto: modelo de Objetos
- Requiere una lógica de revocación diferente
P: ¿Existe riesgo de Approve en Solana?
Sí. El riesgo de la "autorización por firma" en Solana es similar:
- Un sitio de phishing hace que el usuario firme una "Token Approval"
- Tras firmar, un contrato malicioso puede retirar los tokens
- La revocación se hace desde Solscan o directamente en la wallet
Phishing más común en Solana:
- Páginas de "Mint gratuito de NFT"
- Reclamos de "airdrop de Solana"
- Sitios falsos que imitan a Jupiter / Raydium
Los principios de protección son los mismos que en Ethereum.
Siete: mejores prácticas para optimizar el Approve
1. Usar cantidades específicas en cada Approve
Configurar el aviso de Approve en MetaMask:
- Al firmar un Approve en MetaMask, cambiar el valor por defecto Unlimited por una cantidad específica
- Por ejemplo: si va a operar 100 USDC, apruebe 100 USDC (no Unlimited)
2. Separar la wallet principal de la secundaria
- Wallet principal (80% de los activos): nunca hacer Approve a ningún contrato
- Wallet secundaria (20% de los activos): interacciones diarias con DeFi
- Wallet de pruebas (menos del 1% de los activos): experimentos de alto riesgo
3. Revocar aprobaciones de protocolos antiguos
Auditoría mensual:
- Revocar las aprobaciones de protocolos no usados en 6 meses
- Revocar las aprobaciones de protocolos ya abandonados
- Revocar aprobaciones de dominios sospechosos (aunque en su momento parecieran legítimos)
4. Cuidado con las "firmas combinadas"
- Varios Approve dentro de una sola transacción
- El usuario difícilmente puede identificarlos
- Una sola firma compromete todo
5. Usar herramientas de interpretación de firmas
- Rabby Wallet: muestra el efecto real de la firma
- Pocket Universe: de pago, con interpretación detallada
- Wallet Guard: alertas de sitios de phishing y de firmas
P: ¿Se pueden revocar todos los Approve de una sola vez?
No existe una función de "revocar todo con un clic":
- Cada Approve es una transacción on-chain independiente
- Deben revocarse uno por uno
- Varias revocaciones pueden empaquetarse en el mismo bloque (pero siguen siendo transacciones distintas)
Algunas herramientas ofrecen una "cola" por lotes:
- Revoke.cash: seleccionar varias aprobaciones → firmar una por una → confirmarlas una por una on-chain
- Cada transacción sigue consumiendo Gas
Ocho: caso especial: Approve de NFT
Los NFT también tienen su propio mecanismo de Approve:
- setApprovalForAll: autoriza a un contrato a gestionar toda su colección de un determinado NFT
- Por ejemplo: para poner un NFT en venta en OpenSea, es obligatorio hacer setApprovalForAll al contrato de OpenSea
Riesgos del Approve de NFT:
- Naturaleza Unlimited: setApprovalForAll es "una autorización ilimitada sobre todos los NFT de esa colección"
- Protocolo hackeado: si OpenSea, Blur u otros son hackeados, los NFT de todos los usuarios pueden ser retirados
- Escenario de phishing: sitios que imitan a OpenSea o Blur para inducir al usuario a hacer setApprovalForAll
Caso real:
En mayo de 2024, un usuario firmó setApprovalForAll en un sitio que imitaba a OpenSea, autorizando a un contrato malicioso a gestionar su BAYC. Poco después, el BAYC fue transferido de inmediato a la dirección del atacante, con una pérdida de aproximadamente 120.000 dólares.
Revocación de Approve en NFT:
- Soportado por Revoke.cash
- Soportado por Etherscan Token Approval Checker
- La operación es similar a la revocación de Approve en ERC20
P: ¿Es obligatorio autorizar para vender un NFT en OpenSea o Blur?
Sí. Los principales marketplaces de NFT exigen autorización para poder vender:
- OpenSea: setApprovalForAll al contrato de OpenSea
- Blur: setApprovalForAll al contrato de Blur
- Magic Eden: setApprovalForAll al contrato de Magic Eden
Práctica segura:
- Revocar de inmediato el setApprovalForAll después de vender el NFT
- Volver a autorizar cuando publique otra venta
- Es más incómodo, pero más seguro
Nueve: preguntas frecuentes
P: ¿Cuánto Gas mínimo consume un Approve?
Gas estándar de un Approve en la mainnet de Ethereum:
- Approve básico: alrededor de 46.000 unidades de Gas
- Con un Gas Price de 30 Gwei: aproximadamente 5 dólares
En L2, Polygon o BSC, un Approve suele costar menos de 1 dólar.
P: ¿Se puede reactivar un Approve ya revocado?
No se puede reactivar directamente. Tras la revocación equivale a "nunca haber sido aprobado", por lo que hay que volver a hacer Approve:
- Firmar de nuevo, enviar la transacción on-chain y pagar el Gas
P: ¿Todos los tokens ERC20 requieren Approve?
Sí. Todos los tokens del estándar ERC20 siguen el mecanismo de Approve:
- Stablecoins como USDC / USDT / WETH / DAI
- Tokens de gobernanza como UNI / LINK / AAVE
- El token de cualquier proyecto
Excepciones:
- ETH (moneda nativa de Ethereum): no requiere Approve (transferencia directa)
- BTC: no requiere Approve (sin contratos inteligentes)
- SPL de Solana: mecanismo distinto ("autorización por firma")
P: ¿El Approve bloquea los tokens?
No. El Approve no bloquea los tokens:
- Approve solo "permite" que el contrato los retire
- Los tokens permanecen en la wallet del usuario y pueden usarse con normalidad
- El usuario puede transferir sus tokens en cualquier momento (incluso con un Approve activo)
El Approve funciona de forma parecida a un "límite de tarjeta de crédito": usted le da un cupo al comercio, pero el dinero sigue en su cuenta bancaria.
P: ¿Cómo se revoca una firma Permit?
Una firma Permit no se puede "revocar" directamente, pero hay métodos indirectos:
- Modificar el nonce del contrato: llamar a incrementNonce del contrato para invalidar el Permit
- Dejar de usar la wallet: los Permit tienen fecha de expiración y caducan automáticamente
- Crear una wallet nueva: trasladar por completo los activos a una wallet nueva
La clave de la seguridad frente a Permit está en la prevención: revise con cuidado cada firma Permit antes de aceptarla.
P: ¿El riesgo de Approve es igual en USDT y en USDC?
En general es similar, pero hay diferencias de detalle:
- USDT: primero hay que llamar a approve(spender, 0) antes de approve(spender, X) (el estándar ERC20 normal no requiere este paso)
- USDC: ERC20 estándar con soporte de Permit (EIP-2612)
- DAI: las versiones tempranas soportan Permit (con una implementación particular)
P: ¿Se puede ver todo el historial de Approve de una wallet?
Sí, es posible:
- Etherscan: en la página de la dirección → "Token Txns" → filtrar por Approve
- Revoke.cash: muestra las aprobaciones activas actuales (no muestra las ya revocadas)
- DeBank: perfil de la dirección con historial de aprobaciones
P: ¿La revocación de un Approve tiene efecto inmediato?
Sí. Una vez confirmado el Revoke on-chain, el efecto es inmediato:
- El allowance(user, spender) on-chain pasa a 0 de inmediato
- El contrato ya no puede volver a llamar a transferFrom
- Se sincroniza en toda la red (5-30 segundos)
P: ¿Se pueden revocar de una sola vez las aprobaciones de varias wallets?
No. Cada wallet es independiente:
- Cada wallet debe conectarse por separado a Revoke.cash
- La auditoría de aprobaciones se hace de forma independiente
- La revocación se hace de forma independiente
Usuarios con varias wallets: deben auditar cada wallet por separado, todos los meses.
Fuentes de datos
- Protocolo estándar ERC20 (EIP-20)
- Estándar Permit EIP-2612
- Documentación de la herramienta Revoke.cash
- Recopilación de casos de phishing con Approve de SlowMist
- Análisis de incidentes on-chain de Chainalysis
Aviso de riesgo: este artículo es una recopilación independiente de terceros y no constituye asesoramiento de inversión. Approve es uno de los principales vectores de ataque en DeFi; auditar y revocar periódicamente es una práctica de seguridad básica. Todos los datos corresponden a abril de 2026.