setApprovalForAll Explicado: La Aprobación de NFT que Vacía Colecciones Completas
— By Tony Rabbit in Tutorials

Una estafa de setApprovalForAll funciona engañándote para que otorgues control de operador sobre una colección completa de NFT con una sola firma. Aprende cómo funciona la función, cómo difiere de las asignaciones ERC-20, cómo leer la solicitud antes de firmar y cómo revocarla.
Una estafa de setApprovalForAll es la forma más común en que las colecciones de NFT son vaciadas, y casi siempre comienza con una firma que no leíste completamente. La función setApprovalForAll es una parte estándar de las especificaciones de tokens ERC-721 y ERC-1155. Cuando la llamas, nombras otra dirección como "operador" y le das a ese operador permiso para mover cada NFT que posees de un contrato de colección dado, ahora y en el futuro. No hay límite por artículo ni campo de cantidad. Una vez que un atacante es establecido como tu operador, puede transferir toda tu colección de ese contrato en una sola barrida, sin pedirte que firmes de nuevo. Esta guía explica exactamente lo que hace la concesión, por qué es mecánicamente diferente de una asignación de token, cómo los sitios maliciosos disfrazan la solicitud y cómo auditarla y revocarla.
Puntos Clave
- setApprovalForAll otorga a un operador control sobre una colección completa de NFT de un contrato, no un solo artículo.
- No tiene campo de cantidad o monto, por lo que la concesión es efectivamente ilimitada y persistente hasta que se revoca.
- Las acuñaciones falsas y los mercados falsificados lo solicitan bajo el pretexto de "habilitar" o "listar" tus NFT.
- Revocar una aprobación de operador es una acción separada de revocar las asignaciones de tokens ERC-20.
Lo que setApprovalForAll realmente otorga
setApprovalForAll toma dos argumentos: una dirección de operador y un booleano (verdadero o falso). Cuando lo firmas con el valor establecido en verdadero, el contrato de NFT registra que el operador nombrado tiene permiso para llamar a transferFrom y safeTransferFrom en cualquier ID de token que poseas dentro de ese contrato. Esa es una autoridad a nivel de colección. Si hoy tienes diez NFT de un proyecto y acuñas cinco más el próximo mes, el operador puede mover los quince sin una nueva firma.
Esto es lo más importante que hay que entender: la aprobación está vinculada al contrato de la colección y al operador, no a NFT específicos. No estás aprobando "este simio". Estás aprobando "cualquiera que tenga esta clave de operador puede tomar todo lo que poseo de este contrato, indefinidamente". Es el equivalente en NFT de entregarle a alguien una llave maestra de una habitación y dejar que la conserve. Esta persistencia es la razón por la que setApprovalForAll está detrás de la mayoría de los vaciados de billeteras NFT.
Cómo difiere de una asignación de límite de gasto ERC-20
La mayoría de las personas se encuentran por primera vez con la palabra "aprobación" a través de los tokens ERC-20. Allí, la función approve establece un límite de gasto: una asignación numérica que un gastador puede retirar, como 100 USDC. El riesgo con ERC-20 es el patrón de aprobación infinita, donde las dApps solicitan un límite ilimitado por conveniencia. Pero incluso una asignación ERC-20 infinita sigue estando limitada a un solo token. setApprovalForAll es una forma diferente de riesgo porque es un interruptor booleano, no un número, y cubre toda tu tenencia en una colección a la vez. Si eres nuevo en el concepto, nuestra guía de transacciones de aprobación cubre la mecánica subyacente con más detalle.
Cómo lo solicitan las acuñaciones falsas y los mercados falsificados
Los atacantes rara vez solicitan setApprovalForAll fuera de contexto. Lo envuelven en una acción de apariencia normal. Una página de acuñación falsa que promete un lanzamiento gratuito o con descuento mostrará una solicitud de billetera en el momento en que hagas clic en "acuñar", y esa solicitud es en realidad setApprovalForAll en una colección que ya posees. Un clon de mercado falsificado, a menudo anunciado a través de una cuenta social hackeada o un anuncio pagado, te pedirá que "habilites" o "apruebes para comerciar" antes de que puedas listar algo. Los mercados legítimos sí usan setApprovalForAll, que es exactamente lo que hace que la versión falsa sea convincente.
El engaño funciona porque la acción que esperas (acuñar, listar, reclamar) es plausible, y la billetera muestra un nombre de función que la mayoría de los usuarios no reconocen. Este patrón se superpone en gran medida con el ice phishing, donde la transacción maliciosa es una aprobación en lugar de una transferencia obvia, y con tácticas más amplias de phishing de firma. El activo nunca sale de tu billetera durante el paso de la firma, por lo que nada parece robado todavía. El vaciado ocurre minutos u horas después, cuando el operador llama a transferFrom y barre la colección. Para entonces, la aprobación ya ha hecho su trabajo.
Cómo leer la solicitud antes de firmar
La mejor defensa es aprender a leer la solicitud de la billetera. Cuando un sitio activa una transacción, las billeteras modernas muestran el método del contrato que se está llamando. Si ves "setApprovalForAll" y un parámetro establecido en "true" para una acción que no debería necesitarlo, detente. Pregunta si la operación que tienes delante realmente requiere permiso para toda la colección. Reclamar un airdrop, ver una galería o conectarse a un sitio nunca debería requerirlo.
Verifica tres cosas. Primero, el nombre de la función: ¿es setApprovalForAll? Segundo, la dirección del operador: ¿coincide con el contrato verificado de la plataforma que pretendías usar, o es una dirección desconocida? Tercero, el booleano: verdadero significa que estás otorgando, falso significa revocando. Muchos sitios de vaciado cuentan con que hagas clic en la solicitud en piloto automático. Un mercado falsificado también te pedirá a menudo que otorgues aprobación para una colección en un sitio con el que nunca antes has interactuado, lo cual es una fuerte señal de alerta. Si algo no te resulta familiar, rechaza la solicitud y verifica la URL de forma independiente antes de intentarlo de nuevo. La mayoría de estos flujos son impulsados por un kit de wallet drainer listo para usar, diseñado para que la solicitud parezca rutinaria.
Cómo auditar y revocar aprobaciones de operador
Las aprobaciones de operador residen en una superficie diferente a las asignaciones ERC-20, por lo que una herramienta o panel que solo muestre los límites de gasto de tokens podría no mostrarlas en absoluto. Para auditar correctamente, utiliza una herramienta de revocación que liste explícitamente las aprobaciones de operador de NFT, a menudo etiquetadas como "aprobaciones para todos" o mostradas por colección. Conecta tu billetera en modo de lectura, revisa cada colección donde se haya establecido un operador e identifica cualquier dirección de operador que no reconozcas o que ya no uses.
Para revocar, llamas a setApprovalForAll de nuevo en el mismo contrato de colección, esta vez con el booleano establecido en falso para ese operador. Esta es una transacción en cadena, por lo que cuesta gas, y debe hacerse por colección por operador. No hay un solo botón que borre todas las aprobaciones de NFT a la vez en todos los contratos. Nuestro tutorial paso a paso de revocación muestra el proceso tanto para las asignaciones de tokens como para las aprobaciones de operador. Haz de esto un hábito periódico, no una limpieza única, especialmente después de usar nuevos sitios de acuñación o mercados.
Hábitos para evitar aprobar contratos desconocidos de forma generalizada
La prevención es más barata que la limpieza. Mantén una billetera de "acuñación" dedicada que contenga solo los fondos y NFT que estás usando activamente, para que una mala aprobación no pueda exponer tus tenencias a largo plazo. Trata cada solicitud de setApprovalForAll como una decisión deliberada en lugar de una formalidad, y nunca la otorgues en un sitio al que llegaste a través de un anuncio, un mensaje directo o un enlace no solicitado. Verifica las URL de mercados y acuñaciones de fuentes oficiales, no de anuncios de búsqueda, que son rutinariamente secuestrados por operadores de vaciado.
Finalmente, establece una rutina: revisa tus aprobaciones mensualmente, revoca cualquier cosa obsoleta y revoca inmediatamente después de terminar de usar un sitio de acuñación único. Las aprobaciones de operador no caducan por sí solas, por lo que una antigua concesión de un proyecto olvidado sigue siendo una superficie de ataque activa mientras la dejes activa. Unos minutos de auditoría protegen activos que pueden valer mucho más que el gas que cuesta revocar.
Este artículo tiene fines educativos únicamente y no constituye asesoramiento financiero.