La mayoría de los «drains» de NFT ocurren en el momento en que firmas una solicitud de tu wallet, no porque hayan hackeado un smart contract. Un mint legítimo llama a safeMint y te pide pagar gas, mientras que una página de drainer te engaña para que firmes setApprovalForAll, permit, increaseAllowance o eth_sign, lo que permite a un atacante mover tus tokens o NFT más tarde. La mejor defensa individual es una hot wallet que no contenga nada de valor, junto con comprobaciones previas a la firma como Revoke.cash y Pocket Universe.
Puntos clave
- Los mints reales cuestan gas y llaman a safeMint. La mayoría de los mints falsos, en cambio, solicitan una firma o una aprobación de token que concede a un contrato permisos sobre tus activos.
- Los cuatro patrones de firma que deberían hacerte cerrar la pestaña son setApprovalForAll, permit, increaseAllowance y cualquier solicitud eth_sign o personal_sign que no sea un simple mensaje de inicio de sesión.
- Los datos tipados de EIP-712 son legibles para humanos: si el dominio, la dirección del contrato o el nombre de la acción no coinciden con lo que el sitio afirma hacer, trátalo como hostil.
- Usa una wallet desechable para los mints, revoca aprobaciones antiguas en Revoke.cash y simula cada transacción con Pocket Universe antes de confirmarla en tu wallet.
¿Qué es un mint de NFT falso y por qué parece uno normal?
Un mint de NFT falso es una página web, un enlace de Discord o una publicación de Twitter que imita la página de mint de una colección real para que firmes algo que no entiendes. El objetivo no es darte un NFT. El objetivo es obtener un mensaje firmado o una aprobación on-chain que permita al atacante mover tus tokens o NFT existentes más tarde. La página suele cargarse, aparece tu wallet y haces clic en confirmar sin leer porque el texto parece plausible, el temporizador de cuenta atrás sigue corriendo y el arte resulta convincente.
Hay dos cosas que diferencian este ataque del phishing más antiguo. Primero, a menudo el atacante ni siquiera necesita desplegar un contrato malicioso. Puede usar las interfaces estándar que ya utilizan las colecciones reales, como setApprovalForAll de ERC-721, y simplemente dirigirte a una dirección de contrato que controla. Segundo, el ataque puede dividirse en dos transacciones. La primera transacción es pequeña e inofensiva, a veces incluso un mint gratuito que no acuña nada. La segunda se ejecuta más tarde, a veces semanas después, por un bot que llama a transferFrom en cada dirección aprobada. Para cuando te das cuenta, tu wallet está vacía.
La razón por la que esto importa a los coleccionistas es que el mint es el único momento en crypto en el que se espera que firmes algo que no has escrito. Iniciar sesión en un CEX (centralized exchange) o comprar en Uniswap no exige leer una carga de datos tipados. Mintear sí, lo que significa que la vía de entrada al coleccionismo de NFT también es el lugar más fácil para vaciar una wallet. Trata la solicitud de firma como un banquero trataría una orden de transferencia: lee el destino, lee el importe y, si el texto no coincide con la historia que aparece en pantalla, aléjate.
Los riesgos reales: cómo los kits de drainer vacían realmente las wallets
La mayoría de los drainers de NFT modernos se venden como servicio. Los operadores pagan una suscripción, pegan una dirección de contrato o una dirección de wallet a la que drenar, y reciben una página de phishing que parece un mint, una reclamación de airdrop o un mint gratuito. Los kits vienen con funciones ant detección que rotan dominios, ocultan la aprobación en una subtransacción e incluso simulan un mint exitoso para que la víctima vea una confirmación falsa. En la segunda mitad de 2024 y durante 2025, investigadores on-chain de firmas como Scam Sniffer y Blockaid rastrearon volúmenes de drainers de cientos de millones de dólares al año, con una parte significativa atribuida específicamente a páginas de mint de NFT.
Hay cuatro patrones de firma que explican la gran mayoría de estos drains. Conocerlos por su nombre es la mejora más importante que puedes hacer en tu propia seguridad. Ninguno de ellos exige que envíes ETH al atacante. Solo requieren que firmes algo, por eso la solicitud de la wallet parece inofensiva.
Más allá de la firma en sí, los drainers dependen de algunos trucos sociales. Suplantan el Discord oficial de un proyecto, mintean con un nombre que difiere en un solo carácter de la colección real y programan sus lanzamientos para coincidir con mints reales, de modo que el ruido tape la señal. También siembran comentarios falsos bajo el proyecto en X/Twitter y pagan enlaces patrocinados en Google. Si llegaste a la página de mint a través de un anuncio de búsqueda, un DM o un enlace de Discord de alguien que no conoces, ve más despacio antes de firmar nada.
La verdad honesta es que ninguna rutina de inspección de firmas te salvará el 100% de las veces. Los autores de drainers actualizan sus cargas para imitar solicitudes legítimas, y algunos usan contratos de mint reales desplegados por el propio proyecto. El objetivo de este artículo no es hacerte invencible. El objetivo es hacer que los ataques baratos sean evidentes, de modo que el único riesgo restante sean los sofisticados, que la mayoría de los atacantes evitará porque existen víctimas más fáciles.
Las cuatro firmas que nunca debes firmar a ciegas
- setApprovalForAll: «Permitir que este contrato mueva todos tus NFT (o todos los de una colección) en cualquier momento, para siempre, hasta que lo revoques». Un mint legítimo casi nunca necesita esto. Si una página de mint lo solicita, trata el sitio como hostil.
- permit (ERC-2612): «Permitir que un spender tome una cantidad fija de tu token en el futuro, sin caducidad, solo llamando a permit». Los drainers lo envuelven en un botón de mint falso. El token que se aprueba suele ser una stablecoin o un blue-chip como USDC o USDT, no un NFT.
- increaseAllowance / approve: «Permitir que un spender mueva una cantidad específica de un token». Como permit, pero la cantidad y el token aparecen explícitos. Lee ambos. Si el token es algo que tienes, no firmes.
- eth_sign / personal_sign con una URL o un blob hexadecimal: «Firma este mensaje». Los sitios reales usan personal_sign solo para inicios de sesión, y el mensaje se lee como inglés normal. Si la solicitud es una cadena hexadecimal larga o contiene «opensea», «blur» o una URL de marketplace dentro de una carga personal_sign, casi con certeza es una orden off-chain o un exploit de listado de Seaport.
safeMint vs setApprovalForAll: qué hace realmente un mint legítimo
La comparación más útil para un coleccionista es la que existe entre una firma de mint real y una firma de drainer. En la ventana emergente de la wallet se parecen superficialmente, pero hacen cosas completamente distintas on-chain, y la diferencia es visible si sabes dónde mirar.
Un mint legítimo de ERC-721 normalmente llama a una función llamada safeMint (o mint, publicMint, teamMint, según el contrato). Cuando aparece la ventana emergente de tu wallet, se te pide que envíes una transacción, lo que cuesta gas, y la transacción tiene una dirección clara en el campo 'To' que coincide con el contrato oficial de mint anunciado por el proyecto. El nombre de la función se puede leer en tu wallet. El campo de valor es el precio del mint, denominado en ETH o en una stablecoin. No se solicita ninguna aprobación por separado, porque el contrato no necesita tocar tus activos existentes: va a acuñarte un nuevo token. Ese es el objetivo.
Un mint drainer hace una de dos cosas. La versión barata se salta por completo el mint on-chain y te pide que firmes un mensaje EIP-712 off-chain que contiene una orden para un marketplace como Blur, OpenSea Pro o LooksRare. La versión peligrosa te pide que llames a setApprovalForAll en una dirección de contrato controlada por el atacante, que después tiene permiso ilimitado para hacer transferFrom de cualquier NFT de tu wallet en cualquier momento futuro, mientras no revoques ese permiso.
Leer el aviso de la wallet, línea por línea
- To: Debe ser la dirección oficial del contrato. Verifícala en la propia web del proyecto, no en un enlace que alguien te haya enviado. Una sola letra o número incorrecto basta para redirigirte a un contrato del atacante.
- Function: Debe ser safeMint, mint o una función con un nombre similar. No debe ser setApprovalForAll, approve ni un método llamado algo como 'claimRewards' o 'airdrop'.
- Value: Debe ser el precio del mint en ETH o en una stablecoin. No debe ser cero en un 'free mint' que pide una aprobación en el siguiente aviso. Los mints de valor cero que piden aprobaciones son un patrón conocido de drainer.
- Spender / Approval target: Si el aviso menciona una aprobación, el spender debe ser un contrato que reconozcas, y aun así deberías revocarla en Revoke.cash después de que el mint se liquide.
Cómo leer datos tipados EIP-712 antes de firmar
EIP-712 es el estándar que hace legibles las solicitudes de firma. En lugar de pedirte que firmes un bloque de hex, la wallet te muestra una carga útil estructurada con campos nombrados como 'from', 'to', 'value', 'deadline' y 'nonce'. Esto mejora la usabilidad, pero solo si realmente lo lees. La mayoría de coleccionistas no lo hacen, por eso a los drainers les encanta EIP-712: las cargas útiles parecen oficiales.
Para un mint legítimo de NFT, los datos tipados normalmente no tienen spender, ni campos de permit, ni contrato de token. Podría decir 'Minting 1 NFT for 0.08 ETH' con la dirección de tu wallet como destinatario. Para una firma de listado al estilo Blur u OpenSea, la carga útil contiene una entrada del libro de órdenes con precios, tiempos de expiración y un contador. Para un drainer, la carga útil suele contener un objeto permit con tu saldo de stablecoin como valor, o una orden de Seaport que lista uno de tus NFT valiosos a cero ETH.
Checklist para ventanas emergentes EIP-712
- Domain: El 'name' y la 'version' deben coincidir con el proyecto. Una orden legítima de Blur dice 'Blur', una orden legítima de OpenSea dice 'Seaport' y una orden legítima de LooksRare dice 'LooksRare Exchange'. Si el dominio es algo como 'MintNFT-Free' o el campo de versión está vacío, detente.
- Primary type: Debe coincidir con lo que el sitio afirma estar haciendo. Un sitio de mint que muestra un tipo 'Permit' u 'Order' es una señal de alarma.
- Token address: Si se menciona un token, pega la dirección del contrato en un explorador de bloques. Asegúrate de que sea el USDC, USDT, WETH real, o lo que el sitio afirme, no un token imitador con el mismo nombre.
- Amount: Si un permit o una aprobación menciona una cantidad, debe ser un tamaño de transacción normal. Cualquier cosa cercana a tu saldo completo, o cualquier cosa que use el valor centinela especial de 'unlimited' (a menudo 2^256 - 1), debe rechazarse.
- Nonce and deadline: Los mensajes legítimos tienen una fecha límite futura y un nonce que coincide con tu wallet. Nonces antiguos y fechas límite ausentes son señales de una repetición o de una carga útil creada a mano.
El 'free mint' que pide una aprobación: un ejemplo práctico
Este es el patrón de drenaje más común en 2024 y 2025, y merece la pena repasarlo porque es en el que los coleccionistas caen con más frecuencia. Una cuenta de Twitter suplanta a un proyecto real y anuncia que los holders de una colección asociada pueden mintear un NFT gratis. El enlace lleva a un clon de la página de mint real. El botón de mint activa dos avisos de wallet seguidos.
El primer aviso es un personal_sign o eth_sign para un mensaje de 'verificación'. El atacante espera que firmes sin leer porque parece un inicio de sesión. El segundo aviso es setApprovalForAll sobre el contrato del atacante, a menudo limitado a una colección blue-chip como Pudgy Penguins o Bored Apes. Después de que confirmes, la página te mintea un NFT sin valor o falla en silencio. En cualquier caso, el atacante ahora tiene aprobación para mover tus NFT reales.
La defensa es mecánica. Un free mint real o bien cuesta gas y llama a safeMint, o bien es un merkle-claim que llama a una función llamada claim, claimAirdrop o similar, y escribe un token a tu favor. No necesita aprobar nada. En el momento en que un 'free mint' pida cualquier tipo de aprobación o firma que no sea un inicio de sesión sencillo, asume lo peor. Cierra la pestaña, busca el proyecto a través de tu propio marcador y confírmalo con su equipo en Discord antes de hacer cualquier otra cosa.
Disfraces comunes que usa el mismo ataque
- Avisos de 'Verify you are human' que piden un personal_sign sobre una cadena hex larga.
- Botones de 'Claim your gas refund' que muestran un permit sobre USDC.
- Botones de 'List your NFT for free' en páginas falsas de marketplace que generan una firma de orden de Seaport o Blur en lugar de un listado on-chain.
- 'Bridge rewards' y 'snapshot registrations' que piden setApprovalForAll sobre un contrato multisend.
Cómo configurar una wallet que sobreviva a una mala firma
Incluso con una higiene de firmas perfecta, tarde o temprano firmarás algo que no pretendías firmar. La pregunta es cuánto pierdes cuando lo haces. La respuesta estándar de los coleccionistas profesionales es mantener dos wallets: una hot wallet para mintear y hacer trading, y una cold wallet para almacenar. La hot wallet no contiene nada que no puedas permitirte perder. La cold wallet guarda los blue-chips y nunca se conecta a páginas de mint.
Esto suena paranoico hasta que le pones precio. Una burner wallet no cuesta nada y se configura en diez minutos. Un Bored Ape drenado cuesta seis cifras y no se puede sustituir. La asimetría es tan extrema que 'usa siempre una burner' es lo más parecido al dinero gratis en el coleccionismo de NFT.
Checklist operativa antes de cada mint
- Usa una burner wallet financiada solo con el ETH necesario para el gas y el precio del mint.
- Simula la transacción con Pocket Universe, Blowfish o Wallet Guard antes de confirmar en tu wallet real.
- Comprueba las aprobaciones en Revoke.cash inmediatamente después de mintear. Si el mint pidió alguna aprobación, revócala antes de hacer cualquier otra cosa.
- Revoca de nuevo al día siguiente. Algunos drainers usan ejecución diferida para esquivar los hábitos de revocación inmediata.
- Nunca mintees desde una wallet que contenga activos derivados de una seed phrase, como una cuenta hot-side de una hardware wallet que también mantenga posiciones de staking en BTC o ETH.
Qué hacer si ya has firmado algo sospechoso
Si has firmado un setApprovalForAll o un permit, aún no has perdido nada, pero el atacante ahora tiene las claves para llevárselo. El tiempo importa. La vía más rápida es abrir Revoke.cash, conectar la wallet afectada y revocar todas las aprobaciones a la dirección del contrato que acabas de firmar. Si no conoces la dirección del contrato, revoca todo lo que no reconozcas.
Si firmaste una orden de Seaport o Blur por error, es posible que el atacante ya tenga una orden abierta para comprar tu NFT por cero o por un wei. Ve al marketplace, busca tus listados y cancélalos. En Blur, está en 'My bids' y 'My listings'. En OpenSea, está en 'Listings'. Cancelar un listado off-chain requiere una segunda firma, que es el precio de entrada por usar marketplaces, pero es mucho más barato que dejar que la orden se ejecute.
Si tus NFTs ya han desaparecido, no negocies con el estafador, no pagues a un 'servicio de recuperación' que te escriba por mensaje directo en Twitter y no firmes más transacciones desde esa wallet. Mueve cualquier activo restante a una wallet nueva, presenta un informe ante los moderadores de la comunidad del proyecto y considera denunciar el contrato en Etherscan o mediante el mecanismo de marcado del explorador de bloques correspondiente para que el siguiente coleccionista reciba una advertencia.
Cómo seguir las noticias de mint de NFT sin convertirte en víctima de un drainer
Los anuncios de mint de NFT avanzan muy rápido, y la diferencia entre un lanzamiento real y un clon falso se mide en minutos. Seguir manualmente todos los canales oficiales es una batalla perdida, y eso es exactamente con lo que cuentan los operadores de drainers. Zippfeed muestra titulares de mint de NFT con puntuación de sentimiento marcada como bullish, neutral o bearish y una valoración de importancia, para que puedas detectar los lanzamientos reales, ignorar a los suplantadores y hacer clic solo en páginas de mint que ya hayas verificado. Combina ese feed con el hábito de usar una wallet desechable descrito arriba, y convertirás el momento más peligroso del coleccionismo en una rutina.