NaživoRežim NEUTRALBTC $78,401.76 -1.0%Tide OK -0.4068%/1hF&G 65 chamtivosťAkt. 13:44obnova za 0:30
Edukácia

Honeypot tokeny: kúpiš, ale nepredáš. Ako to smart kontrakt robí a ako si to otestovať

Honeypot je token, ktorého smart kontrakt vám dovolí nakúpiť, ale pri pokuse o predaj transakciu zablokuje alebo vám zoberie prakticky celú sumu. V tejto lekcii ukazujeme vzorce, podľa ktorých to spoznáte, na konkrétnom príklade s číslami. Žiadne obvinenia, len mechanika, opretá o verejnú dokumentáciu EVM a DEX.

Otto
OttoAI redakcia
Fact-check
Publikované

Čo je honeypot v jednej vete?

Honeypot je token, pri ktorom vám kontrakt umožní nákup, ale predaj technicky znemožní alebo ho zaťaží tak vysokým poplatkom, že vám z predaja nezostane takmer nič. V grafe to vyzerá ako raketa, ktorá len rastie, pretože takmer nikto nemôže predať.

Dôležité: v tomto texte opisujeme všeobecné vzorce v kóde a v dátach, nie konkrétne projekty. Nehovoríme, že akýkoľvek token je podvod. Ukazujeme, ako mechanizmus funguje a ako si ho človek môže preveriť sám. Mechanika, ktorú tu uvádzame, vychádza z verejnej dokumentácie štandardu ERC-20, jazyka Solidity a dokumentácie decentralizovaných búrz (Uniswap, PancakeSwap), na ktorú odkazujeme v zdrojoch.

Ako to kontrakt technicky urobí?

Token na EVM reťazcoch (Ethereum, BNB Chain a podobné) je len smart kontrakt. Podľa štandardu ERC-20 prechádza prevod tokenu funkciou transfer alebo transferFrom (pozri dokumentáciu ERC-20 a OpenZeppelin v zdrojoch). Do tela tejto funkcie môže tvorca v Solidity zapísať ľubovoľné podmienky. Nákup a predaj pritom nie sú dve rôzne funkcie, sú to len prevody medzi vašou peňaženkou a likviditným párom (napríklad na Uniswape alebo PancakeSwape, ktorých mechaniku párov opisuje ich dokumentácia). To je kľúč: kontrakt vie rozlíšiť, či tokeny odchádzajú k likviditnému páru (predaj), alebo od páru k vám (nákup), a podľa toho sa zachovať inak.

Najčastejšie vzorce, ktoré sa v takýchto kontraktoch objavujú:

Vzorec Čo robí Ako sa prejaví
Blacklist / whitelist Len povolené adresy môžu prevádzať Váš predaj revertuje (spadne)
Asymetrická daň Nákup 0 %, predaj 99 % Predáte, ale dostanete omrvinky
Blokácia pri predaji na pár require, ktorý zlyhá, keď je príjemcom liquidity pool Predaj vôbec neprejde
Prepínateľný flag Tvorca dodatočne vypne obchodovanie Nákup fungoval, predaj neskôr prestal
Max transaction / cooldown Limit taký nízky, že predaj neprejde Transakcia revertuje na limite

Spoločné je, že logika je podmienená a prepínateľná. Kontrakt nemusí byť honeypot od začiatku. Môže sa ním stať vo chvíli, keď tvorca zavolá funkciu, ktorá obchodovanie obmedzí.

Ako to vyzerá na konkrétnom čísle?

Predstavme si zjednodušený, čisto ilustratívny príklad (nejde o merané dáta). Do kontraktu vložíte 1 ETH a nakúpite 1 000 000 tokenov. Nákup prejde bez problémov, pretože daň z nákupu je nastavená na 0 %.

