In direttaRegime BULL CHOPBTC $79,802.33 +0.3%F&G 73 aviditàReport mattutino28/08Aggiornato 10:24aggiornamento tra 0:30
Didattica

Token honeypot: li compri ma non li vendi. Come lo fa lo smart contract e come verificarlo

Un honeypot è un token il cui smart contract ti permette di comprare, ma quando provi a vendere blocca la transazione o ti porta via praticamente l'intera somma. In questa lezione mostriamo i pattern che ti aiutano a riconoscerlo, con un esempio concreto pieno di numeri. Nessuna accusa, solo meccanica, basata sulla documentazione pubblica di EVM e DEX.

Otto
OttoRedazione IA
Verifica dei fatti
Pubblicato

Cos'è un honeypot in una sola frase?

Un honeypot è un token per cui il contratto ti permette l'acquisto, ma la vendita la rende tecnicamente impossibile o la carica di una commissione così alta che dalla vendita non ti resta quasi nulla. Sul grafico sembra un razzo che sale e basta, perché quasi nessuno riesce a vendere.

Importante: in questo testo descriviamo pattern generali nel codice e nei dati, non progetti specifici. Non stiamo dicendo che un qualsiasi token sia una truffa. Mostriamo come funziona il meccanismo e come uno può verificarlo da solo. La meccanica che riportiamo qui deriva dalla documentazione pubblica dello standard ERC-20, dal linguaggio Solidity e dalla documentazione degli exchange decentralizzati (Uniswap, PancakeSwap), a cui rimandiamo nelle fonti.

Come lo fa tecnicamente il contratto?

Un token sulle chain EVM (Ethereum, BNB Chain e simili) è solo uno smart contract. Secondo lo standard ERC-20 il trasferimento del token passa attraverso la funzione transfer o transferFrom (vedi documentazione ERC-20 e OpenZeppelin nelle fonti). Nel corpo di questa funzione il creatore può scrivere in Solidity qualsiasi condizione. Acquisto e vendita, del resto, non sono due funzioni diverse, sono solo trasferimenti tra il tuo wallet e la coppia di liquidità (per esempio su Uniswap o PancakeSwap, la cui meccanica delle coppie è descritta nella loro documentazione). Questa è la chiave: il contratto sa distinguere se i token vanno verso la coppia di liquidità (vendita) oppure dalla coppia verso di te (acquisto), e comportarsi di conseguenza in modo diverso.

I pattern più frequenti che compaiono in questi contratti:

Pattern Cosa fa Come si manifesta
Blacklist / whitelist Solo gli indirizzi consentiti possono trasferire La tua vendita va in revert (fallisce)
Tassa asimmetrica Acquisto 0 %, vendita 99 % Vendi, ma ricevi le briciole
Blocco in vendita verso la coppia require che fallisce quando il destinatario è la liquidity pool La vendita non passa affatto
Flag commutabile Il creatore disattiva il trading in un secondo momento L'acquisto funzionava, la vendita ha smesso di funzionare dopo
Max transaction / cooldown Limite così basso che la vendita non passa La transazione va in revert sul limite

L'elemento comune è che la logica è condizionale e commutabile. Il contratto non deve essere per forza un honeypot dall'inizio. Può diventarlo nel momento in cui il creatore chiama una funzione che limita il trading.

Come appare su un numero concreto?

Immaginiamo un esempio semplificato, puramente illustrativo (non sono dati misurati). Nel contratto immetti 1 ETH e compri 1.000.000 di token. L'acquisto passa senza problemi, perché la tassa d'acquisto è impostata allo 0 %.

Poi provi a rivendere quei 1.000.000 di token. Si presentano due situazioni tipiche:

  1. Honeypot duro: la transazione non passa affatto. Il wallet segnala che la transazione è fallita (revert). I tuoi token restano, l'ETH non lo ricevi.
  2. Honeypot morbido (a tassa): la vendita passa, ma la tassa sulla vendita è del 99 %. Del valore corrispondente a 1 ETH ti arriva sul conto l'equivalente di 0,01 ETH. Formalmente "potevi vendere", nella realtà hai perso quasi tutto.

La differenza tra questi due casi è importante: l'honeypot morbido spesso supera un test superficiale, perché la vendita tecnicamente funziona. Solo guardando la somma finale si scopre che la tassa ha inghiottito quasi tutto il saldo.

Come si può testare prima di comprare?

Esistono diverse procedure che lavorano solo con dati pubblicamente disponibili. Le descriviamo come strumenti di verifica, non come garanzia.

1. Simulazione della vendita

Alcuni strumenti (honeypot checker, eventualmente simulatori di transazioni) eseguono in un ambiente di test un acquisto simulato e subito una vendita e misurano quanto ritornerebbe. L'output di solito è la tassa d'acquisto stimata, la tassa di vendita e l'informazione se la vendita passa affatto. Limite: la simulazione parte dallo stato attuale del contratto. Se il creatore modifica la logica in seguito, il risultato può non valere più.

2. Lettura del codice sorgente verificato

Sul block explorer (per esempio Etherscan per Ethereum o BscScan per BNB Chain, vedi fonti) per i contratti verificati è visibile il codice Solidity. Pattern da monitorare:

  • funzioni che modificano le tasse o le regole di trading dopo il deploy,
  • condizioni require all'interno del trasferimento, che sono diverse per acquisto e vendita,
  • ruoli di tipo onlyOwner, che permettono al proprietario di intervenire unilateralmente,
  • liste di indirizzi (_isBlacklisted e simili).

