Nur zu Bildungszwecken; keine Anlageberatung oder Anlageempfehlung. Anlagen können zu Verlusten führen.
Direkte Antwort
Permit2 verbindet zwei getrennte Autorisierungssysteme. AllowanceTransfer speichert eine wiederverwendbare Owner-Token-spender-Allowance mit Betrag, Ablauf und geordneter Nonce. SignatureTransfer verbraucht einen einmal signierten Höchstbetrag mit ungeordneter Bitmap-Nonce und erzeugt keine dauerhafte spender-Allowance. Beide hängen weiterhin von der ERC-20-Allowance des Owners für Permit2 ab.
Eine gaslose Signatur kann Vermögenswerte bewegen, wenn spender oder Relayer die Ausführung bezahlt. Exakte Chain, bereitgestellten Permit2-Code, EIP-712-Domain, Modul, Token, spender, signierten Höchstbetrag, Empfänger-Calldata, Nonce und Uhren prüfen. Der echte Permit2-Vertrag macht bösartige spender, Empfänger, Router oder Witness nicht sicher.
Der Abschluss dieser Überprüfung beweist nicht, dass ein Vermögenswert, eine Transaktion oder ein System sicher ist.
Funktionsweise
chainId, Netzwerk, Permit2-verifyingContract, bereitgestellten Runtime-Code, Token-Adresse und Dezimalstellen, Owner-Wallet-Typ und beabsichtigte Anwendung festlegen. Einen offiziellen Deployment-Eintrag verwenden; bekannte Adresse oder Bezeichnung genügt nicht.- Vorgelagerte ERC-20-Allowance und Saldo des Owners für Permit2 lesen. Endliche oder unbegrenzte Genehmigung und tokenspezifisches Übertragungsverhalten erkennen; dieses Buch überlebt den Ablauf einer Permit2-Signatur oder gespeicherten nachgelagerten Allowance.
- Exakten Pfad und signierten Primary Type erkennen: AllowanceTransfer
PermitSingleoderPermitBatch, beziehungsweise SignatureTransferPermitTransferFromoder dessen Batch- und Witness-Varianten.transferFromnicht als signierten Typ behandeln. - EIP-712-Domain und jeden Nachrichteneintrag decodieren. Bei AllowanceTransfer Token,
uint160 amount,expiration, geordnete Nonce, spender undsigDeadlineprüfen. Bei SignatureTransfer erlaubten Token und Betrag, ungeordnete Nonce, Deadline sowie den über den Caller-Kontext gebundenen spender prüfen. - Ausführungs-Calldata getrennt decodieren. Bei einfachem SignatureTransfer sind
SignatureTransferDetails.toundrequestedAmountAusführungsparameter, keine Felder des signierten Basis-Permits; der angeforderte Betrag muss lediglich unter dem signierten Maximum bleiben. Jeden Batch-Index sowie exakten Witness-Hash und Type String prüfen. - Aktuelle geordnete Allowance-Nonce oder ungeordnetes Bitmap-Wort und Bit abfragen und exakten Caller, Calldata, Chain und Zustand simulieren. Empfänger, Router-Aktionen, Token-Eigenheiten, Saldo und beide Allowance-Bücher abstimmen; Simulation kann sich durch Zustand, Reihenfolge oder Reorganisation ändern.
- Beträge und Laufzeiten minimieren. Bei Verdacht Typed Data aufbewahren und korrekten vorgelagerten Revoke, nachgelagerten Allowance-Revoke oder Nonce-Invalidierung über vertrauenswürdigen Pfad einreichen, als Mempool-Rennen behandeln; Bestätigung abwarten und Übertragungen, Salden, Allowances und Bits abstimmen.
Das sigDeadline von AllowanceTransfer begrenzt, wann das signierte Permit gespeicherte Autorität anlegen oder ändern darf; expiration begrenzt deren Nutzung. Die Deadline von SignatureTransfer begrenzt die einmalige Ausführung. EIP-712 liefert typisierten Hash und Domain-Trennung, nicht Replay-Schutz oder Absichtssicherheit; Permit2-Nonce und -Frist setzen diese Grenzen.
Bei einer Vertrags-Wallet hängt ERC-1271-Gültigkeit von aktueller isValidSignature-Policy, Modulen, Schwellen und Code ab. Labels, abgeschnittene Hardware-Wallet-Anzeigen und erfolgreiche Simulationen sind Indizien, keine Garantien. Das Trennen eines Frontends widerruft weder Genehmigung noch Signatur.
Beispiele
- Zwei Allowance-Bücher. Die endliche Token-Allowance für Permit2 beginnt bei
1,000 USDC; einPermitSinglespeichert600 USDCfür spender S. Nach einer Übertragung von225 USDCdurch S verbleiben600 - 225 = 375 USDC; eine standardmäßige endliche vorgelagerte Token-Allowance wird zu1,000 - 225 = 775 USDC. Ablauf oder Widerruf von 375 beseitigt 775 nicht; nicht standardmäßige Token können abweichen. - Einmaliger Empfänger und Betrag. SignatureTransfer signiert maximal
250 USDC; Calldata fordert180 USDCfür einen Händler. Bei ausreichendem Saldo und vorgelagerter Allowance kann die Ausführung 180 übertragen. Die Nonce wird verbraucht, also sind die ungenutzten70 USDCnicht wiederverwendbar. Nennt die Calldata einen Angreifer, verhindert das Basis-Permit diese Umleitung durch den gebundenen spender nicht. - Ungeordnete Nonce-Bitmap. Für Nonce
513geltenwordPos = 513 >> 8 = 2,bitPos = 513 & 255 = 1undmask = 1 << 1 = 2. Die Ausführung setzt Bit 1 in Wort 2; Wiederholung von 513 scheitert, während Nonce512an Bit 0 unabhängig bleibt. - Widerrufsrennen. Eine gespeicherte Allowance beträgt
400 USDC. Der Owner sendet Widerruf auf null, aber zuerst wird eine Übertragung von300 USDCausgeführt, sodass100 USDCverbleiben; der spätere Widerruf setzt den Rest auf0. Endgültige Allowance null macht den realisierten Verlust von300 USDCnicht rückgängig; Reihenfolge und Salden sind abzustimmen.
Risiken
- Falsche Chain ID, Deployment oder Runtime-Code.
- Gefälschter oder unerwarteter Verifying Contract.
- Verwechslung von AllowanceTransfer und SignatureTransfer.
- Bösartiger oder irrtümlicher spender und Caller.
- Durch Ausführungs-Calldata gewählter Empfänger.
- Angeforderter Betrag nahe dem signierten Maximum.
- Falsche Token-Adresse, Symbol, Dezimalstellen oder Raw-Einheiten.
- Dauerhafte oder unbegrenzte vorgelagerte ERC-20-Genehmigung.
- Übermäßiger nachgelagerter Betrag oder Ablauf.
- Verwechslung von Deadline, Signature Deadline und Expiration.
- Veraltete oder in einem Rennen befindliche geordnete Nonce.
- Wiederverwendetes Bitmap-Bit oder zu breite Invalidierungsmaske.
- Abweichender Witness-Hash oder exakter Type String.
- Versteckter, doppelter oder falsch indexierter Batch-Eintrag.
- Frontend-Anzeige oder Calldata weicht von der Absicht ab.
- Widerruf verliert Mempool- oder MEV-Rennen.
- Änderung von ERC-1271-Modul, Signer, Schwelle oder Upgrade.
- Fee-on-Transfer-, Rebasing-, pausierter, blockierter oder Callback-Token.
- Zustandsdrift, Fehlschlag oder Reorganisation nach Simulation.
- Hardware-Wallet-Bestätigung oder Trennung wird mit Sicherheit verwechselt.
Häufige Irrtümer
- Eine Signatur ohne Gas-Abfrage kann keine Token bewegen. Eine andere Partei kann das Ausführungs-Gas bezahlen.
- Die offizielle Permit2-Adresse beweist, dass spender und Empfänger sicher sind. Permit2 kann bösartige Autorität korrekt ausführen.
- SignatureTransfer und AllowanceTransfer erzeugen dieselbe dauerhafte Berechtigung. Eines wird einmalig genutzt, das andere speichert wiederverwendbare Allowance.
- Trennen oder Widerrufen einer Ebene beendet alle Pfade und ausstehenden Signaturen. Vorgelagerter, nachgelagerter und Nonce-Zustand sind getrennt; Rennen bleiben.
- EIP-712, Hardware-Wallet oder erfolgreiche Simulation beweist Absicht und Finalität. Sie verbessern Sichtbarkeit oder Tests, ersetzen aber keine Prüfung von Feldern, Calldata und bestätigtem Zustand.
Verwandte Themen
Quellen
- Overview - Uniswap Developers (abgerufen am 2026-08-13)
- Allowance Transfer - Uniswap Developers (abgerufen am 2026-08-13)
- Signature Transfer - Uniswap Developers (abgerufen am 2026-08-13)
- Deployments - Uniswap Developers (abgerufen am 2026-08-13)
- PermitHash.sol - Uniswap Permit2 (abgerufen am 2026-08-13)
- EIP-712: Typed structured data hashing and signing - Ethereum Improvement Proposals (abgerufen am 2026-08-13)
- ERC-1271: Standard Signature Validation Method for Contracts - Ethereum Improvement Proposals (abgerufen am 2026-08-13)
- ERC-20: Token Standard - Ethereum Improvement Proposals (abgerufen am 2026-08-13)