Kort fortalt
- En token-godkendelse (approval) giver en smart contract ret til at flytte dine tokens - og den udløber aldrig af sig selv.
- Ubegrænsede 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 værktøjer.
- 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 gennemgå alle netværk årligt.
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å kæden. 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å blokkæden, 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 får tilladelse.
- Token: hvilken ERC-20 token tilladelsen gælder for.
- Amount: maksimalt antal tokens kontrakten må 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, så 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.
Ubegrænsede godkendelser og deres fare
De fleste DeFi-protokoller beder som standard om en ubegrænset 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 brugervenlighed: 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 |
| Ubegrænset approval | 2^256-1 | Høj (ingen re-approve) | Meget høj | Undgå |
| Permit-signatur | Variabel | Høj (ingen gas) | Moderat | Med forsigtighed |
Ubegrænsede approvals: den skjulte risiko
En ubegrænset godkendelse er ikke et problem når du giver den til en velovervejet, auditeret protokol. Problemet opstår når protokollens smart contract opgraderes, 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 ubegrænsede godkendelser. Når Uniswap fx beder om approval, viser transaktionen "Approve USDC" - ikke "Giv ubegrænset 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:
| Hændelse | År | Tab | Metode |
|---|---|---|---|
| BadgerDAO | 2021 | 121 mio. USD | Injiceret ondsindet approval via frontend-angreb |
| Uranium Finance | 2021 | 50 mio. USD | Sårbarhed 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 lærebogseksempel på approval-angreb. Angriberne kompromitterede protokollens frontend via Cloudflare Workers API-nøgle og injicerede et ondsindet script. Scriptet bad brugere om at godkende en ekstra transaktion - som faktisk overførte adgangen til angribernes kontrakt.
Det afgørende: de brugere der mistede penge, var ikke naive. De brugte en legitim, velkendt DeFi-protokol. Men de havde givet ubegrænsede approvals, og angriberne udnyttede netop disse til at tømme wallets. Brugere der ikke havde aktive approvals til den ondsindede kontrakt, mistede intet.
Lektionen fra BadgerDAO
Selv legitime protokoller kan have kompromitterede frontends, opgraderbare kontrakter der overtages, eller API-nøgler der lækker. En approval givet til en legitim kontrakt i dag kan misbruges via en helt anden angrebs-vektor i morgen. Det er argumentet for at begrænse 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+.
Værktøjer: Revoke.cash, Etherscan og Rainbow
Du har to primære veje til at finde og tilbagekalde dine godkendelser: via din wallets egne værktøjer eller via et dedikeret approval-management værktøj. Begge veje fungerer, men har forskellig rækkevidde.
| 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 kædeeksplorer, 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 netværk. Når du går 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 beløb. Du kan filtrere på token-type, kontrakt og beløb. 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 gennemgås.
- Lav en liste over de netværk du har brugt. Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Avalanche - tjek dem alle. Godkendelser er netværksspecifikke.
- Skaf 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
- Åbn 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 øverst.
- Sorter godkendelserne. Prioriter ubegrænsede beløb (vis "Unlimited" først). Dernæst høj-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å kæden. Verificer at godkendelsen forsvinder fra listen.
- Gentag for alle netværk på din liste. En oprydning på Ethereum fjerner ikke godkendelser på Arbitrum.
- Gennemgå 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 initiere tilbagekaldelsen (eller andre transaktioner) uden fysisk adgang til enheden.
Ethereum, Polygon og Arbitrum: netværksforskelle
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 brugeroplevelse 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 mærkbar. Vælg et tidspunkt med lav netværksbelastning - typisk weekends og tidlig morgen europæisk 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-beløbets størrelse eller token-typen. En ubegrænset 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 ubegrænset approval til en høj-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 løsningen. 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 beløbet. 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 urørte.
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 årlige gennemgang
Sæt en fast dato i kalenderen - en gang om året - til at gennemgå alle aktive approvals på alle wallets og alle netværk. Fjern alt du ikke aktivt bruger. Tvivl er et argument for at fjerne: du kan altid godkende igen.
Tjekliste til den årlige approval-oprydning
- Alle aktive wallets gennemgået - inkl. dem du sjældent bruger.
- Alle netværk gennemgået separat (Ethereum, L2'er, sidechains).
- Ubegrænsede approvals tilbagekaldt eller erstattet med begrænsede.
- NFT-approvals (setApprovalForAll) gennemgået separat.
- Tilbagekaldelser verificeret og bekræftet på kæden.
- 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 operatøren 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 også:
- 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: særlig 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 stjålet NFT'er. Værdien af stjålne NFT'er var i hundredvis af ETH. Gennemgå 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å blokkæden. Ifølge Skattestyrelsens vejledning om kryptoaktiver udløses beskatning ved afståelse, og en approval-tilbagekaldelse er ikke en afståelse.
Du betaler gas-gebyret for transaktionen. Noter dette i din dokumentation over blockchain-aktivitet - ikke fordi det udløser skat, men fordi en komplet transaktionshistorik letter det årlige 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 værdioverførsel |
| Tilbagekalde en godkendelse | Nej | Ingen afståelse, kun tilladelsesændring |
| 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 behøver ikke bekymre dig om approvals der. Men gas-gebyrer og transaktioner i din self-custody wallet bør altid dokumenteres.
Kilder og referencer
Denne artikel bygger på officielle kilder, tekniske specifikationer og dokumenterede hændelser:
- 1.Skattestyrelsen, Den juridiske vejledning, afsnit C.B.1.7.4 om kryptoaktiver og beskatning ved afståelse. 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, Bekendtgørelse 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 skatterådgivning. DeFi-protokoller og blockchain-netværk ændrer sig løbende. Kontakter til godkendte rådgivere 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 påvirker, hvilke approval-værktøjer du kan bruge.
Hardware wallet
Hardware wallets og wallet-segmentering som DeFi-sikkerhedsstrategi.
Er krypto sikkert?
Det brede sikkerhedsbillede ud over approval-håndtering.
Kryptoskat i Danmark
Fuld gennemgang af skatteregler for kryptoaktiver og DeFi.
