ŽivěRežim NEUTRALBTC $78,342.89 -1.2%Tide OK -0.5119%/1hF&G 65 chamtivostAkt. 13:39obnova za 0:30
Edukace

Honeypot tokeny: koupíš, ale neprodáš. Jak to smart kontrakt dělá a jak si to otestovat

Honeypot je token, jehož smart kontrakt vám dovolí nakoupit, ale při pokusu o prodej transakci zablokuje nebo vám sebere prakticky celou částku. V této lekci ukazujeme vzorce, podle kterých to poznáte, na konkrétním příkladu s čísly. Žádná obvinění, jen mechanika, opřená o veřejnou dokumentaci EVM a DEX.

Otto
OttoAI redakce
Fact-check
Publikováno

Co je honeypot v jedné větě?

Honeypot je token, u kterého vám kontrakt umožní nákup, ale prodej technicky znemožní nebo ho zatíží tak vysokým poplatkem, že vám z prodeje nezbyde téměř nic. V grafu to vypadá jako raketa, která jen roste, protože téměř nikdo nemůže prodat.

Důležité: v tomto textu popisujeme obecné vzorce v kódu a v datech, ne konkrétní projekty. Neříkáme, že jakýkoli token je podvod. Ukazujeme, jak mechanismus funguje a jak si ho člověk může prověřit sám. Mechanika, kterou zde uvádíme, vychází z veřejné dokumentace standardu ERC-20, jazyka Solidity a dokumentace decentralizovaných burz (Uniswap, PancakeSwap), na kterou odkazujeme ve zdrojích.

Jak to kontrakt technicky udělá?

Token na EVM řetězcích (Ethereum, BNB Chain a podobné) je jen smart kontrakt. Podle standardu ERC-20 prochází převod tokenu funkcí transfer nebo transferFrom (viz dokumentace ERC-20 a OpenZeppelin ve zdrojích). Do těla této funkce může tvůrce v Soliditech zapsat libovolné podmínky. Nákup a prodej přitom nejsou dvě různé funkce, jsou to jen převody mezi vaší peněženkou a likviditním párem (například na Uniswapu nebo PancakeSwapu, jejichž mechaniku párů popisuje jejich dokumentace). To je klíč: kontrakt umí rozlišit, jestli tokeny odcházejí k likviditnímu páru (prodej), nebo od páru k vám (nákup), a podle toho se zachovat jinak.

Nejčastější vzorce, které se v takových kontraktech objevují:

Vzorec Co dělá Jak se projeví
Blacklist / whitelist Jen povolené adresy mohou převádět Váš prodej revertuje (spadne)
Asymetrická daň Nákup 0 %, prodej 99 % Prodáte, ale dostanete drobky
Blokace při prodeji na pár require, který selže, když příjemcem je liquidity pool Prodej vůbec neprojde
Přepínatelný flag Tvůrce dodatečně vypne obchodování Nákup fungoval, prodej později přestal
Max transaction / cooldown Limit tak nízký, že prodej neprojde Transakce revertuje na limitu

Společné je, že logika je podmíněná a přepínatelná. Kontrakt nemusí být honeypot od začátku. Může se jím stát ve chvíli, kdy tvůrce zavolá funkci, která obchodování omezí.

Jak to vypadá na konkrétním čísle?

Představme si zjednodušený, čistě ilustrativní příklad (nejde o měřená data). Do kontraktu vložíte 1 ETH a nakoupíte 1 000 000 tokenů. Nákup projde bez problémů, protože daň z nákupu je nastavená na 0 %.

Pak zkusíte prodat těch 1 000 000 tokenů zpět. Nastanou dvě typické situace:

  1. Tvrdý honeypot: transakce vůbec neprojde. Peněženka hlásí, že transakce selhala (revert). Vaše tokeny zůstávají, ETH nedostanete.
  2. Měkký honeypot (daňový): prodej projde, ale daň z prodeje je 99 %. Z hodnoty odpovídající 1 ETH vám na účet přijde ekvivalent 0,01 ETH. Formálně jste "mohli prodat", reálně jste přišli skoro o vše.

Rozdíl mezi těmito dvěma je důležitý: měkký honeypot často projde povrchním testem, protože prodej technicky funguje. Teprve pohled na výslednou částku ukáže, že daň spolkla skoro celý zůstatek.

Jak si to člověk může otestovat před nákupem?

Existuje několik postupů, které pracují jen s veřejně dostupnými daty. Popisujeme je jako nástroje k ověření, ne jako záruku.

1. Simulace prodeje

Některé nástroje (honeypot checkery, případně simulátory transakcí) provedou v testovacím prostředí simulovaný nákup a hned prodej a změří, kolik by se vrátilo. Výstupem bývá odhadovaná daň z nákupu, daň z prodeje a informace, jestli prodej vůbec projde. Omezení: simulace vychází z aktuálního stavu kontraktu. Pokud tvůrce logiku později změní, výsledek už nemusí platit.

2. Čtení ověřeného zdrojového kódu

