EasyFinance Honeypot
What happened
EasyFinance is a BEP-20 token whose transfer logic contains an owner-controlled sell block. calculateFeesBeforeSend reverts with "Error: Can not sell this token" whenever the recipient is flagged in PanCakeSwapReciever, and the owner alone can set that flag for any address with setPanCakeSwapReciever. De.Fi's REKT database lists the token as an exit scam/honeypot in which the contract owner could disable the transfer function and restrict users from selling.
How it happened
- The constructor mints 50,000 tokens to the deployer:
_transferTO(msg.sender, 50000e18);. setPanCakeSwapReciever(address _recipient, bool _feeless)isonlyOwnerand writesPanCakeSwapReciever[_recipient] = _feeless;. It has nocanWhitelistcheck, sorenounceWhitelist()does not disable it, and it has no limit on which address can be flagged.- Every
transferandtransferFromgoes through_transfer, which callscalculateFeesBeforeSend(sender, recipient, amount). That function runsif(PanCakeSwapReciever[recipient]){ revert("Error: Can not sell this token"); }, undoing the whole transfer including the sender's balance debit. - If the owner flags a trading pair as a recipient, any sale that sends tokens to that pair reverts for every sender, including the owner. Buys, where the pair is the sender, are not affected by this check. The code does not show which addresses were flagged.
- The fee code is inert:
calculateFeesBeforeSendreturns(amount, 0), sotxFeeis never applied. - The owner can give the power up with
renounceOwnership(); the code does not show whether it was called. What happened: only De.Fi's REKT database listing supports the honeypot classification; its proof tweet could not be opened.
Protocol details
Evidence
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.