Skip to content
Fortgeschrittenen-Guide

Token-Freigaben erklärt: Allowances und Widerruf

Was eine ERC-20-Freigabe einer fremden Adresse erlaubt, warum unbegrenzte Allowances mehr Angriffsfläche bieten und was ein Widerruf ändert und was nicht.

8 Min. LesezeitEthereumERC-20Sicherheit

Eine Token-Freigabe (Approval) ist eine Erlaubnis, die im Contract eines ERC-20-Tokens gespeichert wird. Sie erlaubt genau einer Adresse, bis zu einem festgelegten Betrag deiner Token in deinem Namen zu bewegen. Die Freigabe selbst bewegt nichts, und sie ist auch kein Generalschlüssel zu deiner Wallet: Sie gilt für einen Token, eine Adresse und ein Netzwerk.

Meist begegnet dir so eine Freigabe, wenn eine DeFi-Anwendung vor einem Swap oder einer Einzahlung um Erlaubnis fragt. Bei der Standardfunktion approve ist diese Abfrage eine eigene On-Chain-Transaktion, und die Berechtigung bleibt bestehen, bis jemand sie ändert. Hier geht es um den Mechanismus und seine Risiken, nicht darum, ob sich eine bestimmte App lohnt.

Was ist eine ERC-20-Allowance?

Die Allowance ist die Zahl hinter der Freigabe: wie viele Token eine berechtigte Adresse noch vom Guthaben des Besitzers abziehen darf. ERC-20 ist der Standard, dem die meisten austauschbaren Token auf Ethereum folgen, und er regelt das in wenigen Zeilen. Schon die Kurzfassung des Standards sagt, Token können so freigegeben werden, dass ein Dritter sie on-chain ausgeben darf (EIP-20).

Besitzer, Token-Contract und Spender

Beteiligt sind drei Parteien. Wer sie durcheinanderbringt, versteht den Rest nicht.

  • Besitzer (Owner): die Adresse, auf der die Token liegen, meist die Adresse deiner Wallet.
  • Token-Contract: der Smart Contract, der die Guthaben eines Tokens verwaltet. Er speichert auch jede Allowance für diesen Token.
  • Spender: die Adresse, die die Erlaubnis erhält. Der Begriff stammt aus dem englischen Standard („to spend“, ausgeben) und hat nichts mit Spenden zu tun. Oft ist das der Smart Contract einer App, der Standard akzeptiert aber jede Adresse, auch eine, hinter der ein Mensch steht.

Jede Allowance gehört zu genau einer Kombination aus Besitzer, Token und Spender, und zwar auf einer Chain. Wer einen Spender für Token A freigibt, gibt ihm nichts für Token B. Auch auf ein anderes Netzwerk überträgt sich eine Freigabe aus dem Ethereum-Mainnet nicht, selbst wenn der Token dort gleich heißt: Das ist ein anderer Contract mit eigenen Einträgen. Und der Spender ist eine Adresse, keine Website. Die Domain in deinem Browser verrät nichts Verlässliches darüber, welchen Contract du tatsächlich freigegeben hast.

Approve und transferFrom

EIP-20 legt drei Funktionen fest, die zusammenspielen (EIP-20, ethereum.org: ERC-20):

  • approve(spender, value) schickt der Besitzer. Damit legt er fest, wie viel der Spender nehmen darf.
  • allowance(owner, spender) liest aus, wie viel von dieser Erlaubnis noch übrig ist.
  • transferFrom(from, to, value) ruft der Spender auf. Erst damit bewegt er tatsächlich Token vom Guthaben des Besitzers, innerhalb der Allowance.

Ein ausgedachtes Beispiel, keine echte Wallet: Du gibst einem Spender 100 Token frei. Es passiert nichts. Später ruft der Spender transferFrom für 30 davon auf. Fragst du danach allowance ab, kommt 70 heraus. Diese 70 kann der Spender auf einmal oder in mehreren Schritten nutzen, ohne dich erneut zu fragen.

Begrenzte und unbegrenzte Freigaben

Viele Apps fragen nicht genau den Betrag an, den eine Aktion braucht. Sie wollen eine unbegrenzte Allowance, also eine Zahl, die praktisch nie aufgebraucht ist. Laut ethereum.org machen Projekte das, damit du nur einmal freigibst und nur einmal die Transaktionsgebühr zahlst, statt vor jeder Nutzung erneut (ethereum.org: How to revoke token access). Manche Wallets lassen dich den Betrag in der Abfrage selbst ändern.

Was die Zahl begrenzt

Die Allowance ist eine Obergrenze. Sie sagt, wie viel der Spender bewegen darf, nicht wie viel er bewegt hat. Eine hohe Allowance allein heißt nicht, dass auch nur ein Token deine Wallet verlassen hat.

