Skip to content
PANTHER

Token Honeypots: How They Trap Buyers and the Warning Signs

You can buy, you cannot sell. The contract tricks behind honeypot tokens on Ethereum, Base, BNB Chain, Robinhood Chain and Solana, what scanners miss, and the checks you can run yourself.

By Panther@0xPnthr

Last reviewed 8 min read

Panther Knowledge cover for guide 011: Buy yes, sell no, beside an illustrative transfer function with a hidden blacklist and owner-set sell tax highlighted, above an all-green price chart.
Illustration: Panther Knowledge

Key points

  • A honeypot lets you buy but not sell. The chart only rises because nobody but the deployer can exit.
  • EVM tricks include blacklists, deployer-only whitelists, sell taxes near 100%, pauses, unreachable minimums, balance resets and upgradeable logic.
  • 'Renounced' is not enough: hidden owners, reclaimable ownership and extra privileged addresses survive a public renounce.
  • On Solana, look at the mint: freeze authority, transfer hooks, permanent delegates and default-frozen accounts can all block sales.
  • Scanners go stale and miss cases: one study found GoPlus detected 60% of its sample, and honeypot.is does not cover Robinhood Chain.
  • Search by contract address, read the transfer logic, look for real sellers, re-scan right before trading, and never pay to unlock stuck tokens.

A honeypot token is, in Dedaub’s words, “a crypto token you can buy but cannot sell.” The chart only goes up, because every buy pushes the price higher and nobody except the deployer can sell. By the time a buyer tries to take profit, the sale fails, or goes through and returns almost nothing.

Honeypots are not one trick. They are a family of contract features, most of them with legitimate uses elsewhere, switched on or tuned to trap buyers. This guide explains the main mechanisms on EVM chains (Ethereum, Base, BNB Chain, Robinhood Chain) and on Solana, what scanners like honeypot.is and GoPlus can and cannot catch, the checks you can run yourself on an explorer, and the figures on how common they are.

How a honeypot blocks the sell

On EVM chains, a token is a contract, and every transfer runs its code. Selling means transferring the token into the trading pool. A honeypot adds conditions to that one direction.

Mechanism What it does Documented by
Blacklist The owner adds buyers’ addresses to a list that cannot transfer. “The blacklist is perhaps the most basic form of honeypot contract” CertiK, SlowMist
Whitelist Only listed addresses can sell, often just the deployer Dedaub, Trapdoor study
Sell tax near 100% Buys are cheap; sells keep “extreme sell fees (90-100%)” Webacy, GoPlus
Owner-adjustable tax Low at launch, raised later, sometimes for one address only: “The contract owner may set a very outrageous tax rate for an assigned address” GoPlus, Webacy
Trading pause The owner can “suspend trading at any time” GoPlus, SlowMist
Unreachable minimum Sales are allowed only “above a certain threshold which is set to an extremely high number,” sometimes moved as you approach it CertiK, SlowMist
Tiny maximum per trade “When the anti-whale value is set to a very small value, all trading would fail” GoPlus
Balance reset A function sets “a user’s balance to a lower value, usually one token” CertiK, GoPlus
One sell per block A limit “shared by everyone, only one user can sell in a block” honeypot.is
Upgradeable code A proxy points to new logic after launch: “the logic contract can be replaced while the proxy, or the access point is never changed” OpenZeppelin, Hacken
Hidden external call The transfer checks another contract whose source is not published, so “contract inspection is impossible” Trapdoor study

Most of these hide in the transfer function. OpenZeppelin’s standard ERC-20 says “all customizations to transfers, mints, and burns should be done by overriding” one internal function, _update, and that is where to look. A simplified illustration, not taken from any real token:

// Illustration only. Real honeypots hide this behind innocent names.
function _update(address from, address to, uint256 value) internal override {
    if (to == pair && from != owner()) {          // someone is selling into the pool
        require(!flagged[from]);                  // blacklist
        uint256 fee = value * sellTax / 100;      // owner can set sellTax to 100
        super._update(from, owner(), fee);
        value -= fee;
    }
    super._update(from, to, value);
}

Names are part of the disguise. CertiK documented a function called “Approval For All” that “doesn’t approve anything, it contains a hidden blacklist.” Researchers studying “Trapdoor” tokens found one that “managed to bypass GoPlus’ check by naming its whitelist with a misleading name allow.”

“Ownership renounced” is not enough

Renouncing ownership is meant to remove the owner’s powers: OpenZeppelin’s renounceOwnership() “leaves the contract without owner,” so onlyOwner functions can no longer be called. Honeypots work around it. SlowMist warns that contracts “may falsely claim to have renounced ownership while retaining the ability to modify the code.” GoPlus flags a hidden owner, “used by developers to maintain ownership ability even after abandoning ownership,” and contracts that can take back ownership. The Trapdoor study describes incomplete renouncement, in which “the scammer can secretly add another of his addresses.” A renounce only matters if the code has no other privileged path.

