EASYPump Honeypot

Reported loss $3K
Ethereum
Honeypot

What happened

EASYPump (EPUMP) restricts selling through a whitelist on transferFrom. The constructor sets allow[msg.sender] = true for the deployer only, and transferFrom begins with require(allow[_from] == true) among its checks, so any other holder whose tokens are pulled by a contract such as the Uniswap V2 router reverts, while plain transfer calls are unrestricted. Only the owner can add addresses through addAllow. On 2021-01-11 the deployer sent 600 EPUMP to 12 addresses through a multisend contract, added 11 ETH and 100,000 EPUMP to Uniswap V2 at 09:57 UTC, and at 10:10 UTC removed liquidity, receiving 13.50 ETH and 81,560.81 EPUMP. De.Fi's REKT database lists the token as an exit scam/honeypot with a loss of 2,720 USD.

The contract deployer airdropped tokens to some external wallets before adding liquidity at: Tx 0x8434…568c

The contract deployer added initial liquidity at: Tx 0xbbe2…bade

The liquidity was removed by the contract deployer at: Tx 0xd3dd…a687

How it happened

  1. The constructor gives the whole supply to the deployer and whitelists only that address: balances[msg.sender] = totalSupply; allow[msg.sender] = true;.
  2. transferFrom carries a sender whitelist check: require(allow[_from] == true);. allow defaults to false for every other address, and function addAllow(address holder, bool allowApprove) external onlyOwner { allow[holder] = allowApprove; } is the only way to change it.
  3. A Uniswap V2 router sell pulls the seller's tokens with transferFrom(seller, pair, amount), so for a seller with allow[seller] == false it reverts. transfer has no such check (function transfer(address _to, uint256 _value) only tests balance and the zero address), so buys from the pair and direct wallet transfers are not blocked by this code. No transaction was opened showing a holder's sell reverting or the owner calling addAllow.
  4. On 2021-01-11 the deployer address 0xf92eE989…871450 sent 600 EPUMP to 12 recipient addresses (50 each) through a multisend contract (0x8434567b…fd568c), then called addLiquidityETH with 11 ETH and 100,000 EPUMP and received 1,048.8088 LP tokens (0xbbe2f8bf…08bade).
  5. About 13 minutes later the same address called removeLiquidityETHWithPermit, burning 1,048.81 LP tokens for 13.50 ETH and 81,560.81 EPUMP (0xd3dde280…bfa687).

Protocol details

Classification Token
Protocol Type Exit Scam/Honeypot
Affected asset / contract EPUMP

Build your security review skills

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