Čo sa vlastne stane, keď niekde "podpíšete"?
Predstavte si, že vám na adresu pristane token, o ktorý ste nežiadali. V peňaženke uvidíte napríklad "1 000 $REWARD" a k tomu web, ktorý sľubuje, že si to za pár kliknutí vyzdvihnete. Vy web otvoríte, pripojíte peňaženku a odkliknete tlačidlo "Claim". Vyskočí okno so žiadosťou o podpis. A tu sa rozhoduje.
V kryptu existujú dva rôzne typy "podpisu", ktoré vyzerajú takmer rovnako, ale znamenajú niečo iné:
- Transakcia je jednorazová akcia. Niečo pošlete, niečo vymeníte, a je hotovo.
- Approval (schválenie) je trvalé povolenie. Poviete inteligentnému kontraktu: "od teraz smieš z mojej peňaženky manipulovať s týmto tokenom."
Approval sám o sebe nič neukradne. Je to len povolenie. Peniaze zmiznú až neskôr, keď si útočník to povolenie použije, pokojne dlho po tom, ako ste na podvodný web dávno zabudli. Preto tomu hovoríme "podpis, ktorý vysaje peňaženku neskôr".
Ako konkrétne vyzerá approval scam krok za krokom?
Zoberme si modelový priebeh. Čísla sú ilustratívne, majú ukázať mechaniku, nie reálny prípad.
- Do peňaženky vám príde neznámy token, napríklad "AirdropX". Objavil sa sám, vy ste nič nerobili.
- Token v názve alebo v "popise" odkazuje na web. Web vyzerá ako oficiálna stránka projektu.
- Kliknete na "Claim reward". Peňaženka zobrazí žiadosť o podpis.
- Podpíšete. Lenže to, čo ste podpísali, nebol výber odmeny. Bol to
approvealebosetApprovalForAll, teda neobmedzené povolenie pre cudzí kontrakt narábať s vaším stablecoinom alebo s celou zbierkou NFT. - Nič sa hneď nestane. Peňaženka vyzerá normálne.
- O tri dni neskôr útočník zavolá funkciu
transferFroma odošle si váš zostatok preč. Vy vidíte len to, že tokeny sú fuč.
Druhá varianta sú takzvané phishingové podpisy typu Permit. Tam nepodpisujete transakciu, ale správu (podpis je zadarmo, neplatíte zaň poplatok). Práve to je zradné: pretože za podpis neplatíte, chýba vám ten okamih, keď sa v peňaženke ukáže cena. O poplatku a o tom, prečo bežná transakcia stojí peniaze, píšeme v našom slovníčku pri hesle gas-fee.
Prečo je nebezpečnejší "approval" než obyčajný prevod?
Pretože obyčajný prevod je uzavretý. Pošlete desať tokenov, odíde desať tokenov, koniec. Pri approvale podpisujete rozsah do budúcna.
Mnohé povolenia sa navyše udeľujú ako neobmedzené (v praxi ide o technicky najvyššie možné číslo). To znamená, že kontrakt smie siahnuť nielen na to, čo máte teraz, ale aj na to, čo vám príde nabudúce. Keď si o mesiac na tú istú adresu pošlete výplatu v stablecoine, staré povolenie stále platí a útočník ju môže odčerpať tiež.
Podstatné je toto: prítomnosť approvalu ešte neznamená krádež. Množstvo legitímnych aplikácií (burzy, zmenárne, požičiavacie protokoly) approval potrebuje na bežné fungovanie. Problém nie je approval ako taký, problém je approval udelený niekomu, komu nemáte dôvod veriť, alebo approval, ktorý ste dávno prestali potrebovať a nechali ho visieť.
Ako si svoje povolenia prejsť a ako ich odvolať?
Revokovať (odvolať) approval znamená poslať novú transakciu, ktorá to staré povolenie zníži na nulu. Od tej chvíle už daný kontrakt nemá právo s vaším tokenom hýbať.
Všeobecný postup vyzerá takto:
| Krok | Čo robíte | Na čo si dať pozor |
|---|---|---|
| 1 | Zistíte, aké povolenia vaša adresa má | Použite nástroj, ktorý číta dáta priamo z blockchainu podľa vašej verejnej adresy. Nikdy nikam nezadávajte seed frázu ani privátny kľúč. |
| 2 | Prejdete zoznam | Hľadáte hlavne neobmedzené povolenia a povolenia pre kontrakty, ktoré nepoznávate. |
| 3 | Podozrivé povolenie revokujete | Revokácia je samostatná transakcia, takže za ňu zaplatíte poplatok za sieť. |
| 4 | Overíte výsledok | Po potvrdení by povolenie malo byť na nule. |
Dve veci, ktoré je poctivé povedať nahlas:
- Revokácia stojí poplatok. Nie je zadarmo, pretože je to reálna transakcia v sieti. Koľko presne, závisí od aktuálneho stavu siete, a to my tu nepredikujeme.
- Revokácia nevracia to, čo už bolo ukradnuté. Odvolanie povolenia je prevencia a zastavenie ďalšieho odčerpávania. Ak útočník zostatok už odoslal, revokácia ho späť neprinesie.
Ako spoznáte podozrivý podpis skôr, než ho potvrdíte?
Neexistuje stopercentný vizuálny znak, ale zopár signálov sa opakuje:
- Tlačidlo sľubuje "claim" alebo "reward", ale peňaženka ukazuje žiadosť o
approve,increaseAllowancealebosetApprovalForAll. To je rozpor. - Podpis je "zadarmo" a ide o správu typu
Permit, pričom web vás tlačí do zhonu. - Token, ktorý vás na akciu naviedol, prišiel nevyžiadane.
- Adresa, ktorej povolenie udeľuje práva, nie je adresa aplikácie, ktorú skutočne používate.
Moderné peňaženky sa dnes snažia pri rizikových podpisoch zobraziť varovanie a preložiť technický obsah do ľudskej reči. Berte to ako pomoc, nie ako záruku. Rozhodnutie podpísať je stále na vás.
Čo by ste teraz mali vedieť, a čo zostáva neisté
Po tejto lekcii by ste mali rozoznať rozdiel medzi jednorazovou transakciou a trvalým approvalom, chápať, prečo sa peňaženka môže vysať až s oneskorením, a vedieť, že approval sa dá prejsť a odvolať samostatnou transakciou.
Čo zostáva neisté a čo vám nikto poctivo nesľúbi:
- Koľko bude revokácia stáť. Poplatok závisí od siete v danom okamihu, žiadnu fixnú sumu tu neuvádzame.
- Či konkrétny kontrakt je, alebo nie je podvodný. Nástroj vám ukáže, komu ste čo povolili, ale nálepku "zlodej" k tomu automaticky nedodá. Posúdenie dôveryhodnosti je vždy na vás.
- Či revokácia pomôže včas. Ak povolenie zneužil útočník skôr, než ste ho stihli odvolať, prevencia už nefunguje.
Toto je vzdelávacia lekcia z charliedesk Classroom. Nehovoríme vám, čo kupovať alebo predávať. Ukazujeme, ako mechanika funguje, aby ste sa rozhodovali s otvorenými očami.