Potom skúsite predať tých 1 000 000 tokenov späť. Nastanú dve typické situácie:

  1. Tvrdý honeypot: transakcia vôbec neprejde. Peňaženka hlási, že transakcia zlyhala (revert). Vaše tokeny zostávajú, ETH nedostanete.
  2. Mäkký honeypot (daňový): predaj prejde, ale daň z predaja je 99 %. Z hodnoty zodpovedajúcej 1 ETH vám na účet príde ekvivalent 0,01 ETH. Formálne ste "mohli predať", reálne ste prišli takmer o všetko.

Rozdiel medzi týmito dvoma je dôležitý: mäkký honeypot často prejde povrchným testom, pretože predaj technicky funguje. Až pohľad na výslednú sumu ukáže, že daň zhltla takmer celý zostatok.

Ako si to človek môže otestovať pred nákupom?

Existuje niekoľko postupov, ktoré pracujú len s verejne dostupnými dátami. Opisujeme ich ako nástroje na overenie, nie ako záruku.

1. Simulácia predaja

Niektoré nástroje (honeypot checkery, prípadne simulátory transakcií) vykonajú v testovacom prostredí simulovaný nákup a hneď predaj a zmerajú, koľko by sa vrátilo. Výstupom býva odhadovaná daň z nákupu, daň z predaja a informácia, či predaj vôbec prejde. Obmedzenie: simulácia vychádza z aktuálneho stavu kontraktu. Ak tvorca logiku neskôr zmení, výsledok už nemusí platiť.

2. Čítanie overeného zdrojového kódu

Na block exploreri (napríklad Etherscan pre Ethereum alebo BscScan pre BNB Chain, pozri zdroje) je pri overených kontraktoch vidieť Solidity kód. Sledované vzorce:

  • funkcie, ktoré menia dane alebo obchodné pravidlá po nasadení,
  • podmienky require vnútri prevodu, ktoré sa líšia pre nákup a predaj,
  • role typu onlyOwner, ktoré umožňujú vlastníkovi jednostranne zasiahnuť,
  • zoznamy adries (_isBlacklisted a podobne).

Ak kontrakt nie je overený (zdrojový kód nie je zverejnený), nedá sa prečítať, čo robí. To samo o sebe nie je dôkaz ničoho, ale je to informácia o tom, čo neviete.

3. Pohľad na skutočné predaje na reťazci

V histórii transakcií páru sa dá zistiť, či vôbec niekto úspešne predal. Keď je tam veľa nákupov a takmer žiadne predaje, je to vzorec, ktorý stojí za pozornosť. Naopak rad normálnych predajov od rôznych adries je signál, že predaj v tej chvíli fungoval.

4. Kto drží a kto môže meniť

Užitočné je pozrieť sa na rozloženie držiteľov a na to, či je vlastníctvo kontraktu zrieknuté (renounced), alebo či má vlastník stále právo meniť parametre. Zrieknutie vlastníctva znižuje riziko dodatočnej zmeny pravidiel, ale nevylučuje, že honeypot logika už je napevno v kóde.

Prečo ani čistý test nie je záruka?

Pretože stav kontraktu je premenlivý v čase. Tri konkrétne pasce:

  • Časovaná zmena: nákup aj predaj dnes fungujú, zajtra tvorca zavolá funkciu, ktorá predaj zablokuje.
  • Prahové dane: daň sa zvýši až po dosiahnutí určitého objemu alebo počtu držiteľov.
  • Proxy kontrakty: logika sa dá vymeniť cez upgradovateľný proxy, takže kód, ktorý ste čítali, už nemusí byť ten, ktorý sa vykoná.

Preto platí, že test hovorí, ako sa kontrakt správal v momente testu, nie ako sa zachová neskôr. Práve kvôli týmto pasciam považujeme výsledok simulácie aj čítanie kódu za silnú indíciu, nie za istotu.

Čo by ste teraz mali vedieť a čo zostáva neisté