On Solana, the token program has the switches built in

Solana tokens do not carry custom transfer code by default. Their risks are authorities and extensions set on the mint, which you can read on any Solana explorer:

Setting What it allows
Freeze authority Freezing any holder’s token account, “preventing them from being transferred or burned”
Mint authority Creating new tokens, “increasing the supply”
Transfer fee (Token-2022) A fee “withheld on the recipient account,” and a fee authority that “can modify the fees”
Transfer hook (Token-2022) On every transfer, Token-2022 “calls into the program” the creator chose, which can reject the transfer
Permanent delegate (Token-2022) An authority that “can burn or transfer any amount of tokens” from any holder
Default account state (Token-2022) Forcing “all new token accounts to be frozen”
Pausable (Token-2022) “The pause authority may always choose to pause or unpause activity on the mint”

GoPlus’s Solana checks map onto these: freezable, balance_mutable_authority, transfer_hook (“Hook may block user from trading”) and default_account_state. A token whose liquidity is burned but whose freeze authority is live can still trap every holder; checking liquidity locks covers mint and freeze authority in more detail.

What scanners can and cannot tell you

honeypot.is “simulates a buy and a sell transaction to determine if the token is a honeypot,” plus extra checks. It flags problems such as taxes “extremely high, making it an effective honeypot,” a “very high amount of users” who cannot sell, and source code that is “not available, allowing for hidden functionality.” It currently “only supports Ethereum, Binance Smart Chain and Base,” and it is honest about the limit: “Just because it’s not a honeypot now, does not mean it won’t change!”

GoPlus reads the contract and returns flags for each risk above. Its is_honeypot field means the token “maybe cannot be sold because of the token contract’s function,” and it returns nothing when the source is closed. It also reports honeypot_with_same_creator, “the number of honeypot tokens created by this creator.”

Why a clean result is not a clean token:

  • Results go stale. Dedaub: “Deployers can flip a contract between safe and malicious by toggling trading, editing a blacklist, or raising the sell tax after launch.” Its advice: “re-scan immediately before any trade rather than trusting an older result.”
  • Traps can wait. The Trapdoor study found some tokens “let users exchange back and forth freely at the beginning to attract more users before suspending trading.” Webacy notes others “start with low fees that increase over time.”
  • Detection is incomplete. On the Trapdoor study’s dataset of tokens, “GoPlus can only successfully detect 60%.” Simulation has its own blind spot: “if the tool cannot simulate a buy, it cannot detect if a given token is a scam.”
  • Coverage is not universal. Robinhood Chain (chain ID 4663) is not among honeypot.is’s supported chains, and its chain ID does not appear in the chain list of GoPlus’s token-security API documentation. On Robinhood Chain, the manual checks below are the check.
  • Closed source is the loudest warning. GoPlus: “Closed-sourced contracts may hide various unknown mechanisms and are extremely risky.” A scanner that cannot read the code cannot clear it.

Checks you can run yourself

On Etherscan, BaseScan, BscScan, or Robinhood Chain’s Blockscout and RobinScan:

  1. Search by contract address, never by name. SlowMist: “Always search by the contract address, not the token name, to avoid counterfeit projects.” Copies of popular names are cheap.
  2. Confirm the source is verified, and remember what that means. Etherscan: “’Verified’ does not mean the contract is safe to interact with or that it has been audited.” It means you can read it.
  3. Read the transfer logic. Open the code and find the transfer function (_update, _transfer). Look for conditions on sells into the pair, tax variables the owner can change, lists of addresses, pause flags, and calls to other contracts. Etherscan suggests using “your preferred LLM or Etherscan’s Code Reader to review the source code.”
  4. Use Read Contract. It is free and needs no wallet: check owner(), the current taxes and limits, and whether trading is enabled. If the page shows Read as Proxy, the logic lives at an implementation address that can be swapped; find out who controls the upgrade.
  5. Look for real sellers. Open the token’s transfers into the pool address. Webacy: “Look for successful sells by other wallets.” A token with hundreds of buyers and sells only from the deployer is the classic pattern.
  6. Check holders and the creator. How much does the owner hold? Has the deployer launched tokens before, and what happened to them?
  7. Check the explorer’s reputation label. A token marked Suspicious or Unsafe has been reported or appears in a public scam database; “An OK reputation is not an endorsement.”
  8. Test small, then think. Webacy suggests trying “selling a tiny amount before investing more.” A successful test sell proves the trap is not on right now, for that size. It does not prove it will stay off.

Two rules for after the fact. First, as Dedaub puts it, “you cannot tell from price, volume, or a green chart” whether a token is a honeypot; CertiK specifically warns about tokens with “an all green chart.” Second, Dedaub’s rule if your tokens are stuck: “never send more to unlock a stuck balance, as that is a second scam.”

How common are they