Sie legt aber fest, wie weit ein Problem reichen kann. Mit einer unbegrenzten Allowance kann der Spender jeden Token dieser Art bewegen, der auf der Adresse liegt, auch solche, die erst später ankommen. Ethereum.org weist darauf hin, dass das sogar gilt, nachdem du dein Guthaben von der Plattform zurück in die Wallet abgezogen hast. Und Contract-Berechtigungen haben kein Ablaufdatum: Eine Freigabe von vor Jahren lässt sich heute noch nutzen (ethereum.org: How to revoke token access).

Wie viel das ausmacht, hängt am Spender. Ein Contract, der immer nur zieht, was du angefordert hast, ist ein anderer Fall als einer mit Bug, einer, den jemand anderes per Upgrade umbauen kann, oder Code, der gezielt freigegebene Guthaben abräumt. Die Zahl zeigt das größtmögliche Risiko. Einen Verlust sagt sie nicht voraus.

Wie prüfst du bestehende Freigaben?

Allowances liegen on-chain, jeder kann sie also auslesen. Außerdem muss jeder erfolgreiche approve-Aufruf ein öffentliches Approval-Event auslösen (EIP-20). Genau diese öffentlichen Daten machen es möglich, dass Block-Explorer und spezielle Approval-Checker anzeigen, welche Allowances eine Adresse vergeben hat. Ethereum.org nennt mehrere solcher Tools (ethereum.org: How to revoke token access); für keines davon übernimmt dieser Guide eine Gewähr.

Netzwerk, Token und Spender abgleichen

Eine Liste von Freigaben hilft nur, wenn du sie im richtigen Zusammenhang liest:

  • Netzwerk. Ein Checker zeigt die Freigaben der Chain, die du ausgewählt hast. Das Beispiel von ethereum.org: Bist du mit dem Ethereum-Mainnet verbunden, siehst du Ethereum-Contracts, keine auf Polygon. Jedes weitere Netzwerk musst du extra prüfen.
  • Adresse. Prüf, ob die untersuchte Adresse wirklich die ist, auf der die Token liegen. Viele nutzen mehr als eine.
  • Spender. Lies die Adresse des Spenders, nicht nur die Bezeichnung daneben. Ein bekannter App-Name beweist nicht, dass dahinter der Contract steckt, den du freigeben wolltest, und erst recht nicht, dass er sicher ist.
  • Betrag. Achte darauf, ob noch eine feste Zahl übrig ist oder praktisch unbegrenzt.

Ruf den Checker über ein Lesezeichen oder eine selbst geprüfte Adresse auf, nicht über einen Link, den dir jemand geschickt hat.

Was passiert, wenn du eine Freigabe widerrufst?

Ein Widerruf setzt die Allowance für einen Token und einen Spender auf null zurück. Eine eigene Widerrufsfunktion kennt ERC-20 nicht. Praktisch ist ein Widerruf deshalb schlicht ein approve-Aufruf mit dem Wert 0, der den bisherigen Wert überschreibt (EIP-20).

Die Allowance auf null setzen

Weil sich dabei Daten on-chain ändern, ist der Widerruf eine neue Transaktion. Deine Wallet fragt nach einer Bestätigung, und wie jede Transaktion kostet auch diese eine Netzwerkgebühr. Im Ethereum-Mainnet zahlst du die in ETH, wie der Guide zu Ethereum-Gasgebühren erklärt. Laut ethereum.org dauert die Verarbeitung je nach Netzwerk eine bis mehrere Minuten. Danach empfiehlt die Seite, den Checker neu zu laden und nachzusehen, ob der Eintrag verschwunden ist (ethereum.org: How to revoke token access).

Solange die Transaktion nicht in einem Block steht, gilt die alte Allowance weiter. Ein Widerruf wirkt nur nach vorn. Er erstattet nicht die Gebühr der ursprünglichen Freigabe, und er holt nichts zurück, was der Spender schon bewegt hat.

Ein Limit senken oder ersetzen

Ein normaler approve-Aufruf addiert oder subtrahiert nichts. Er ersetzt die bisherige Allowance (EIP-20). Willst du von 100 auf 50, setzt du 50 und ziehst nicht 50 ab.

Direkt von einem Wert über null auf einen anderen Wert über null zu wechseln, hat eine bekannte Schwachstelle. Ein Spender, der die Änderung kommen sieht, könnte noch schnell die alte Allowance nutzen, bevor die neue bestätigt ist, und danach zusätzlich die neue. EIP-20 sagt deshalb, Oberflächen sollten die Allowance erst auf 0 und dann auf den neuen Wert setzen. Der Token-Contract selbst soll das laut Standard aber nicht erzwingen, damit er mit älteren Contracts kompatibel bleibt. Einzelne Token können approve trotzdem auf eigene Weise umsetzen. Geh also nicht davon aus, dass jeder Token und jede Wallet eine Änderung gleich behandelt.

Was ein Widerruf nicht leistet

Ein Widerruf ist bewusst eng gefasst. Er ändert eine Zahl in einem Token-Contract auf einer Chain, sonst nichts.

Eine dApp trennen ist etwas anderes

