LamboPUMP Honeypot
What happened
LamboPUMP (LPUMP) is a BNB Chain token deployed on 21 March 2021 at 0x1f63daed…f52089. Every transfer and transferFrom runs through a modifier, burnTokenCheck, that lets the owner, an owner-chosen _safeOwner address and whitelisted wallets move tokens freely, but makes any other holder's transfer revert unless it goes to a hard-coded router address or is smaller than an owner-set _sellAmount, which starts at zero. A PancakeSwap sale moves tokens from the holder to the pair rather than to the router, so it fails with a misleading "transfer amount exceeds balance" error, and a holder whose small sale does reach _safeOwner is added to a blacklist.
The owner manages the whitelist and blacklist through functions misleadingly named increaseAllowance and addApprove, and a public owner-only _mint can add tokens to the owner's balance. De.Fi's REKT database lists LamboPUMP as an exit scam/honeypot, stating that the contract owner could disable the transfer function and so stop users from selling their tokens.
How it happened
- The constructor stores the
ownerargument as both_ownerand_safeOwnerand mints the initial supply to it. Because_mintrequiresmsg.sender == _owner, the owner has to be the deployer, 0xbBc59812…99B829. - The owner's first outgoing transfer makes its recipient the new
_safeOwner. If that first transfer is the liquidity deposit, the PancakeSwap pair becomes_safeOwner. - Transfers sent by the owner or by
_safeOwner, or sent to the owner, always pass, so purchases paid out by a pair that is_safeOwnergo through. - For every other sender, a whitelisted wallet passes. A blacklisted wallet, or any wallet moving at least
_sellAmount, must satisfy(sender == _safeOwner)||(recipient == _unirouter). A router sale sends tokens to the pair, not to_unirouter, so it reverts._sellAmountstays 0 until the owner sends tokens to itself, so by default no ordinary holder can sell any amount. - If the owner raises
_sellAmount, a holder can move a smaller amount, but a transfer to_safeOwnerflags the sender as blacklisted, so that holder's next sale reverts. - Owner-only
increaseAllowance(address[])whitelists wallets,addApprove(address[])blacklists them,decreaseAllowance(address)replaces_safeOwner, andmultiTransfersends tokens and whitelists the firstapprovecountrecipients. No function changes or renounces_owner. _mint(address, uint256)is public and owner-only. It adds the amount to_balances[_owner]whatever address is passed, while theTransferevent names that address.
Protocol details
Evidence
- report De.Fi REKT database listing for LamboPUMP (proof link: Token Sniffer tweet 1374999601485291522) twitter.com
- transaction LamboPUMP contract creation transaction bscscan.com
- address LamboPUMP verified contract code on BscScan bscscan.com
- analysis Sourcify match for 0x1f63daed8640d97ed866556678c23aa38af52089 on BNB Chain repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.