
Token-Genehmigungen aus SSP widerrufen
Jedes Mal, wenn du auf einer EVM-Chain einen Swap, eine Einzahlung oder ein NFT-Listing bestätigst, gibst du dem dApp die Erlaubnis, in deinem Namen einen bestimmten ERC-20-Token zu bewegen. Diese Berechtigungen — Approvals oder Allowances genannt — bleiben on-chain bestehen, nachdem die Transaktion abgewickelt ist. Monate später kann der Vertrag, dem du im März vertraut hast, im Juni immer noch berechtigt sein, diesen Token zu leeren. Die Lösung ist einfach: Widerrufe Genehmigungen, die du nicht mehr brauchst. Diese Anleitung zeigt dir, wie du das aus SSP heraus tust, dem selbstverwahrenden 2-von-2 Wallet, in dem jede Transaktion (Widerrufe inklusive) von deinem SSP Key mit-signiert wird.
Falls das Konzept neu für dich ist, lies zuerst Token-Genehmigungen: Die Berechtigungen, die du immer wieder erteilst. Dort wird erklärt, warum Approvals existieren und warum unbegrenzte Allowances die Standard-Angriffsfläche in DeFi sind. Dieser Artikel ist die Aufräum-Ergänzung dazu.
Eine kurze Zusammenfassung
Wenn du einen approve(spender, amount)-Aufruf signierst, hält der Token-Vertrag fest, dass spender (typischerweise ein Router-, Vault- oder Marketplace-Vertrag) bis zu amount dieses Tokens von deiner Adresse transferieren darf. Viele dApps fordern 2^256 - 1 an — praktisch unbegrenzt — um dir bei künftigen Interaktionen Gas zu sparen. Dieser Komfort ist zugleich das Risiko: Wird der Spender-Vertrag später kompromittiert, oder hörst du auf, das dApp zu nutzen, während die Allowance bestehen bleibt, kann ein Angreifer den gesamten Bestand jederzeit abziehen.
Der Widerruf macht diese Erteilung rückgängig. Er hebt vergangene Transfers nicht auf und "löscht" nichts — er setzt die Allowance einfach wieder auf null.
Wie ein Widerruf technisch funktioniert
Ein Widerruf ist nur eine weitere Transaktion. Du rufst approve(spender, 0) auf demselben Token-Vertrag und auf derselben Chain auf, auf der die ursprüngliche Genehmigung erteilt wurde. Dieser einzige Funktionsaufruf schreibt eine neue 0 in das allowance[owner][spender]-Mapping des Vertrags und überschreibt damit den alten Wert.
Ein paar mechanische Details, die du verinnerlichen solltest:
- Ein Widerruf pro Chain pro Token-Spender-Paar. Hast du einen USDC-Spender auf Ethereum und denselben Spender auf Polygon genehmigt, brauchst du zwei Widerrufs-Transaktionen — eine pro Chain. Allowances werden nicht über Chains hinweg geteilt.
- Der Widerruf ist eine eigenständige Transaktion. Er kostet Gas wie jeder Transfer. Plane das ein: Halte das native Asset der jeweiligen Chain bereit (ETH auf Ethereum, MATIC auf Polygon usw.), um die Gebühr zu decken.
- Es kann günstiger sein, als du befürchtest. Ein Widerruf ist ein einfacher Schreibvorgang, oft günstiger als ein Swap. Auf Layer 2 wie Base liegt er meist im Cent-Bereich.
- SSP signiert weiterhin mit. Da SSP ein 2-von-2 Wallet ist, durchläuft die Widerrufs-Transaktion denselben Ablauf wie jede andere: Deine Extension schlägt sie vor, dein SSP Key prüft sie und signiert sie mit. Dein Schutz erstreckt sich auf das Aufräumen selbst — kein einzelnes Gerät kann eigenmächtig widerrufen, und kein einzelnes Gerät kann dazu verleitet werden, etwas als Widerruf getarntes zu genehmigen.
Zwei Wege zum Widerruf
Du hast zwei gleichwertige Wege, Genehmigungen aus SSP heraus zu widerrufen. Wähle den, der zur Situation passt.
Weg 1: Einen seriösen Block-Explorer benutzen
Das ist der manuelle, transparente Weg. Nützlich, wenn du den genauen Token und Spender kennst, den du widerrufen willst, oder wenn du dich nicht mit einem Drittanbieter-Tool verbinden möchtest.
- Öffne die Vertragsseite des Tokens auf dem passenden Explorer:
- Ethereum: etherscan.io
- Polygon: polygonscan.com
- Base: basescan.org
- BNB Smart Chain: bscscan.com
- Avalanche: snowtrace.io
- Wechsle auf den Reiter Contract und dann auf Write Contract (oder Write as Proxy, falls der Token ein Proxy-Vertrag ist — die meisten großen Stablecoins sind das).
- Suche die
approve-Funktion. Die Eingaben sindspender(die Adresse, die du widerrufen willst) undamount(die neue Allowance). - Setze
amountauf0. Füge die Spender-Adresse ein — kopiere sie aus deiner früheren Transaktionshistorie, tippe sie nie aus dem Gedächtnis. - Verbinde deine Wallet. Die meisten Explorer unterstützen WalletConnect, die empfohlene Methode, SSP zu verbinden. Bestätige die Verbindung in deiner Extension.
- Klicke auf Write. Der Explorer baut die Transaktion
approve(spender, 0)und übergibt sie an SSP. Die SSP-Extension zeigt dir die Aufruf-Details; dein SSP Key signiert mit; der Widerruf wird gesendet.
Dieser Weg ist ausführlich, lässt aber keinen Zweifel daran, was du signiert hast.
Weg 2: Ein dediziertes Widerruf-Tool benutzen
Für die meisten Nutzer ist das die praktische Option. revoke.cash ist das weit verbreitete Open-Source-Tool für diese Aufgabe. Es scannt deine Adresse über die unterstützten Chains hinweg, listet jede aktive Allowance auf, markiert riskante (unbegrenzte Beträge, unbekannte Verträge) und ermöglicht dir, sie — einzeln oder im Batch — über deine verbundene Wallet zu widerrufen.
Der Ablauf:
- Öffne
revoke.cashdirekt im Browser. Lege ein Lesezeichen für die echte Domain an und rufe sie nur darüber auf. Phishing-Kopien von Widerruf-Tools existieren genau deshalb, weil Nutzer dort schon bereit sind, Transaktionen zu signieren. - Verbinde dich per WalletConnect, scanne dann den QR-Code oder kopiere die URI in SSP.
- Stelle den Chain-Wähler auf die Chain um, die du auditen willst. revoke.cash holt deine Approvals auf dieser Chain.
- Sichte die Liste. Jede Zeile zeigt den Token, den Spender, die Allowance-Menge und meist ein Label für das dApp.
- Klicke auf Revoke neben allem, was du nicht mehr nutzt. Jeder Widerruf ist eine eigene
approve(spender, 0)-Transaktion, mit-signiert von SSP.
Ein praktischer Audit-Ablauf
Reserviere ein- oder zweimal im Jahr 20 Minuten und gehe Folgendes durch:
- Verbinde SSP mit revoke.cash über WalletConnect.
- Sichte deine aktiven Approvals auf jeder Chain, die du genutzt hast. Beginne mit Ethereum — historisch der dichteste Approval-Graph — und arbeite dich dann durch Polygon, Base, BNB Smart Chain und Avalanche.
- Greife zuerst die riskantesten Einträge ab. Sortiere oder überfliege die Liste nach unbegrenzten Allowances und unbekannten dApp-Namen. Ein Protokoll, durch das du 2024 einmal getauscht und das du seitdem nie wieder angefasst hast, ist ein perfekter Kandidat. Genauso jeder Vertrag, den du gar nicht identifizieren kannst.
- Widerrufe. Bestätige die Transaktion in deiner SSP-Extension; der SSP Key fordert dich zur Mit-Signatur auf; der Widerruf wird gesendet.
- Signiere auf dem SSP Key mit. Das ist der Moment, das Ziel doppelt zu prüfen. Der SSP Key zeigt den Vertrag, den du aufrufst, und die Funktion — bestätige, dass beides deiner Absicht entspricht.
- Wiederhole pro Chain. Allowances sind chain-spezifisch. Nimm nicht an, dass ein Widerruf auf Ethereum Polygon mit aufräumt.
Du musst nicht bei null anfangen. Ziel ist, Allowances auf Verträgen zu lassen, die du aktiv nutzt, und den Rest auf null zu setzen.
Vorsichtsmaßnahmen
- Domain-Hygiene. Verwende ausschließlich die offizielle Domain
revoke.cash. Phishing-Klone zielen genau auf diesen Ablauf, weil der Nutzer ohnehin schon im Transaktions-Signier-Modus ist. Lege ein Lesezeichen an; prüfe die URL-Leiste, bevor du dich verbindest. - Realität pro Chain. Ein Widerruf einer USDC-Genehmigung auf Ethereum berührt die USDC-Genehmigung auf Polygon nicht, auch wenn der Token im Portfolio "gleich aussieht". Gehe jede Chain explizit durch.
- Gas-Budget. Der Widerruf kostet Gas. Auf Ethereum kann ein Stau angesammelter Widerrufe ins Gewicht fallen; mache sie, wenn das Gas ruhig ist. Auf Layer 2 sind die Kosten vernachlässigbar.
- Prüfe immer den Spender. Bevor du irgendeine "Widerrufs"-Transaktion signierst, vergewissere dich, dass die Spender-Adresse im Aufruf mit dem Vertrag übereinstimmt, den du widerrufen wolltest. Eine bösartige Seite könnte ein gefälschtes Widerrufs-UI präsentieren, das in Wahrheit eine neue Genehmigung an einen Angreifer ausstellt. Der Funktionsname (
approve) und der Betrag (0) im SSP-Key-Prompt zu lesen, ist deine letzte Verteidigungslinie. - Permits sind etwas anderes. Einige Tokens (USDC, DAI-Varianten) unterstützen
permit— off-chain Signaturen, die wie Approvals wirken. revoke.cash zeigt bekannte Permit-basierte Erteilungen, soweit möglich; behandle alles, was du nicht erkennst, genau wie eine on-chain Allowance.
Der 2-von-2-Vorteil beim Aufräumen
Das ist der oft übersehene Punkt: Ein Widerruf in SSP ist kein einzelner Klick auf einem einzigen Gerät. Deine Extension entwirft den Widerruf, kann ihn aber nicht allein senden. Dein SSP Key muss mit-signieren, und genau bei dieser Mit-Signatur prüfst du, was tatsächlich eingereicht wird. Wäre deine Extension je kompromittiert und versuchte, einen bösartigen "Widerruf" einzureichen, der in Wahrheit eine frische Genehmigung wäre, würde der SSP Key die echte Funktion und den echten Betrag auf seinem Display anzeigen. Zwei Geräte, zwei Gelegenheiten, ein Problem zu erkennen.
Regelmäßige Approval-Hygiene ist die DeFi-Gewohnheit mit dem höchsten Hebel, die die meisten Nutzer auslassen. Setze dir einen Kalender-Reminder, mache das Audit, schlafe besser. Und lies die Serie weiter — beginne mit Ethereum in SSP, wenn du die Chain-spezifischen Details verankern willst, oder schau noch einmal in Token-Genehmigungen: Die Berechtigungen, die du immer wieder erteilst, um dir vor Augen zu führen, warum das wichtig ist.


