On-chain approvals a revoke

On-chain approvals a revoke

On-chain approvals: prečo existujú, kde sa ukladajú a čo presne povoľujú

On-chain approvals sú povolenia, ktoré majiteľ adresy udelí inému účtu alebo smart kontraktu na vykonávanie operácií s jeho aktívami bez potreby ďalšieho podpisu pri každom prevode. V praxi ide najmä o: (1) ERC-20 allowance cez funkciu approve(spender, amount), ktorá umožní „spenderovi“ prevádzať vaše tokeny cez transferFrom; (2) ERC-721/1155 operator práva cez setApprovalForAll(operator, true), ktoré poveria operátora nakladať s NFT (predávať, presúvať, zalistovať na marketplace); a (3) permit mechanizmy (napr. EIP-2612 a Permit2), ktoré udeľujú povolenie pomocou podpísanej správy bez on-chain transakcie pri schvaľovaní. Povolenia sa ukladajú do storage príslušného tokenového kontraktu (resp. frameworku na povolenia) a sú čitateľné na block exploreroch i špecializovaných nástrojoch.

Typy povolení a ich rozdiely (ERC-20, ERC-721/1155, Permit, Permit2)

ERC-20 allowance je kvantitatívne obmedzené – zadávate sumu, často „neobmedzenú“ (max hodnoty), aby ste nemuseli schvaľovať každú výmenu zvlášť. ERC-721/1155 zvyčajne pracujú s binárnym schválením „pre všetky tokeny“ voči operatorovi (napr. marketplace), pričom niektoré implementácie podporujú aj per-token schválenie cez approve(tokenId). EIP-2612 Permit umožní udeliť alebo aktualizovať allowance podpisom (off-chain), ktorý kontrakt verifikuje až pri prvom použití; podpis obsahuje nonce a deadline. Permit2 (Uniswap) abstrahuje schvaľovania pre viaceré tokeny a dAppky s jednotným formátom a jemnejšími limitmi (per-spender, časové okná), čím znižuje potrebu „infinite approvals“.

Hlavné riziká: neobmedzené schválenia, zraniteľné dApp, stratená kontrola nad NFT

Najčastejším rizikom je neobmedzené (infinite) ERC-20 schválenie pre kontrakt, ktorý sa neskôr ukáže byť škodlivý, kompromitovaný alebo upgradovaný s nečestnou logikou. Pri NFT je rizikom globálny operator s právami na všetky vaše NFT kolekcie; pri kompromitácii operatora môže dôjsť k bleskovému odčerpaníu aktív. U permit schém platí, že ukradnutý podpis v rámci platnosti a s nepoužitým nonce môže byť zneužitý.

Kde a ako kontrolovať existujúce approvals

Kontrolu môžete robiť tromi cestami: (1) priamo na block exploreri cez sekcie tokenu (Allowance/Approved Operators), (2) cez špecializované „revoke“ nástroje zobrazujúce zoznam povolení naprieč tokenmi a dAppkami na danej sieti, a (3) pre pokročilých čítaním storage alebo volaním allowance(owner, spender) či isApprovedForAll(owner, operator) cez „read contract“. Dbajte na to, že každá sieť (Ethereum, L2, sidechainy) udržiava vlastný stav – overujte povolenia na všetkých sieťach, ktoré používate.

Postup: audit vašich approvals krok za krokom

1) Zvoľte sieť (napr. Ethereum mainnet) a prihláste peňaženku v nástroji na kontrolu povolení. 2) Zobrazte zoznam „spenderov“ a „operatorov“ zoradený podľa rizika (neznáme kontrakty, veľké alebo neobmedzené sumy, staré a nepoužívané dApp). 3) Overte identitu kontraktov (oficiálne adresy, verifikovaný kód, reputácia). 4) Značte si, ktoré povolenia naozaj potrebujete (napr. aktívne používaný DEX) a ktoré sú „legacy“. 5) Pristúpte k odvolaniu (revoke) začínajúc najrizikovejšími položkami. 6) Opakujte pre L2 (Arbitrum, Optimism), sidechainy (Polygon) a ďalšie EVM siete, ktoré používate.

Ako technicky odvolať (revoke) ERC-20 allowance

Odvolanie znamená vykonať transakciu, ktorá nastaví allowance na 0 pre konkrétny pár (owner, spender). Buď použijete UI nástroja „Revoke“, alebo priamo volanie approve(spender, 0) v sekcii „Write Contract“ na block exploreri. Niektoré tokeny vyžadujú dvojkrokové nastavenie: najprv na 0, až potom na novú hodnotu (historické vzory ochrany proti race conditions). Poplatok za gas platí ten, kto odvoláva (vy), a transakcia prebehne v sieti, kde bolo pôvodné schválenie udelené.

Ako odvolať operator práva pre ERC-721/1155

Pri NFT kontraktoch voláte setApprovalForAll(operator, false). Urobíte to cez UI nástroja na správu povolení alebo priamo na block exploreri cez „Write Contract“. Overte, či ide o správnu kolekciu (adresu NFT kontraktu) a správneho operatora (adresu marketplace/agent kontraktu). Ak používate viac marketplace účtov, skontrolujte všetky.

Permit a Permit2: expirácie, nonce a revokácia

EIP-2612 Permit pracuje so deadline a nonce. Ak je podpis nepoužitý a deadline uplynie, stáva sa neplatným. Ak bol podpis už raz použitý (nonce spotrebovaná), nedá sa znovu použiť. Pri odvolaní povolenia udeleného cez permit môžete buď: (1) nastaviť allowance na 0 klasickým approve, čím efektívne zneplatníte budúce transferFrom pokusy daného spendera, alebo (2) ak framework podporuje „invalidate“/„lockdown“ funkcie, použiť ich. Permit2 umožňuje revoke pre konkrétne páry token/spender a tiež pracuje s časovo obmedzenými povoleniami; revokáciu urobíte cez kompatibilné UI alebo priamym volaním metód zmluvy Permit2.