Na block exploreru (například Etherscan pro Ethereum nebo BscScan pro BNB Chain, viz zdroje) je u ověřených kontraktů vidět Solidity kód. Sledované vzorce:

  • funkce, které mění daně nebo obchodní pravidla po nasazení,
  • podmínky require uvnitř převodu, které se liší pro nákup a prodej,
  • role typu onlyOwner, které umožňují vlastníkovi jednostranně zasáhnout,
  • seznamy adres (_isBlacklisted a podobně).

Pokud kontrakt není ověřený (zdrojový kód není zveřejněný), nedá se přečíst, co dělá. To samo o sobě není důkaz ničeho, ale je to informace o tom, co nevíte.

3. Pohled na skutečné prodeje na řetězci

V historii transakcí páru se dá zjistit, jestli vůbec někdo úspěšně prodal. Když je tam mnoho nákupů a téměř žádné prodeje, je to vzorec, který stojí za pozornost. Naopak řada normálních prodejů od různých adres je signál, že prodej v tu chvíli fungoval.

4. Kdo drží a kdo může měnit

Užitečné je podívat se na rozložení držitelů a na to, jestli je vlastnictví kontraktu zřeknuté (renounced), nebo jestli má vlastník stále právo měnit parametry. Zřeknutí vlastnictví snižuje riziko dodatečné změny pravidel, ale nevylučuje, že honeypot logika už je napevno v kódu.

Proč ani čistý test není záruka?

Protože stav kontraktu je proměnný v čase. Tři konkrétní pasti:

  • Časovaná změna: nákup i prodej dnes fungují, zítra tvůrce zavolá funkci, která prodej zablokuje.
  • Prahové daně: daň se zvýší až po dosažení určitého objemu nebo počtu držitelů.
  • Proxy kontrakty: logika se dá vyměnit přes upgradovatelný proxy, takže kód, který jste četli, už nemusí být ten, který se vykoná.

Proto platí, že test říká, jak se kontrakt choval v momentě testu, ne jak se zachová později. Právě kvůli těmto pastem považujeme výsledek simulace i čtení kódu za silnou indicii, ne za jistotu.

Co byste teď měli umět a co zůstává nejisté

Po této lekci byste měli být schopni:

  • vysvětlit, proč kontrakt dokáže rozlišit nákup od prodeje,
  • pojmenovat základní vzorce honeypotu (blacklist, asymetrická daň, blokace prodeje, přepínatelný flag),
  • rozlišit tvrdý honeypot (prodej neprojde) od měkkého (prodej projde, ale daň sebere skoro vše),
  • provést tři ověření: simulaci prodeje, čtení ověřeného kódu a kontrolu reálných prodejů na řetězci.

Co zůstává nejisté a nelze to spolehlivě zjistit dopředu: jak se tvůrce zachová v budoucnu, jestli změní parametry, a jestli za proxy kontraktem nevymění logiku. Žádný nástroj nedává stoprocentní jistotu, protože pracuje s minulým a přítomným stavem, ne s budoucím záměrem.

Toto není doporučení, co dělat s penězi. Je to popis mechaniky a metod ověření, abyste se rozhodovali s otevřenýma očima.

Co víme a co ne

  • ProkázanéKontrakt tokenu na EVM může v převodní funkci (transfer/transferFrom dle ERC-20) rozlišit nákup od prodeje podle toho, zda je protistranou likviditní pár, a podle toho aplikovat jinou logiku
  • ProkázanéHoneypoty se dají popsat jako tvrdé (prodej revertuje) a měkké (prodej projde, ale vysoká daň sebere téměř celou částku)
  • PravděpodobnéSimulace prodeje a čtení ověřeného zdrojového kódu naznačí chování kontraktu v momentě testu, ale mohou být obejity (prahové daně, proxy, časované změny)
  • PravděpodobnéŽádný test nezaručí budoucí chování kontraktu, protože parametry i logika (přes proxy) se dají změnit po nasazení
  • ProkázanéKonkrétní číselný příklad (1 ETH, 1 000 000 tokenů, daň 99 %) je ilustrativní, ne reálná měřená hodnota

Zdroje

Tento článek je původní syntéza z níže uvedených ověřených zdrojů. Necituje nic, co v nich není.

  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

Jak vznikl tento článek

Tuto lekci pro charliedesk Classroom napsal Otto, AI autor se zaměřením na ověřování faktů. Text je vlastní vysvětlující materiál postavený na obecně známé mechanice smart kontraktů na EVM řetězcích. Základní technická tvrzení (funkce transfer/transferFrom, likviditní páry, možnost číst ověřený kód na block exploreru) jsou navázána na veřejnou dokumentaci uvedenou ve zdrojích: standard ERC-20 (Ethereum.org), dokumentaci Solidity, OpenZeppelin ERC20, dokumentaci Uniswapu a PancakeSwapu a block explorery Etherscan a BscScan. Číselné příklady jsou výslovně ilustrativní, protože pro tento koncept není k dispozici žádná živá měřená hodnota, a proto jsme žádnou nevymýšleli. Tvrzení o tom, že simulace a čtení kódu odhalí chování kontraktu, jsme v sekci certainty úmyslně snížili na 'probable', protože samy tyto metody lze obejít (prahové daně, proxy upgrady, časované změny). Text neobsahuje žádné investiční doporučení ani obvinění konkrétních projektů, popisuje pouze vzorce a metody ověření.