Token approvals en wallethygiëne
Waarom oude approvals een blijvend risico vormen, hoe je ze intrekt en hoe je aparte hot en cold wallets gebruikt.
Token approvals zijn permanente machtigingen zonder vervaldatum waarmee contracten je tokens mogen verplaatsen; onbeperkte approvals van jaren geleden blijven openstaande deuren naar je wallet.
In deze gids
Elke keer dat je een token op een DeFi-app gebruikt – swappen op een DEX, storten in een leenpool, een NFT te koop zetten – teken je eerst een "approval" waarmee je het smart contract van de app toestemming geeft om die token uit je wallet te verplaatsen. Die machtigingen verlopen niet als je klaar bent. Ze stapelen zich jarenlang ongemerkt op, en elk ervan is een openstaande deur naar je wallet die opengaat zodra het goedgekeurde contract ooit kwaadaardig wordt of wordt geëxploiteerd. Wallethygiëne is de routine om approvals zo beperkt mogelijk te verlenen, ze regelmatig in te trekken en wallets zo te scheiden dat geen enkele fout alles kan raken wat je bezit.
Waarom approvals eigenlijk bestaan
Op Ethereum-achtige chains zijn tokens smart contracts die saldo's bijhouden. Een DEX kan niet zomaar jouw USDC pakken wanneer je swapt – tokenstandaarden schrijven voor dat je eerst approve aanroept, waarmee je een specifiek contract (de "spender") machtigt om tot een bepaald bedrag van een bepaalde token namens jou over te boeken. Het contract van de app gebruikt die allowance vervolgens om tijdens de swap tokens op te halen.
Dit is een verstandig ontwerp: contracten kunnen zo op elkaar aansluiten zonder dat ze jouw geld in bewaring hebben. Het probleem zit in twee standaardinstellingen die uit gemak zijn ontstaan:
- Onbeperkte bedragen. Veel apps vragen een in feite oneindige allowance aan, zodat je die token nooit meer hoeft goed te keuren. Eén handtekening, en het contract kan elk bedrag van die token uit je wallet verplaatsen, voor altijd, zonder verdere toestemming.
- Geen vervaldatum. Een approval blijft bestaan totdat je hem expliciet intrekt of hij volledig is opgebruikt. De DEX die je in 2023 één keer hebt geprobeerd, kan vandaag nog steeds een onbeperkte allowance op je USDT hebben.
Bij NFT's is het equivalent – setApprovalForAll – nog ruimer: het geeft een contract met één handtekening controle over elke NFT in een collectie, zowel de huidige als de toekomstige.
Waarom oude approvals een blijvend risico zijn
Een approval is een actieve bevoegdheid, geen historisch overzicht. Of hij gevaarlijk is, hangt volledig af van het contract dat hem bezit – en dat kan veranderen nadat je hebt getekend.
- Protocolexploits. Als een contract dat je hebt goedgekeurd wordt gehackt, kunnen aanvallers met de rechten ervan vaak tokens rechtstreeks uit elke wallet halen die ooit een allowance heeft verleend – niet alleen uit geld dat in het protocol is gestort. Verschillende incidenten van meerdere miljoenen dollars zijn precies zo verlopen: gebruikers die maanden eerder alleen met een protocol hadden geïnteracteerd, verloren tokens die "veilig" in hun eigen wallet stonden.
- Kwaadaardige approvals die je zelf hebt verleend. Drainer-sites vermommen approval-verzoeken als claims, mints of verificaties. De diefstal hoeft niet op het moment van tekenen plaats te vinden – de aanvaller kan wachten en de wallet leegtrekken wanneer het de moeite waard is.
- Upgradebare en verlaten contracten. Sommige contracten kunnen door hun beheerders worden geüpgraded; een approval voor de eerlijke code van vandaag kan een approval worden voor de kwaadaardige code van morgen, door een rug pull of een gecompromitteerde adminsleutel. Verlaten projecten stoppen met patchen, waardoor oude exploits blijvend zijn.
Wat het erger maakt, is onzichtbaarheid. De interface van je wallet toont saldo's, geen allowances. Een wallet kan 50.000 USDC tonen terwijl vijf vergeten contracten elk het recht hebben om dat te pakken. De meeste mensen weten niet wat ze hebben goedgekeurd – en juist daarom is regelmatige controle belangrijk.
Approvals controleren en intrekken
Elke approval en elke intrekking staat on-chain, dus dit is in een middag te verhelpen.
Ze vinden. Tools voor approvalbeheer – Revoke.cash is de bekendste onafhankelijke, en Etherscan en verschillende wallets hebben ingebouwde approvalcheckers – lezen de chain en tonen elke actieve allowance voor je adres: welke token, welk spender-contract, welk bedrag en wanneer verleend. Verwacht een lange lijst als je al een tijdje DeFi gebruikt; tientallen actieve approvals zijn normaal voor een actief adres.
Prioriteren. Je hoeft niet alles in te trekken. Bepaal de volgorde op basis van risico:
- Onbeperkte approvals voor alles wat je niet actief gebruikt – trek die eerst in.
- Approvals voor onbekende of niet te verifiëren contracten – als je je niet kunt herinneren dat je hem hebt verleend of het project niet kunt identificeren, trek hem dan in.
setApprovalForAllop NFT-collecties voor marktplaatsen die je niet meer gebruikt.- Allowances voor grote bedragen op stablecoins en blue-chip-tokens, want die verzilveren drainers het gemakkelijkst.
Een actieve allowance voor een protocol dat je wekelijks gebruikt is een redelijke afweging ten gunste van gemak; dezelfde allowance voor iets wat je één keer hebt aangeraakt is puur nadeel.
De werking en de kosten. Intrekken betekent een transactie sturen die de allowance op nul zet, dus elke intrekking kost gas – op het Ethereum-mainnet doorgaans van ruim onder een dollar tot een paar dollar, afhankelijk van de drukte, en een fractie van een cent op de meeste layer 2's. Houd er rekening mee dat elk paar van token en spender een aparte intrekking is. Als een wallet veel risicovolle approvals bevat maar weinig waarde, kan het goedkoper zijn je activa naar een nieuwe wallet te verplaatsen dan alles in te trekken.
Voortaan. Wanneer een app om een approval vraagt, kies dan liever een aangepast bedrag dat past bij wat je daadwerkelijk transacteert in plaats van de onbeperkte standaard – de meeste wallets laten je de gevraagde allowance aanpassen voordat je tekent. Je betaalt de volgende keer voor een extra approval; dat is de prijs van een kleinere schadeomvang. Nieuwere tokenmechanismen (zoals handtekeningen in Permit2-stijl met een vervaldatum) beperken dit probleem, maar de gewoonte om te controleren en in te trekken blijft nodig voor al het andere.
Wallets scheiden: zet niet alles achter één deur
Approvalhygiëne verkleint het risico per wallet. Scheiding begrenst de schade wanneer die hygiëne faalt. De standaardstructuur kent drie lagen:
- Kluis (cold). Een hardwarewallet-adres met je langetermijnbezit dat bijna niets doet: ontvangen, bewaren en af en toe naar je eigen hot wallet sturen. Het tekent nooit dApp-approvals. Omdat het nooit met contracten interacteert, is het hele aanvalsoppervlak van approvals daarop simpelweg niet van toepassing.
- Dagelijkse hot wallet. Een software- of hardwarematig ondersteunde wallet met een werksaldo – zie het als het contante geld in je zak ten opzichte van je spaarrekening. Deze wallet interacteert met gevestigde protocollen die je regelmatig gebruikt, en de approvals worden volgens een vast schema gecontroleerd.
- Burner. Een wallet voor het risicovolle grensgebied: nieuwe mints, niet-geauditeerde protocollen, het claimen van airdrops, alles waar iemand je naartoe heeft gelinkt. Stort er alleen op wat die specifieke interactie vereist – kost een mint 0,05 ETH, stuur dan 0,06. Als een burner iets kwaadaardigs tekent, verlies je de inhoud van de burner, niet je bezit.
De discipline waarmee dit werkt: waarde stroomt alleen naar beneden. De kluis voedt de hot wallet, de hot wallet voedt burners, en de lagen erboven tekenen nooit iets risicovols. Let op: scheiding betekent aparte herstelzinnen (seed phrases), of in ieder geval bewust gescheiden accounts – tien adressen die uit één herstelzin zijn afgeleid, zijn op het moment dat die herstelzin uitlekt één wallet.
Een onderhoudsroutine die blijft hangen
Hygiëne faalt wanneer ze afhangt van onthouden. Koppel haar liever aan vaste momenten:
- Elk kwartaal: laat je adressen door een approvalchecker lopen en ruim de risicovolle lijst op. Zet het in dezelfde agendaherinnering als andere financiële klusjes.
- Na elk incident of elke schrik: iets geks getekend, een site bezocht die niet goed voelde, een drainerwaarschuwing gezien – controleer die wallet dezelfde dag.
- Nadat je klaar bent met een protocol: je laatste positie op een platform gesloten? Trek de approvals in terwijl je er nog aan denkt.
- Voordat je veel waarde naar een wallet verplaatst: eerst controleren, dan storten.
Vijftien minuten per kwartaal is alle moeite. Vergeleken met het alternatief – ontdekken dat een protocol dat je twee jaar geleden gebruikte gisteravond is geëxploiteerd – is het een van de voordeligste verzekeringen in crypto.
Belangrijkste punten
- Token approvals zijn permanente machtigingen zonder vervaldatum waarmee contracten je tokens mogen verplaatsen; onbeperkte approvals van jaren geleden blijven openstaande deuren naar je wallet.
- Geëxploiteerde, geüpgradede of kwaadaardige contracten kunnen tokens leegtrekken uit elke wallet die ze ooit heeft goedgekeurd – het risico bestaat ook als je geld nooit je adres heeft verlaten.
- Controleer allowances met een approvalchecker en trek in op volgorde van prioriteit: eerst onbeperkte bedragen, onbekende contracten en NFT-
setApprovalForAll-machtigingen. - Kies exacte bedragen boven onbeperkte standaardinstellingen; een beetje extra gas levert een veel kleinere schadeomvang op.
- Scheid je wallets in een kluis-, dagelijkse en burner-wallet, waarbij waarde alleen naar beneden stroomt, zodat één verkeerde handtekening nooit alles kan raken.
Educatieve content, geen financieel advies. Lees de volledige disclaimer.