Skip to main content

What is a Honeypot Token?

Updated this week

A Honeypot token is a malicious cryptocurrency created by developers who intentionally insert restrictions or backdoors into the smart contract. This allows ordinary users to buy the token but prevents them from selling it (or makes selling subject to extremely high fees / blacklist mechanisms), effectively trapping their funds in their wallets.
On the surface, such tokens may appear legitimate — they may have liquidity pairs, token logos, and active community promotion — but once a user purchases the token on a decentralized exchange, they soon discover that selling is rejected or the transaction fees are so high that it becomes impossible to recover their investment.


How to Avoid Losses and How to Check

  1. You can enter the token’s contract address in a blockchain explorer such as OKLINK (as shown in the example below).If the token is a Honeypot, it will usually be marked accordingly.

  2. Since new tokens are launched on the blockchain every day, and explorers may not update in time, you can perform a manual self-check using the following methods.

    Check in the Read Contract tab:

    owner() — If it returns a value other than 0x000..., it means the owner still has control.

    totalSupply() and balanceOf() — Verify the initial token distribution.

    Look for functions or variables such as isExcludedFromFee(address), isBlacklisted(address), maxTxAmount(), and tradingEnabled() (different contracts may use different names, but they serve similar purposes).

    In the Write Contract tab (accessible only if you have permission):

    Check whether there are sensitive write functions such as
    setFeePercent, setBlacklist, renounceOwnership, or setTradingEnabled.
    If these exist and can only be called by the owner, the token carries high risk.

    Search the source code for the following keywords (case-insensitive or with underscores):
    blacklist, isBot, onlyOwner, setFee, maxTx, excludedFromFee, trading, swapAndLiquify, transferFrom, approve, mint, burn, renounceOwnership, liquidity.

    Pay special attention to the implementation of transfer, _transfer, and transferFrom — check whether they handle to == pair or from == pair differently (to distinguish between buy and sell operations).

    If you find code such as

    require(!_isBlacklisted[from]);   if (to == pair) { fee = 99; }

    this is a clear red flag.

    Check whether the contract calls a router (e.g., Pancake/Uniswap Router) and whether the swap process includes complex logic such as lockTheSwap or _tax, which might prevent normal swapping.

Did this answer your question?