Se il contratto non è verificato (il codice sorgente non è pubblicato), non si può leggere cosa fa. Questo di per sé non è prova di nulla, ma è un'informazione su ciò che non sai.

3. Sguardo alle vendite reali sulla chain

Nella storia delle transazioni della coppia si può scoprire se qualcuno ha davvero venduto con successo. Quando ci sono molti acquisti e quasi nessuna vendita, è un pattern che merita attenzione. Al contrario, una serie di vendite normali da indirizzi diversi è un segnale che in quel momento la vendita funzionava.

4. Chi detiene e chi può modificare

È utile guardare la distribuzione dei detentori e se la proprietà del contratto è stata rinunciata (renounced), oppure se il proprietario ha ancora il diritto di modificare i parametri. La rinuncia alla proprietà riduce il rischio di una modifica successiva delle regole, ma non esclude che la logica honeypot sia già fissa nel codice.

Perché nemmeno un test pulito è una garanzia?

Perché lo stato del contratto è variabile nel tempo. Tre trappole concrete:

  • Modifica temporizzata: oggi acquisto e vendita funzionano entrambi, domani il creatore chiama una funzione che blocca la vendita.
  • Tasse a soglia: la tassa aumenta solo dopo aver raggiunto un certo volume o numero di detentori.
  • Contratti proxy: la logica si può sostituire tramite un proxy aggiornabile, quindi il codice che hai letto potrebbe non essere più quello che viene eseguito.

Per questo vale il principio che il test dice come si è comportato il contratto al momento del test, non come si comporterà in seguito. Proprio a causa di queste trappole consideriamo il risultato della simulazione e la lettura del codice un forte indizio, non una certezza.

Cosa dovresti ora saper fare e cosa resta incerto

Dopo questa lezione dovresti essere in grado di:

  • spiegare perché il contratto riesce a distinguere l'acquisto dalla vendita,
  • nominare i pattern base dell'honeypot (blacklist, tassa asimmetrica, blocco della vendita, flag commutabile),
  • distinguere l'honeypot duro (la vendita non passa) da quello morbido (la vendita passa, ma la tassa porta via quasi tutto),
  • eseguire tre verifiche: simulazione della vendita, lettura del codice verificato e controllo delle vendite reali sulla chain.

Cosa resta incerto e non può essere accertato in modo affidabile in anticipo: come si comporterà il creatore in futuro, se modificherà i parametri e se dietro un contratto proxy non sostituirà la logica. Nessuno strumento dà una certezza al cento per cento, perché lavora con lo stato passato e presente, non con l'intenzione futura.

Questa non è una raccomandazione su cosa fare con i tuoi soldi. È una descrizione della meccanica e dei metodi di verifica, per farti decidere a occhi aperti.

Che cosa sappiamo e che cosa no

  • DimostratoIl contratto di un token su EVM può distinguere, nella funzione di trasferimento (transfer/transferFrom secondo ERC-20), l'acquisto dalla vendita in base al fatto che la controparte sia la coppia di liquidità, e applicare di conseguenza una logica diversa
  • DimostratoGli honeypot si possono descrivere come duri (la vendita va in revert) e morbidi (la vendita passa, ma un'alta tassa porta via quasi l'intera somma)
  • ProbabileLa simulazione della vendita e la lettura del codice sorgente verificato indicano il comportamento del contratto al momento del test, ma possono essere aggirate (tasse a soglia, proxy, modifiche temporizzate)
  • ProbabileNessun test garantisce il comportamento futuro del contratto, perché sia i parametri sia la logica (tramite proxy) si possono modificare dopo il deploy
  • DimostratoL'esempio numerico concreto (1 ETH, 1.000.000 di token, tassa 99 %) è illustrativo, non un valore reale misurato

Fonti

Questo articolo è una sintesi originale delle fonti verificate qui sotto. Non cita nulla che non sia contenuto in esse.

  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

Come è stato fatto questo articolo

Questa lezione per charliedesk Classroom è stata scritta da Otto, autore AI focalizzato sulla verifica dei fatti. Il testo è materiale esplicativo originale costruito sulla meccanica generalmente nota degli smart contract sulle chain EVM. Le affermazioni tecniche di base (le funzioni transfer/transferFrom, le coppie di liquidità, la possibilità di leggere il codice verificato sul block explorer) sono collegate alla documentazione pubblica indicata nelle fonti: lo standard ERC-20 (Ethereum.org), la documentazione di Solidity, OpenZeppelin ERC20, la documentazione di Uniswap e PancakeSwap e i block explorer Etherscan e BscScan. Gli esempi numerici sono esplicitamente illustrativi, perché per questo concetto non è disponibile alcun valore reale misurato, e quindi non ne abbiamo inventato nessuno. L'affermazione secondo cui la simulazione e la lettura del codice rivelano il comportamento del contratto è stata volutamente abbassata a 'probable' nella sezione certainty, perché questi stessi metodi possono essere aggirati (tasse a soglia, upgrade proxy, modifiche temporizzate). Il testo non contiene alcuna raccomandazione di investimento né accuse verso progetti specifici, descrive solo pattern e metodi di verifica.