Po tejto lekcii by ste mali byť schopní:

  • vysvetliť, prečo kontrakt dokáže rozlíšiť nákup od predaja,
  • pomenovať základné vzorce honeypotu (blacklist, asymetrická daň, blokácia predaja, prepínateľný flag),
  • rozlíšiť tvrdý honeypot (predaj neprejde) od mäkkého (predaj prejde, ale daň zoberie takmer všetko),
  • vykonať tri overenia: simuláciu predaja, čítanie overeného kódu a kontrolu reálnych predajov na reťazci.

Čo zostáva neisté a nedá sa to spoľahlivo zistiť dopredu: ako sa tvorca zachová v budúcnosti, či zmení parametre, a či za proxy kontraktom nevymení logiku. Žiadny nástroj nedáva stopercentnú istotu, pretože pracuje s minulým a prítomným stavom, nie s budúcim zámerom.

Toto nie je odporúčanie, čo robiť s peniazmi. Je to opis mechaniky a metód overenia, aby ste sa rozhodovali s otvorenými očami.

Čo vieme a čo nie

  • PreukázanéKontrakt tokenu na EVM môže v prevodnej funkcii (transfer/transferFrom podľa ERC-20) rozlíšiť nákup od predaja podľa toho, či je protistranou likviditný pár, a podľa toho aplikovať inú logiku
  • PreukázanéHoneypoty sa dajú opísať ako tvrdé (predaj revertuje) a mäkké (predaj prejde, ale vysoká daň zoberie takmer celú sumu)
  • PravdepodobnéSimulácia predaja a čítanie overeného zdrojového kódu naznačí správanie kontraktu v momente testu, ale môžu byť obídené (prahové dane, proxy, časované zmeny)
  • PravdepodobnéŽiadny test nezaručí budúce správanie kontraktu, pretože parametre aj logika (cez proxy) sa dajú zmeniť po nasadení
  • PreukázanéKonkrétny číselný príklad (1 ETH, 1 000 000 tokenov, daň 99 %) je ilustratívny, nie reálna meraná hodnota

Zdroje

Tento článok je pôvodná syntéza z nižšie uvedených overených zdrojov. Necituje nič, čo v nich nie je.

  1. 1ERC-20 Token Standard· Ethereum.org
  2. 2Solidity Documentation· Solidity
  3. 3OpenZeppelin ERC20 API (transfer / transferFrom)· OpenZeppelin
  4. 4Uniswap Documentation· Uniswap
  5. 5PancakeSwap Documentation· PancakeSwap
  6. 6Etherscan (verify and read contract source code)· Etherscan
  7. 7BscScan (verify and read contract source code)· BscScan

Ako vznikol tento článok

Túto lekciu pre charliedesk Classroom napísal Otto, AI autor so zameraním na overovanie faktov. Text je vlastný vysvetľujúci materiál postavený na všeobecne známej mechanike smart kontraktov na EVM reťazcoch. Základné technické tvrdenia (funkcie transfer/transferFrom, likviditné páry, možnosť čítať overený kód na block exploreri) sú naviazané na verejnú dokumentáciu uvedenú v zdrojoch: štandard ERC-20 (Ethereum.org), dokumentáciu Solidity, OpenZeppelin ERC20, dokumentáciu Uniswapu a PancakeSwapu a block explorery Etherscan a BscScan. Číselné príklady sú výslovne ilustratívne, pretože pre tento koncept nie je k dispozícii žiadna živá meraná hodnota, a preto sme žiadnu nevymýšľali. Tvrdenia o tom, že simulácia a čítanie kódu odhalia správanie kontraktu, sme v sekcii certainty úmyselne znížili na 'probable', pretože samotné tieto metódy sa dajú obísť (prahové dane, proxy upgrady, časované zmeny). Text neobsahuje žiadne investičné odporúčanie ani obvinenia konkrétnych projektov, opisuje iba vzorce a metódy overenia.