Kurz erklärt:
Permit ist eine in EIP-2612 beschriebene Erweiterung des ERC-20-Token-Standards, die es ermöglicht, Ausgabegenehmigungen (Approvals) durch eine kryptografische Signatur zu erteilen, anstatt eine separate On-Chain-Transaktion zu senden.
Herkunft und Einordnung
Der Standard EIP-2612 wurde 2020 vorgeschlagen und entstand im Umfeld des Ethereum-Ökosystems. Er ergänzt den klassischen ERC-20-Ablauf, bei dem eine Genehmigung über die Funktion approve und eine anschließende Ausführung über transferFrom zwei getrennte Schritte erfordern. Permit fasst die Genehmigung in eine signierte Nachricht zusammen.
Funktionsweise
Bei Permit unterzeichnet der Inhaber eines Tokens eine strukturierte Nachricht nach dem EIP-712-Format. Diese Nachricht enthält unter anderem den Bevollmächtigten, den Betrag, einen fortlaufenden Zähler (Nonce) sowie eine Gültigkeitsfrist (Deadline). Die Signatur wird anschließend an die Funktion permit des Token-Vertrags übergeben, die die Unterschrift prüft und die Genehmigung setzt.
Da die Signatur außerhalb der Kette (off-chain) erzeugt wird, muss der Token-Inhaber die Freigabe nicht selbst als Transaktion senden. Die eigentliche Ausführung kann durch einen Dritten erfolgen, was Permit inhaltlich mit dem Konzept der Meta-Transaktion verbindet.
Anwendungsfälle
Ein häufiger Anwendungsfall ist die Kombination aus Freigabe und Nutzung in einem einzigen Ablauf: Über ein Multicall-Muster kann eine per Permit erteilte Genehmigung und die darauf folgende Aktion, etwa ein Tausch, in derselben Transaktion ausgeführt werden. Dadurch entfällt für den Nutzer eine separate Freigabetransaktion.
Permit vereinfacht zudem Abläufe, bei denen ein Nutzer keine oder nur geringe Bestände an der Basiswährung des Netzwerks besitzt, da die eigentliche Ausführung von einer anderen Adresse übernommen werden kann.
Verbreitung und Varianten
EIP-2612 wird von zahlreichen Token unterstützt, ist aber kein verpflichtender Bestandteil des ERC-20-Standards, sodass nicht jeder Token die Funktion bereitstellt. Neben EIP-2612 existieren verwandte Ansätze für signaturbasierte Genehmigungen, etwa Permit2, das eine einheitliche Genehmigungsschicht unabhängig von der Unterstützung einzelner Token anstrebt.
Häufige Fragen
Was löst Permit im Vergleich zum klassischen Approve?
Beim klassischen ERC-20-Ablauf sind Genehmigung und Ausführung zwei getrennte Transaktionen. Permit erlaubt die Genehmigung per off-chain erzeugter Signatur, sodass die Freigabe nicht als eigene Transaktion gesendet werden muss.
Welche Rolle spielt EIP-712 bei Permit?
Die Genehmigung wird als strukturierte EIP-712-Nachricht signiert. Dieses Format macht die zu unterzeichnenden Daten für den Nutzer les- und prüfbar.
Unterstützt jeder ERC-20-Token Permit?
Nein. EIP-2612 ist eine optionale Erweiterung. Nur Token, die die Funktion implementieren, unterstützen signaturbasierte Genehmigungen nach diesem Standard.
Wozu dienen Nonce und Deadline in einer Permit-Signatur?
Der fortlaufende Zähler (Nonce) verhindert die mehrfache Verwendung derselben Signatur, die Gültigkeitsfrist (Deadline) begrenzt den Zeitraum, in dem die Signatur eingelöst werden kann.
Was ist der Unterschied zu Permit2?
Permit2 ist ein davon getrennter Ansatz, der eine einheitliche Genehmigungsschicht auch für Token bereitstellt, die EIP-2612 selbst nicht implementieren.
Zusammenfassung
Permit nach EIP-2612 ist eine 2020 vorgeschlagene, optionale ERC-20-Erweiterung, die Ausgabegenehmigungen per EIP-712-Signatur statt per separater Transaktion ermöglicht. Sie erlaubt es, Freigabe und Nutzung in einem Ablauf zu bündeln und die Ausführung an Dritte auszulagern.
Weiterführende Quellen
- EIP-2612: Permit Extension for EIP-20 Signed Approvals: eips.ethereum.org
- EIP-712: Typed structured data hashing and signing: eips.ethereum.org