FUCK ENVIRONMENT Honeypot

Reported loss Not disclosed
BNB Chain
Honeypot

What happened

FUCK ENVIRONMENT is a BEP-20 token on BNB Smart Chain at 0x1987a47a…690a78, deployed on 15 May 2021. Its overridden transferFrom only succeeds if a trans flag is on, the deployer is the sender or recipient, or the sender is the PancakeSwap pair. trans starts as false.

PancakeSwap sells move tokens with transferFrom from the seller to the pair, so other holders' sells revert, while buys go through because the pair pays buyers with the plain transfer, which the contract leaves ungated. The deployer also holds roles to mint unlimited tokens through piocher and to pause all transfers, while renounceOwnership and lockLiquidity only emit events and change nothing. The on-chain total supply read on 30 September 2026 is about 1,008,700 billion tokens against the 1,000 billion minted at deployment, so the mint function was used after launch.

De.Fi's REKT database lists the token as an exit scam/honeypot.

How it happened

  1. The constructor records the deployer as the immutable moi, grants it DEFAULT_ADMIN_ROLE, PAUSER_ROLE and MINTER_ROLE, mints 1,000,000,000,000 tokens to it, and creates the WBNB pair on the PancakeSwap router 0x05fF2B0D…608C7F. trans is set to false.
  2. transferFrom begins with require (trans || moi == sender || moi == recipient || sender == UNI);, where UNI is the pair.
  3. A buy succeeds because the pair's swap sends tokens to the buyer with the plain transfer, which this contract does not override or restrict, so the transferFrom check never runs on a buy. The deployer's own transferFrom calls, such as adding liquidity through the router, pass through moi == sender.
  4. A sell through the router calls transferFrom(seller, pair, amount). The seller is neither moi nor the pair, so the call reverts while trans is false.
  5. Only a MINTER_ROLE holder can call setTrans to open sells. The same role can call piocher(to, amount) to mint any amount, and PAUSER_ROLE can call pause, which makes every transfer revert through whenNotPaused.
  6. renounceOwnership() and lockLiquidity() are public functions that only emit OwnershipRenounced and liquidityLocked events. They revoke no role and lock no LP tokens.
  7. The on-chain totalSupply of about 1,008,700 billion tokens is roughly 1,007,700 billion above the constructor mint. piocher is the only function that can raise it, so a MINTER_ROLE holder minted that amount.

Protocol details

Classification Token
Protocol Type Exit Scam/Honeypot
Affected asset / contract FUCK ENVIRONMENT

Build your security review skills

Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.