Trennst du deine Wallet von einer Website, endet nur die Verbindung zwischen Seite und Wallet. Eine Allowance, die du während der Verbindung erteilt hast, bleibt davon unberührt, und der Spender kann sie weiter nutzen. Genau das steht auch in den FAQ von ethereum.org (ethereum.org: How to revoke token access).

Ein Widerruf lässt außerdem Folgendes, wie es ist:

  • Frühere Transfers. Token, die ein Spender schon bewegt hat, kommen nicht zurück.
  • Offene Positionen. Laut ethereum.org beendet ein Widerruf kein Staking, Pooling oder Lending. Du bleibst in diesen Positionen.
  • Eine kompromittierte Wallet. Wer deinen Private Key oder deine Seed Phrase hat, schickt deine Token per gewöhnlichem Transfer weg und braucht dafür keine Allowance.
  • Signierte Freigaben und NFT-Freigaben. Manche Token akzeptieren eine Freigabe auch als signierte Nachricht statt als Transaktion (EIP-2612), und NFTs haben eigene Freigabefunktionen. Eine auf null gesetzte ERC-20-Allowance macht eine noch nicht genutzte Signatur nicht ungültig und lässt NFT-Freigaben unberührt.

Was der Token-Check von CoinVett zeigt und was nicht

Der Token Safety Check von CoinVett schaut sich einen Token-Contract an: Signale wie Honeypot-Verhalten, Mint-Funktionen, Proxy-Konstruktionen und wie stark die Bestände konzentriert sind. Wie du diese Signale einzeln liest, steht im Guide zum Token-Sicherheitscheck.

Das betrifft den Token. Deine Allowances betreffen dich: welchen Spendern du für welchen Token auf welcher Chain etwas erlaubt hast. Ein Token mit unauffälligem Contract-Scan kann trotzdem mit einer unbegrenzten Freigabe an einen Spender in deiner Wallet liegen, dem du nicht mehr traust. Der Token Safety Check ist keine Liste deiner Freigaben und keine Möglichkeit, sie zu widerrufen.

Ein Detail sorgt oft für Verwirrung. Natives ETH ist kein ERC-20-Token, obwohl damit das Gas auf Ethereum bezahlt wird, und hat deshalb keine Allowances. Apps, die ETH im ERC-20-Format brauchen, nutzen Wrapped Ether (WETH), und für WETH gibt es wie für jeden ERC-20-Token Freigaben (ethereum.org: WETH).

Jede einzelne Freigabe ist mit vier Angaben vollständig beschrieben: Netzwerk, Token, Adresse des Spenders und noch erlaubter Betrag. Zusammen sagen sie genau, was jemand anderes von deiner Adresse bewegen kann. Ein Widerruf ändert das ab dem Moment, in dem er bestätigt ist, zum Preis einer Transaktionsgebühr. Was vorher war, bleibt.

Hinweis: Die Token-Beträge im Beispiel sind ausgedacht; die Quellen sind im Text verlinkt. Nur zur Information, keine Anlageberatung.

Häufige Fragen

Widerruft das Trennen der Wallet eine ERC-20-Freigabe?

Nein. Die Verbindung zwischen Website und Wallet ist etwas anderes als die Allowance, die im Token-Contract gespeichert ist. Der Spender kann diese Allowance weiter nutzen, bis sie mit einer On-Chain-Transaktion geändert wird, etwa mit einer, die sie auf null setzt.

Bewegt ein Widerruf meine Token oder macht er alte Transfers rückgängig?

Weder noch. Der Widerruf setzt die Allowance für diesen Token und diesen Spender auf diesem Netzwerk auf null, sodass der Spender sie ab dann nicht mehr nutzen kann. Deine Token bleiben, wo sie sind, frühere Transfers werden nicht zurückgedreht, und der Widerruf selbst kostet in der Regel eine Netzwerkgebühr.

Laufen unbegrenzte Token-Freigaben automatisch ab?

Nein. Eine gewöhnliche ERC-20-Allowance hat kein Ablaufdatum. Sie gilt, bis sie aufgebraucht oder geändert wird, und eine unbegrenzte wird realistisch nie aufgebraucht. Sie bleibt also nutzbar, bis sie ersetzt oder widerrufen wird. Andere Arten von Berechtigungen können eigenen Regeln folgen.

Passende Coins zum Vertiefen

Du willst tiefer einsteigen? Öffne diese Coin-Seiten für Marktdaten und KI-Analysen.

Verwandte Guides

Diese Guides greifen ähnliche Themen auf und passen gut als nächster Schritt.

Bereit, das Gelernte umzusetzen?

Der Krypto-Profil-Finder hilft dir, auf Basis deiner Antworten eine edukative Profilkategorie zu erkunden.

Weiterlernen

Was ist Bitcoin? Die Kurzfassung

Nächster Guide →
Redaktionsteam

CoinVett Team

Das CoinVett-Redaktionsteam verbindet Kryptomarkt-Expertise mit KI-gestützten Analyse-Tools.

Diese Website verwendet nur technisch notwendige Cookies. Kein Tracking, kein Analytics.