Solo con fines educativos; no constituye asesoramiento ni recomendación de inversión. Las inversiones pueden ocasionar pérdidas.
Respuesta directa
Permit2 combina dos sistemas de autorización distintos. AllowanceTransfer almacena una allowance reutilizable owner-token-spender con importe, vencimiento y nonce ordenado. SignatureTransfer consume un máximo firmado de un solo uso con nonce bitmap no ordenado y no crea una allowance persistente para el spender. Ambos dependen aún de la allowance ERC-20 del owner a Permit2.
Una firma sin gas puede mover activos cuando un spender o relayer paga la ejecución. Verifique cadena, código Permit2 desplegado, dominio EIP-712, módulo, token, spender, máximo firmado, calldata del destinatario, nonce y relojes. El contrato Permit2 legítimo no vuelve seguros a spender, destinatario, router o witness maliciosos.
Completar esta revisión no demuestra que un activo, una transacción o un sistema sean seguros.
Cómo funciona
- Fije
chainId, red,verifyingContractde Permit2, código runtime desplegado, dirección y decimales del token, tipo de wallet owner y aplicación prevista. Use un registro oficial; dirección o etiqueta conocida no basta. - Lea saldo y allowance ERC-20 upstream del owner a Permit2. Identifique aprobación finita o ilimitada y comportamiento del token; este registro sobrevive al vencimiento de una firma Permit2 o allowance downstream.
- Identifique vía y primary type firmada:
PermitSingleoPermitBatchde AllowanceTransfer, oPermitTransferFromy variantes batch/witness de SignatureTransfer. No tratetransferFromcomo tipo firmado. - Decodifique dominio EIP-712 y cada entrada. En AllowanceTransfer revise token,
uint160 amount,expiration, nonce ordenado, spender ysigDeadline. En SignatureTransfer revise token e importe permitidos, nonce no ordenado, deadline y spender vinculado por el contexto del caller. - Decodifique por separado la calldata. En SignatureTransfer básico,
SignatureTransferDetails.toyrequestedAmountson parámetros de ejecución, no campos del permit básico firmado; basta que el importe solicitado no exceda el máximo firmado. Verifique cada índice batch y hash/type string witness exactos. - Consulte nonce actual de allowance ordenada o palabra/bit del bitmap no ordenado y simule caller, calldata, cadena y estado exactos. Concilie destinatario, acciones del router, particularidades del token, saldo y ambos registros; la simulación puede cambiar por estado, orden o reorganización.
- Minimice importes y vigencias. Ante sospecha, conserve typed data y envíe por vía fiable la revocación upstream, downstream o invalidación de nonce correcta, tratándola como carrera de mempool; espere confirmación y concilie transferencias, saldos, allowances y bits.
El sigDeadline de AllowanceTransfer limita cuándo el permit firmado puede crear o actualizar autoridad almacenada; expiration limita cuánto tiempo puede gastarse. El deadline de SignatureTransfer limita su ejecución única. EIP-712 aporta hash tipado y separación de dominio, no protección contra replay ni seguridad de intención; nonce y plazo de Permit2 establecen esos límites.
Para una wallet contractual, la validez ERC-1271 depende de política isValidSignature, módulos, umbrales y código actuales. Etiquetas, pantallas truncadas y simulaciones satisfactorias son evidencias, no garantías. Desconectar un frontend no revoca aprobación ni firma.
Ejemplos
- Dos registros de allowance. La allowance finita del token a Permit2 parte de
1,000 USDC; unPermitSinglealmacena600 USDCpara spender S. Tras transferir S225 USDC, queda600 - 225 = 375 USDC, mientras una allowance upstream estándar queda1,000 - 225 = 775 USDC. Vencer o revocar 375 no elimina 775; tokens no estándar pueden diferir. - Destinatario e importe de un solo uso. SignatureTransfer firma máximo
250 USDC; la calldata pide180 USDCpara un comercio. Con saldo y allowance upstream suficientes, transfiere 180. El nonce se consume y los70 USDCno son reutilizables. Si calldata designa al atacante, el permit básico no impide esa redirección por el spender vinculado. - Bitmap de nonce no ordenado. Para nonce
513,wordPos = 513 >> 8 = 2,bitPos = 513 & 255 = 1ymask = 1 << 1 = 2. Ejecutar marca bit 1 de palabra 2; repetir 513 falla y nonce512en bit 0 sigue independiente. - Carrera de revocación. Una allowance almacenada es
400 USDC. El owner difunde revocación a cero, pero primero se ejecuta transferencia de300 USDC, dejando100 USDC; después la revocación deja0. Allowance final cero no revierte pérdida de300 USDC; deben conciliarse orden y saldos.
Riesgos
- Chain ID, deployment o código runtime equivocados.
- Verifying contract falso o inesperado.
- Confusión entre AllowanceTransfer y SignatureTransfer.
- Spender o caller malicioso o erróneo.
- Destinatario elegido mediante calldata de ejecución.
- Importe solicitado próximo al máximo firmado.
- Dirección, símbolo, decimales o unidades raw del token erróneos.
- Aprobación ERC-20 upstream persistente o ilimitada.
- Importe downstream o vencimiento excesivo.
- Confusión entre deadline, signature deadline y expiration.
- Nonce ordenado obsoleto o sujeto a carrera.
- Bit bitmap reutilizado o máscara de invalidación excesiva.
- Hash witness o type string exacto incorrectos.
- Entrada batch oculta, duplicada o mal indexada.
- Pantalla del frontend o calldata distinta de la intención.
- Revocación pierde carrera de mempool o MEV.
- Cambio de módulo, firmante, umbral o upgrade ERC-1271.
- Token fee-on-transfer, rebasing, pausado, bloqueado o con callback.
- Deriva de estado, fallo o reorganización tras simulación.
- Confundir confirmación de hardware wallet o desconexión con seguridad.
Errores comunes
- Una firma sin solicitud de gas no puede mover tokens. Otra parte puede pagar el gas.
- La dirección oficial de Permit2 demuestra que spender y destinatario son seguros. Permit2 puede ejecutar fielmente autoridad maliciosa.
- SignatureTransfer y AllowanceTransfer crean el mismo permiso persistente. Uno es de uso único; el otro almacena allowance reutilizable.
- Desconectar o revocar una capa cancela todas las vías y firmas pendientes. Estado upstream, downstream y nonce son distintos y quedan carreras.
- EIP-712, hardware wallet o simulación exitosa prueba intención y finalidad. Mejoran visibilidad o pruebas, pero no sustituyen verificar campos, calldata y estado confirmado.
Temas relacionados
Fuentes
- Overview - Uniswap Developers (consultado: 2026-08-13)
- Allowance Transfer - Uniswap Developers (consultado: 2026-08-13)
- Signature Transfer - Uniswap Developers (consultado: 2026-08-13)
- Deployments - Uniswap Developers (consultado: 2026-08-13)
- PermitHash.sol - Uniswap Permit2 (consultado: 2026-08-13)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (consultado: 2026-08-13)
- ERC-1271: Standard Signature Validation Method for Contracts - Ethereum Improvement Proposals (consultado: 2026-08-13)
- ERC-20: Token Standard - Ethereum Improvement Proposals (consultado: 2026-08-13)