Špecifiká L2 a multireťazcovej správy povolení

Každá sieť je samostatný stav. Schválenie na Ethereum mainnete neznamená schválenie na Arbitre či Optimisme a naopak. Odvolanie musíte spúšťať na tej istej sieti a zohľadniť tamojšie poplatky a mempool. Pri rollupoch sledujte aj odlišné časy finality a prípadné odlišnosti v block exploreroch.

Bezpečnostné zásady pri udeľovaní nových approvals

Minimalizujte rozsah a dĺžku trvania: (1) ak je to možné, neudeľujte „infinite approval“; nastavte len sumu potrebnú na operáciu; (2) preferujte časovo obmedzené a per-spender schválenia (Permit2 a podobné); (3) používajte overené dApp, kontrakty s verifikovaným kódom a auditmi; (4) pri NFT zvážte používanie dedikovanej „trading“ peňaženky oddelenej od „trezorovej“; (5) aktivujte notifikácie z peňaženky a sledujte Approval/ApprovalForAll eventy; (6) pre tímy využívajte multisig a role-based prístupy (napr. treasury má iné práva než trading bot).

Incident response: čo robiť pri podozrení na kompromitáciu

1) Okamžite odpojte peňaženku od podozrivej dApp (odvolanie web3 „connection“ neruší on-chain approvals, ale zabráni ďalšiemu podpisovaniu). 2) Revokujte kritické approvals (ERC-20 infinite allowances, operatori NFT). 3) Presuňte zostávajúce aktíva na novú adresu, ak máte indíciu kompromitácie seed fráz alebo zariadenia. 4) Skontrolujte všetky siete, kde ste aktívni. 5) Vyhodnoťte pôvod incidentu (phishing, škodlivé rozšírenie, falošná dApp) a poučte sa pre budúcnosť.

Špecifiká peňaženiek: EOA vs. smart contract/AA účty

Pri klasických EOA účtoch (Externally Owned Account) ide všetko cez podpisy kľúčom. Pri smart-contract účtoch (Account Abstraction, napr. ERC-4337) môže peňaženka poskytovať jemnejšie politiky – limity, session keys, časové okná, whitelist dApp – čo prakticky redukuje potrebu „globálnych“ approvals alebo riziko ich zneužitia. Overte, aké guard mechanizmy a modulárne politiky vaša AA peňaženka podporuje.

Overovanie legitímnosti spenderov a operatorov

Pred revokáciou alebo novým schválením si overte: (1) adresu kontraktu (oficiálne zdroje projektu), (2) či je kód verifikovaný a či zodpovedá očakávaným rozhraniam (ERC-20/721/1155), (3) históriu transakcií kontraktu a reputáciu (či nejde o novovytvorenú, „podozrivo prázdnu“ adresu), (4) prípadné proxy/upgradovateľné vzory (Transparent/Beacon proxy), kde sa logika môže meniť bez zmeny adresy.

Účtovanie poplatkov a optimalizácia gasu pri revokácii

Revokácie sú bežné on-chain transakcie a stoja gas. Šetrenie dosiahnete: (1) zoskupením revokácií do obdobia s nižším base-fee, (2) využitím batch funkcií, ak to nástroj/peňaženka umožňuje, (3) preferenciou revokácie iba tam, kde je reálne riziko (nepoužívané a neznáme kontrakty, infinite approvals), (4) výberom L2 siete, ak sa schválenie nachádza práve tam (poplatky sú rádovo nižšie než na mainnete).

Čo robiť po revokácii: test a „least privilege“ režim

Po odvolaní si overte, že dApp už nedokáže čerpať vaše tokeny: skúste vykonať malú operáciu, ktorá by vyžadovala transferFrom – mala by zlyhať a dApp by mala opätovne vyžiadať schválenie. Pri ďalšom používaní dodržiavajte stratégiu least privilege – schváliť len to, čo je potrebné, na tak dlho, ako je nutné, voči dôveryhodnému spenderovi.

Checklist: mesačný audit approvals

• Spíšte siete, ktoré používate (Ethereum, L2, sidechainy) a k nim adresy peňaženiek.
• Pre každú sieť vygenerujte zoznam „spender“ a „operator“ povolení.
• Vyhodnoťte riziko: neznáme kontrakty, veľké/infinite sumy, staré dApp bez aktivity, upgradovateľné proxy bez dôvery.
• Revokujte vysokorizikové povolenia, znížte z „infinite“ na konkrétne limity.
• Overte fungovanie dôležitých dApp po sprísnení.
• Zapíšte si zmeny a pripomeňte si ďalší audit o 30 dní.

Najčastejšie chyby a mýty

Chyba: „Odpojenie peňaženky od webu ruší on-chain approvals.“ – Neruší; ide iba o zrušenie webovej relácie. Chyba: „Keď som udelil permit, už to nejde zvrátiť.“ – v praxi viete zrušiť účinnosť cez approve(spender, 0) alebo expiráciou/spotrebovaním nonce. Mýtus: „Operator pri NFT vidí len konkrétne tokeny.“ – pri setApprovalForAll má operator spravidla práva na všetky NFT daného kontraktu.

Zhrnutie

On-chain approvals sú nevyhnutným mazivom DeFi a NFT ekosystému, no predstavujú trvalé a často rozsiahle práva nad vašimi aktívami. Kľúčom je pravidelná kontrola, cielené odvolávanie a minimalistické, časovo obmedzené schvaľovania s dôveryhodnými kontraktmi. Takto zásadne znížite povrch útoku bez obetovania použiteľnosti.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *