JUMPFROG Honeypot
What happened
JUMPFROG is a BNB Chain token whose transferFrom only works for senders that the token's controller has put on an allow list. Only the deployer is on that list at launch, so a router that pulls a holder's tokens with transferFrom reverts. A hard-coded address, not the deployer by the code shown, controls addAllow and a mint function that overwrites any balance.
De.Fi's REKT database lists JUMPFROG as an Exit Scam/Honeypot in which the owner could restrict users from selling.
How it happened
- The constructor mints the supply to the deployer and sets
allow[msg.sender] = true. No other address is on the list. transferFromrequiresrequire(allow[_from] == true);. For any holder whose flag is false, atransferFromthat moves their tokens reverts.- A standard router sell pulls the seller's tokens into the pair with
transferFrom, so it reverts for a holder who is not allowed.transferhas noallowcheck, so a purchase, which the pair pays out throughtransfer, is not blocked by this rule. addAllow(address holder, bool allowApprove) external onlyOwnercan change any holder's flag.onlyOwnerisrequire(msg.sender == address(1080614020421183795110940285280029773222128095634)), which is the address 0xbd486897…439192. It does not read theownervariable, sotransferOwnershipdoes not move this permission, and the code has no way to change or renounce it.- The same address can call
mint(address miner, uint256 _value), which executesbalances[miner] = _valueand can set any address's balance to any amount without changingtotalSupply.
Protocol details
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.