Prečo robiť pravidelný audit peňaženky
Ekosystém krypta je dynamický a povolenia (approvals) udelené smart kontraktom sa časom hromadia. Mnohé sú „nekonečné“ (unlimited), viazané na neprehľadné proxy a v čase sa mení aj samotný kód (upgradeable implementácie). Pravidelný audit peňaženky cez bezpečnostné dashboardy a nástroje typu revoke minimalizuje riziko prázdnej peňaženky po exploite dApp, phishingu alebo chybnej integrácii. Tento článok popisuje, čo presne kontrolovať, ako čítať výsledky a aké rozhodnutia robiť.
Čo sú to approvals a prečo sú rizikové
- ERC-20 allowance: povolenie, aby adresovaný kontrakt (spender) mohol míňať vaše tokeny. Typicky je nastavené na „max uint“ (nekonečné) pre pohodlie UX.
- ERC-721/1155 setApprovalForAll: globálne oprávnenie presúvať všetky NFT/partie jedného kontraktu. Pri útoku stačí jediný transferFrom.
- Permit / Permit2: podpisom (EIP-2612, Permit2) udeľujete off-chain schválenie, ktoré sa on-chain uplatní neskôr. Skvelé pre UX, no lákavé pre phisherov (nekonečné a bez interakcie peňaženky pri samotnej úhrade).
- Session/Delegation: herné dApps a nástroje používajú dočasné „session keys“, delegácie alebo relayer schémy. Ak expirácia či scope nie sú prísne, riziko pretrváva.
Aké udalosti sledovať na reťazci
Pri ručnej validácii v exploreri všímajte:
- Approval (ERC-20), ApprovalForAll (ERC-721/1155) – nové a zmenené povolenia.
- Permit, Permit2 – aplikované podpisové schválenia, deadline, nonce a value.
- IncreaseAllowance/DecreaseAllowance – či dApp nepoužíva bezpečnejší inkrement/dekrement.
- Proxy upgrade a ImplementationChanged – pri UUPS/beacon/proxy sledovať zmeny implementácie; staré approvals tak môžu „zmeniť správanie“.
Bezpečnostné dashboardy: čo od nich čakať
Moderné dashboardy agregujú vaše povolenia naprieč sieťami a triedia ich podľa rizika. Zvyčajne zobrazujú:
- Zoznam spenderov s ikonou dôveryhodnosti (verified contract, audit, populárna dApp) a proxy chain (transparentný vs. upgradeable).
- Rozsah: unlimited vs. limitované sumy; pri NFT – all items vs. konkrétne tokenId.
- Čas poslednej aktivity: staré „zabudnuté“ approvals sú top kandidáti na revoke.
- Multichain zobrazenie: EVM siete (Ethereum, L2, sidechains) aj nezávislé reťazce (ak podporované).
- Akčné tlačidlá: Revoke, Reduce (zníženie limitu), prípadne Batch revoke s odhadom gas.
Rozhodovací rámec: zrušiť, znížiť, alebo ponechať
- Kritické a neaktívne approvals: neznáme alebo dlhodobo nepoužívané spendery → Revoke.
- Dôveryhodné, často používané dApps: zvážte Reduce na just-in-time sumu alebo časovo obmedzené Permit.
- NFT marketplaces: ak nepredávate → zrušte setApprovalForAll, pri potrebe ho znova udeleníte.
- Bridge a DeFi kontrakty: ponechajte len nevyhnutné; preferujte kontrakty s permit-like flow, pull-based rozhraním a scoped approvals.
Špecifiká podľa tokenového štandardu
- ERC-20: preferujte DecreaseAllowance na 0, potom Increase na požadovanú sumu. Vyhnete sa typickému race condition pri zmene limitu.
- ERC-721/1155: vždy uprednostnite per-item approvals pred ApprovalForAll, ak to marketplace umožní.
- Permit/Permit2: podpisujte s nízkou hodnotou, krátkou expiráciou a kontrolujte domain separator, chainId a verifyingContract v EIP-712 okne.
Typické útoky a ako ich dashboard odhalí
- Malicious spender: neznámy kontrakt s unlimited allowance – nástroj ho zvýrazní ako vysoké riziko.
- Upgrade trap: legitímny proxy získal novú implementáciu; dashboard zobrazí implementation hash a dátum zmeny.
- Permit phish: podpísaná nekonečná povolenka cez pekné modálne okno; v histórii uvidíte použitý Permit s enormnou hodnotou.
- Approval leakage cez zapadnuté dApps: starý farmovací kontrakt má stále práva – uvidíte nulovú aktivitu > 90 dní.
Workflow pravidelného auditu (mesačný rytmus)
- Inventarizácia: prejdite všetky siete, kde máte aktíva. Exportujte zoznam spenderov a povolení (CSV).
- Skórovanie rizika: označte neznámych/nezverejnených spenderov, unlimited limity a staré approvals (> 30–90 dní bez aktivity).
- Akcia: revoke/limit. Pri väčšej sade využite batch – zjednotíte poplatky.
- Simulácia: nové transakcie prechádzajte simulátorom; potvrďte, že po revoke dApp stále funguje (inak udeliť minimálne nové povolenie).
- Monitorovanie: zapnite upozornenia (push/e-mail) na nové Approval* eventy z vašich adries.
Cross-chain a L2 špecifiká
Každý reťazec = samostatná sada approvals. L2 majú lacné transakcie, preto je rozumné častejšie revokovať. Pozor na:
- Canonical vs. third-party bridges: iba canonical kontrakty by mali mať práva k vašim aktívam.
- Multisig a trezory: pri treasury pravidelne auditovať Module rozšírenia (Safe Modules) a delegácie.
- Rollup upgrades: pri major upgrade siete znovu overte integrity spenderov (nové adresy, migrácie).
Account Abstraction a session oprávnenia
Pri EIP-4337 peňaženkách sledujte:
- Pluginy/Modules: ktoré môžu prenášať práva na tretie kontrakty.
- Session keys: krátke expirácie, obmedzené call-targets a value.
- Paymasters: nepovoľujte neobmedzené výdaje, ak nie je nutné.
Operačná hygiena: pre jednotlivcov a tímy
- Hardvérová peňaženka na hodnotu, hot wallet na interakcie; nikdy nezdieľať approvals medzi nimi.
- Sandbox pre testy: novú dApp skúšajte s čerstvou adresou a minimálnym zostatkom.
- Oddelené profily prehliadača a rozšírenia; minimalizujte povolenia doplnkov.
- Signing hygiene: čítajte EIP-712; kontrolujte chainId, verifyingContract, spender, value, deadline.
- DNS/typo-squatting: používajte záložky; nikdy neklikajte na linky z DM.
Náklady, poplatky a stratégia revokácií
Revoke je štandardná transakcia, platí sa gas. Pri drahom L1:
- Uprednostnite najrizikovejšie approvals a tie s veľkým zostatkom tokenu.
- Zvážte časovanie (nižší gas), prípadne batch revoke, ak nástroj podporuje.
- Pre ERC-20 využite DecreaseAllowance na 0 (niekedy lacnejšie než plný revoke).
Incident reakcia: čo robiť pri kompromitácii
- Okamžite odpojiť a zrušiť všetky approvals voči podozrivému kontraktu (vo všetkých sieťach).
- Migrácia aktív: presun do studenej peňaženky alebo nového trezoru; zvážiť permit-less prenosy (ak existujú).
- Revokácia session/plug-ins a pozastavenie modulov (multisig).
- Forenzné logy: exportovať historii approvals a transakcií; nahlásiť adresy monitorovacím službám a marketplace-om.
Čo by mal vedieť každý začiatočník
- „Connect wallet“ ≠ „bezpečné“: samotné pripojenie je neškodné, riziko vzniká pri podpise alebo schválení.
- „Sign to proceed“ môže byť permit: ak netušíte čo podpisujete, nerobte to. Hľadajte spender/value/deadline.
- Revoke ≠ refund: zrušenie práva nevracia ukradnuté prostriedky, ale zastaví ďalšie škody.
Checklist mesačného auditu (TL;DR)
- Prebehnúť všetky siete a exportovať approvals.
- Označiť unlimited, neznámych spenderov a staré/neaktívne práva.
- Revoke/Reduce podľa rizika; pri NFT vypnúť ApprovalForAll, ak sa nepredáva.
- Zapnúť upozornenia na nové Approval* a Permit* eventy.
- Overiť proxy implementácie a zmeny kódu u dôležitých dApps.
- Skontrolovať rozšírenia, prehliadač a oddelenie „hot/cold“ peňaženiek.
Bezpečnosť peňaženky nie je jednorazový akt, ale proces. Revoke a bezpečnostné dashboardy poskytujú prehľad a páku na rýchle zásahy, no rozhodujúca je disciplína: minimálne povolenia, krátke expirácie, pravidelný audit a zdravá skepsa pri podpisovaní. Takto sa z pohodlia „nekonečných approvals“ stane kontrolovaný a auditovateľný bezpečnostný režim, ktorý ochráni vaše aktíva aj v čase, keď sa ekosystém mení rýchlejšie než dokumentácia dApps.