Finding Source
64,661 new honeypot tokens in 2022, up 83.39% on 2021; 92.8% on BNB Chain and 6.6% on Ethereum GoPlus, from its own data
“Over 1.1 billion US dollars from 267,809 unique investor addresses” lost to Trapdoor tokens, 2020–2023 Trapdoor study (arXiv)
60.9% of those tokens had a lifetime “of less than 24 hours” Trapdoor study
One threat actor able to create a new honeypot “as quick as one every 30 minutes” CertiK
8,443 “abnormal pools” on Uniswap, suggesting “honeypot traps may exist widely” (not each confirmed as a honeypot) Gan et al. (arXiv)

The short lifetimes are the point. A honeypot does not need to last; it needs one afternoon of buyers.

Checklist before you buy a new token

Check Pass looks like
Found by contract address Matches the project’s own published address
Source verified Yes, and you or a tool has read the transfer function
Sell conditions No owner-set sell tax, list, pause or per-address limits; or limits fixed and small
Ownership Renounced with no hidden owner, reclaim path or upgradeable proxy; or a known team with a timelock
External calls in transfers None to unverified contracts
Real sellers Many different wallets have sold, recently
Solana authorities Freeze and mint authority revoked; no transfer hook, permanent delegate or default-frozen state
Scanner results Clean on more than one tool, re-run just before you trade
Chain coverage If no scanner supports the chain, every check above done by hand

Sources

  1. 01What is a honeypot token? · Dedaub Tok{In}tokin.dedaub.com/learn/honeypot
  2. 02Honeypot scams · CertiKwww.certik.com/blog/honeypot-scams
  3. 03Guide to avoiding honeypot scams · SlowMistslowmist.medium.com/slowmist-guide-to-avoiding-honeypot-scams-3fb89a53906a
  4. 04Beginner's guide to Web3 security: avoiding honeypot scams · SlowMistslowmist.medium.com/beginners-guide-to-web3-security-avoiding-honeypot-scams-edae476da896
  5. 05Token security API response details · GoPlus Docsdocs.gopluslabs.io/reference/response-details
  6. 06Token security API (honeypot_with_same_creator, supported chains) · GoPlus Docsdocs.gopluslabs.io/reference/tokensecurityusingget_1
  7. 07Solana token security response details (beta) · GoPlus Docsdocs.gopluslabs.io/reference/response-detail-1
  8. 08Dive into token code and safeguard Web3 security (2022 honeypot data) · GoPlus Securitygoplussecurity.medium.com/dive-into-token-code-and-safeguard-web3-security-b7960a34a8fe
  9. 09Honeypot detector · honeypot.ishoneypot.is/
  10. 10Summary flags · honeypot.is Docsdocs.honeypot.is/summary_flags
  11. 11IsHoneypot API reference · honeypot.is Docsdocs.honeypot.is/ishoneypot
  12. 12Supported chains · honeypot.is Docsdocs.honeypot.is/chains
  13. 13Honeypots · Webacy Docsdocs.webacy.com/glossary/honeypots
  14. 14Trapdoor tokens: detecting scam tokens on DEXs (arXiv 2309.04700) · arXivarxiv.org/html/2309.04700v4
  15. 15Detecting honeypot traps in Uniswap pools (arXiv 2309.13501) · arXivarxiv.org/abs/2309.13501
  16. 16Honeypot scam · Hackenhacken.io/discover/honeypot-scam/
  17. 17ERC-20 (_update and transfer customization) · OpenZeppelin Docsdocs.openzeppelin.com/contracts/5.x/api/token/erc20
  18. 18Access control (Ownable, renounceOwnership) · OpenZeppelin Docsdocs.openzeppelin.com/contracts/5.x/api/access
  19. 19Proxy upgrade pattern · OpenZeppelin Docsdocs.openzeppelin.com/upgrades-plugins/proxies
  20. 20Tokens on Solana (mint and freeze authority) · Solana Docssolana.com/docs/tokens
  21. 21Token-2022 extensions · Solana Program Librarywww.solana-program.com/docs/token-2022/extensions
  22. 22How to use Read or Write Contract on Etherscan · Etherscan Information Centerinfo.etherscan.com/how-to-use-read-or-write-contract-features-on-etherscan
  23. 23How to safely interact with smart contracts on the explorer · Etherscan Information Centerinfo.etherscan.com/how-to-safely-interact-with-smart-contracts-on-the-explorer
  24. 24What is a proxy contract (Read as Proxy) · Etherscan Information Centerinfo.etherscan.com/what-is-proxy-contract
  25. 25Token reputation · Etherscankb.etherscan.com/etherscan-token-reputation

Responses

Links, wallet addresses and contact details are not allowed.

0/1000

No responses yet. Start the conversation.

Panther Journal — The intelligence brief

Stay ahead of the story.

Free. New investigations delivered when published. Unsubscribe anytime.

Launching something?

Work directly with Panther.

Start a project

More from the library