Kort fortalt
- En token-godkendelse (approval) giver en smart contract ret til at flytte dine tokens - og den udløber aldrig af sig selv.
- Ubegranasede godkendelser dækker hele din beholdning og er den største enkeltrisiko i DeFi-sikkerhed.
- Hacks som BadgerDAO (121 mio. USD) og Uranium Finance skete via misbrugte godkendelser.
- Du tilbagekalder via Revoke.cash, Etherscan Token Approvals eller din wallets egne vaerktoejer.
- Det koster kun et netværksgebyr - under 1 DKK på Layer 2 - og er ikke skattepligtigt.
- God praksis: godkend kun det nødvendige beløb, tilbagekald efter brug, og gennemga alle netværk arligt.
Indholdsfortegnelse
Hvad er en token-godkendelse?
Når du bruger et DeFi-protokol - en decentraliseret børs, et lending-protokol eller en yield-optimizer - skal protokollen have adgang til dine tokens for at gennemføre transaktioner på dine vegne. Den adgang giver du via en token-godkendelse, også kaldet en approval.
Godkendelsen er en separat blockchain-transaktion. Når du klikker "Approve" i din krypto wallet, betaler du et netværksgebyr for at registrere tilladelsen på kaedem. Derefter kan protokollen flytte dine tokens - op til det godkendte beløb - uden at behøve yderligere tilladelse fra dig.
Det kritiske punkt er dette: godkendelsen udløber ikke automatisk. Den eksisterer på blokkaedem, så længe du ikke aktivt tilbagekalder den. Holder du op med at bruge en tjeneste, gælder godkendelsen stadig. Sletter du appen, gælder den stadig. Sælger du dine tokens og køber dem igen, gælder den stadig.
Hvad en godkendelse indeholder
- Owner: din wallet-adresse, der ejer tokens.
- Spender: kontraktadressen der far tilladelse.
- Token: hvilken ERC-20 token tilladelsen gælder for.
- Amount: maksimalt antal tokens kontrakten ma flytte.
Godkendelsen er knyttet til token-typen, ikke til din balance. Har du 0 USDC på tidspunktet for godkendelsen, gælder den stadig. Når du modtager USDC næste gang, kan den godkendte kontrakt straks flytte dem.
ERC-20 approve: den tekniske mekanisme
ERC-20 standarden - den tekniske specifikation bag de fleste tokens på Ethereum og kompatible netværk - definerer tre centrale funktioner til godkendelsessystemet:
| Funktion | Beskrivelse | Gas-forbrug |
|---|---|---|
| approve(spender, amount) | Giver spender tilladelse til at flytte amount tokens | ~45.000 gas |
| allowance(owner, spender) | Returnerer det godkendte beløb for et spender/owner-par | 0 (read-only) |
| transferFrom(from, to, amount) | Spender kalder denne for at flytte tokens fra owner | ~65.000 gas |
Tilbagekaldelse af en godkendelse sker ved at kalde approve(spender, 0) - du sætter det godkendte beløb til nul. Det koster det samme gas som en ny godkendelse: ca. 45.000 gas-enheder. På Polygon og andre Layer 2 netværk er gas-prisen dog langt lavere, sa den reelle omkostning er minimal.
ERC-2612: Permit-funktionen
Nyere tokens implementerer ERC-2612, der introducerer en permit()-funktion. Her kan brugeren signere en approval off-chain (ingen gas) og lade protokollen indsende signaturen. Det er mere brugervenligt, men permit-signaturer kan misbruges via phishing - en grund til altid at verificere smart contracts og sites du forbinder til.
Ubegranasede godkendelser og deres fare
De fleste DeFi-protokoller beder som standard om en ubegranaset godkendelse - teknisk sat til 2^256-1, et astronomisk tal der i praksis betyder "alle tokens du nogensinde vil eje af denne type". Begrundelsen fra protokollerne er brugervenlighedn: du slipper for at godkende igen ved næste transaktion.
| Type | Beløb | Bekvemmelighed | Risiko | Anbefaling |
|---|---|---|---|---|
| Begrænset approval | Præcist beløb | Lav (krav ny godkendelse) | Lav | Foretrukket |
| Ubegranaset approval | 2^256-1 | Hoj (ingen re-approve) | Meget hoj | Undgå |
| Permit-signatur | Variabel | Hoj (ingen gas) | Moderat | Med forsigtighed |
Ubegranasede approvals: den skjulte risiko
En ubegranaset godkendelse er ikke et problem når du giver den til en velovervejet, auditeret protokol. Problemet opstar når protokollens smart contract opgraederes, overtages, eller sårbarheder opdages. Da har angriberen adgang til alt hvad du ejer af den token - ikke kun det du brugte da du godkendte.
De fleste brugere er ikke klar over, de har givet ubegranasede godkendelser. Når Uniswap fx beder om approval, viser transaktionen "Approve USDC" - ikke "Giv ubegranaset adgang til al din USDC for evigt". Teksten i wallet-popuppen er knap nok informativ. Det er et strukturelt problem i DeFi-brugeroplevelsen.
Kendte hacks via approval-udnyttelse
Approval-angreb er ikke teoretiske. De er sket gentagne gange og har kostet brugere hundredvis af millioner dollars. Her er de mest lærerige eksempler:
| Hjaendelse | Ar | Tab | Metode |
|---|---|---|---|
| BadgerDAO | 2021 | 121 mio. USD | Injiceret ondsindet approval via frontend-angreb |
| Uranium Finance | 2021 | 50 mio. USD | Saarbaarhed i kontrakt udnyttede eksisterende approvals |
| Miso (SushiSwap) | 2021 | 3 mio. USD | Ondsindet kode injiceret i frontend, stjal approvals |
| Permit2-phishing | 2023-24 | ~10 mio. USD | Phishing-sider narrede brugere til at signere permit-approvals |
| Rug pulls generelt | Løbende | Milliarder | Dev-kontrol over kontrakt udnytter brugeres approvals |
BadgerDAO-hacket: hvordan det skete
BadgerDAO-hacket i december 2021 er et laerebogseksempel på approval-angreb. Angriberne kompromitterede protokollens frontend via Cloudflare Workers API-noegel og injicerede et ondsindet script. Scriptet bad brugere om at godkende en ekstra transaktion - som faktisk overførte adgangen til angribernes kontrakt.
Det afgaerende: de brugere der mistede penge, var ikke naive. De brugte et legitimt, velkendt DeFi-protokol. Men de havde givet ubegranasede approvals, og angriberne udnyttede netop disse til at tomme wallets. Brugere der ikke havde aktive approvals til den ondsindede kontrakt, mistede intet.
Leektionen fra BadgerDAO
Selv legitime protokoller kan have kompromitterede frontends, opgraderbare kontrakter der overtages, eller API-nogler der laekker. En approval givet til en legitim kontrakt i dag kan misbruges via en helt anden angrebs-vektor i morgen. Det er argumentet for at begranse approvals til det nødvendige og tilbagekalde dem efter brug.
Approval risiko-checker
Brug dette værktøj til at vurdere din aktuelle approval-eksponering og få en anbefaling til handling. Angiv dine tal herunder.
Har du brugt DEX'er på flere netværk, kan det sagtens være 20-40+.
Vaerktoejer: Revoke.cash, Etherscan og Rainbow
Du har to primavere veje til at finde og tilbagekalde dine godkendelser: via din wallets egne værktøjer eller via et dedikeret approval-management vaerktoj. Begge veje fungerer, men har forskellig raekkevidde.
| Værktøj | Netværk | Krav | Fordele |
|---|---|---|---|
| Revoke.cash | 100+ netværk | Wallet-forbindelse | Bredeste netværksstøtte, gratis |
| Etherscan Token Approval | Ethereum | Wallet-forbindelse | Officiel kaedeeksplorer, pålideligt |
| Polygonscan Approvals | Polygon | Wallet-forbindelse | Polygon-specifik, officiel |
| Rainbow Wallet | Multi-chain | Rainbow wallet-app | Ingen ekstern forbindelse nødvendig |
| DeBank Approval | Multi-chain | Wallet-forbindelse | Viser også risiko-vurdering pr. kontrakt |
Advarsel: falske Revoke.cash-sider
Revoke.cash er attraktivt at kopiere for svindlere. Falske sider med næsten identiske URL'er eksisterer. Skriv altid revoke.cash direkte i browserens adressefelt. Brug aldrig links fra sociale medier, Discord eller e-mails. Kontroller at URL'en er præcis korrekt før du forbinder din wallet.
Sådan bruger du Revoke.cash
Revoke.cash er det mest alsidige værktøj og støtter over 100 netvaerk. Når du gar ind på siden, kan du søge på en offentlig wallet-adresse uden at forbinde din wallet - praktisk til at checke en adresse uden at eksponere din wallet til siden. For at tilbagekalde skal du dog forbinde.
Siden viser alle aktive approvals sorteret efter risiko og beloeb. Du kan filtrere på token-type, kontrakt og beloeb. Klik "Revoke" ud for en godkendelse, og din wallet beder dig bekræfte en transaktion. Det er alt.
Trin-for-trin guide til tilbagekaldelse
Selve processen er ikke teknisk kompliceret. Her er den komplette fremgangsmåde for en grundig oprydning:
Forberedelse
- Lav en liste over dine wallets. Inkluder wallets du stadig bruger, wallets du er holdt op med at bruge, og wallets du måske har glemt. Alle skal gennemgas.
- Lav en liste over de netværk du har brugt. Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Avalanche - tjek dem alle. Godkendelser er netvaerksspecifikke.
- Skaff ETH/MATIC/BNB til gas. Du behøver et lille beløb native token på hvert netværk til at betale gas for tilbagekaldelserne.
Selve oprydningen
- Abn Revoke.cash (eller din wallets approval-oversigt). Bekræft URL'en er korrekt, før du forbinder.
- Skift til det første netværk på din liste. I Revoke.cash vælger du netværk i dropdownen oeverst.
- Sorter godkendelserne. Prioriter ubegranasede beloeb (vis "Unlimited" først). Dernæst hoej-risiko kontrakter - nye protokoller, dem du ikke kan huske.
- Tilbagekald en ad gangen. Klik "Revoke", bekræft i din wallet, vent på bekræftelse på kaedem. Verificer at godkendelsen forsvinder fra listen.
- Gentag for alle netværk på din liste. En oprydning på Ethereum fjerner ikke godkendelser på Arbitrum.
- Gennemga også NFT-godkendelser. De er separeret fra token-godkendelser og kræver ekstra opmærksomhed.
Hardware wallet-brugere
Bruger du en hardware wallet som Ledger eller Trezor, bekræfter du tilbagekaldelsen på enhedens fysiske skærm - nøjagtigt som enhver anden transaktion. Hardware wallets giver ingen ekstra beskyttelse mod selve approval-misbruget, men sikrer at ingen kan initierer tilbagekaldelsen (eller andre transaktioner) uden fysisk adgang til enheden.
Ethereum, Polygon og Arbitrum: netvaerksforskelle
Approval-mekanismen er identisk på tværs af EVM-kompatible netværk - det er den samme ERC-20 approve-funktion. Men der er vigtige praktiske forskelle i brugeroplsvelse og omkostning:
| Netværk | Gas-token | Approx. pris pr. revoke | Anbefalede værktøjer |
|---|---|---|---|
| Ethereum | ETH | 10-100 DKK | Revoke.cash, Etherscan |
| Arbitrum One | ETH | 0,5-3 DKK | Revoke.cash, Arbiscan |
| Optimism | ETH | 0,5-3 DKK | Revoke.cash, Optimistic Etherscan |
| Polygon | MATIC/POL | Under 1 DKK | Revoke.cash, Polygonscan |
| Base | ETH | Under 1 DKK | Revoke.cash, Basescan |
| BNB Chain | BNB | 1-5 DKK | Revoke.cash, BscScan |
Den praktiske konsekvens: har du mange approvals på Ethereum mainnet, kan den samlede gas-regning blive maerkabar. Vælg et tidspunkt med lav netværksbelastning - typisk weekends og tidlig morgen europaisk tid. På Layer 2 netværk som Arbitrum og Polygon er gas så billigt at timing næsten er ligegyldig.
Gas-omkostninger: hvad koster oprydningen?
Hvert tilbagekald er en separat blockchain-transaktion og koster gas. Gebyret afhænger udelukkende af netværksbelastningen - ikke af approval-belobets storrelse eller token-typen. En ubegranaset USDC-approval koster det samme at tilbagekalde som en approval på 10 USDC.
Gas-estimater ved normalt belastningsniveau (vejledende)
En praktisk strategi: prioriter approvals efter risiko, ikke efter antal. En ubegranaset approval til en hoej-risiko kontrakt der dækker 100.000 DKK i tokens er værd at tilbagekalde straks - selv til 50 DKK i gas. En begrænset approval til et velkendt protokol kan vente til et billigt gas-vindue.
Er du i tvivl om sikkerheden ved et bestemt DeFi-protokol? Læs om krypto-sikkerhed generelt og hvad du bør checke før du godkender en ny kontrakt.
Best practices fremover
Oprydning af gamle approvals er kun halvdelen af loesningen. Den anden halvdel er at håndtere fremtidige approvals bedre. Her er principperne:
1. Sæt altid et begrænset beløb
Når en protokol beder om godkendelse, kan du i de fleste wallets (MetaMask, Rainbow, Rabby) manuelt ændre belobet. Sæt det til præcis det du skal bruge til transaktionen - ikke mere. Ja, det kræver en ny approval næste gang du bruger protokollen. Det er prisen for at minimere din risiko.
Rabby Wallet er særlig god til dette - den viser præcist hvad du godkender, foreslår begrænsede beløb og advarer om risikable approvals. En lækker mulighed til din første DEX-handel.
2. Tilbagekald umiddelbart efter brug
Er du færdig med et protokol? Tilbagekald approvals nu - ikke "næste gang" eller "når jeg husker det". Det koster et gebyr, men det er din forsikring mod fremtidige kompromitteringer af den kontrakt.
3. Brug separate wallets til DeFi-eksperimenter
En af de mest effektive risikostrategier er wallet-segmentering: en hardware wallet til langsigtede beholdninger og en separat software wallet til DeFi-interaktioner. Er DeFi-walleten kompromitteret, er dine langsigtede beholdninger uspoerte.
4. Verificer altid inden godkendelse
Før du godkender en kontrakt på en ny platform, brug 5 minutter på at verificere smart contracten. Er den auditeret? Hvem er teamet? Er der en bug bounty? Det er ikke paranoia - det er sund praksis.
5. Den arlige gennemgang
Sæt en fast dato i kalenderen - en gang om aret - til at gennemga alle aktive approvals på alle wallets og alle netvaerk. Fjern alt du ikke aktivt bruger. Tvivl er et argument for at fjerne: du kan altid godkende igen.
Tjekliste til den arlige approval-oprydning
- Alle aktive wallets gennemgået - inkl. dem du sjaldent bruger.
- Alle netværk gennemgået separat (Ethereum, L2'er, sidechains).
- Ubegranasede approvals tilbagekaldt eller erstattet med begranasede.
- NFT-approvals (setApprovalForAll) gennemgået separat.
- Tilbagekaldelser verificeret bekræftet på kaedem.
- Gas-udgifter dokumenteret i skatteoptegnelser.
- Næste gennemgang planlagt i kalenderen.
NFT-godkendelser og setApprovalForAll
NFT-godkendelser fungerer anderledes end ERC-20 approvals og er potentielt endnu mere risikable. ERC-721 og ERC-1155 standarderne (de to NFT-standarder) definerer en funktion kaldet setApprovalForAll(operator, approved).
Som navnet antyder giver denne funktion operatoren adgang til alle NFT'er af den pågældende samling i din wallet - ikke kun et specifikt stykke. Handelspladser som OpenSea og Blur bruger den legitimt: det ville være upraktisk at godkende hvert enkelt NFT ved salg. Men det betyder ogsa:
- En enkelt godkendelse dækker alle NFT'er du har og fremtidigt køber i samlingen.
- Kompromitteres handelspladsens kontrakt, gælder din godkendelse for angriberen.
- Mange brugere har aktive setApprovalForAll til tidligere brugte handelspladser.
- Revoke.cash viser NFT-approvals i en separat sektion - husk at tjekke den.
NFT-approvals: serlig risiko
I 2022 misbrugte angribere en OpenSea-migrering til at udnytte gamle setApprovalForAll-godkendelser. Brugere der ikke havde tilbagekaldt approvals til den gamle OpenSea-kontrakt, fik stjalet NFT'er. Værdien af stjalne NFT'er var i hundredvis af ETH. Gennemga dine NFT-approvals med ekstra omhu.
Skat og dokumentation i Danmark
En tilbagekaldelse af en token-godkendelse er ikke en skattepligtig hændelse. Der sker ingen afståelse af aktiver - du ændrer kun en tilladelse registreret på blokkaedem. Ifølge Skattestyrelsens vejledning om kryptoaktiver udløses beskatning ved afståelse, og en approval-tilbagekaldelse er ikke en afstaelse.
Du betaler gas-gebyret for transaktionen. Noteer dette i din dokumentation over blockchain-aktivitet - ikke fordi det udloser skat, men fordi en komplet transaktionshistorik lettetr det arlige skatteregnskab. Læs mere om kryptoskat i Danmark for en fuld gennemgang af hvad der er og ikke er skattepligtigt.
| Handling | Skattepligtig? | Bemærkning |
|---|---|---|
| Give en token-godkendelse | Nej | Ingen vaerdioverfoersel |
| Tilbagekalde en godkendelse | Nej | Ingen afståelse, kun tilladelsesaendring |
| Gas-gebyr ved tilbagekald | Nej (direkte) | Dokumenter dog gebyret |
| Token-handel via DeFi | Ja | Selve handlen er skattepligtig afståelse |
Bruger du en centraliseret børs ved siden af DeFi? Børsen håndterer normalt godkendelser internt og du behover ikke bekymre dig om approvals der. Men gas-gebyrer og transaktioner i din self-custody wallet bor altid dokumenteres.
Kilder og referencer
Denne artikel bygger på officielle kilder, tekniske specifikationer og dokumenterede haendelser:
- 1.Skattestyrelsen, Den juridiske vejledning, afsnit C.B.1.7.4 om kryptoaktiver og beskatning ved afstaelse. info.skat.dk. Opdateret 2024.
- 2.Finanstilsynet, "Kryptoaktiver - hvad skal du være opmærksom på?" Vejledning til investorer om risici ved kryptoaktiver og DeFi-protokoller. finanstilsynet.dk.
- 3.Europa-Parlamentet og Rådets forordning (EU) 2023/1114 om markeder for kryptoaktiver (MiCA). EUR-Lex, L 150, 9. juni 2023. Relevant for regulering af DeFi-relaterede tjenesteydelser.
- 4.EIP-20: Token Standard (Ethereum Improvement Proposal). Fabian Vogelsteller, Vitalik Buterin. ethereum.org. Den tekniske specifikation for approve/allowance-mekanismen.
- 5.EIP-2612: permit - 712-signed approvals. Martin Lundfall. Ethereum.org. Specifikation for gasless permit-funktionen og dens sikkerhedsovervejelser.
- 6.Retsinformation.dk, Bekendtgorelse om finansiel virksomhed (hvidvaskloven), relevant for dokumentationskrav ved kryptovaluta-transaktioner i Danmark.
- 7.BadgerDAO Post-Mortem, Blocksec Security Analysis af BadgerDAO-hacket, december 2021. Dokumentation af approval-misbruget på 121 mio. USD.
Ansvarsfraskrivelse: Denne artikel er udarbejdet til kryptoinvestering.dk som generel information og er ikke individuel investerings-, sikkerheds- eller skatteraadgivning. DeFi-protokoller og blockchain-netvaerk ændrer sig loebende. Kontakter til godkendte rdagivere og officielle myndighedskilder anbefales for konkrete situationer. Ingen af de nævnte værktøjer eller protokoller er en anbefaling fra redaktionen.
Læs videre
Hvad er DeFi?
Introduktion til decentraliseret finans og protokollerne bag.
Ethereum
Forstå Ethereum og smart contracts som fundament for approvals.
Krypto wallets
Valg af wallet pavirker, hvilke approval-vaerktoejer du kan bruge.
Hardware wallet
Hardware wallets og wallet-segmentering som DeFi-sikkerhedsstrategi.
Er krypto sikkert?
Det brede sikkerhedsbillede ud over approval-haandtering.
Kryptoskat i Danmark
Fuld gennemgang af skatteregler for kryptoaktiver og DeFi.
