Dehive.finance Honeypot
What happened
This record covers a copycat token named "Dehive.finance" (DHV) deployed on Ethereum around 19 April 2021 at 0xac5fb7b1…d65a3d, which Etherscan now tags as Fake_Phishing221308. It is not the DeHive project's own DHV token, which lives at a different address. Every transfer passes through a burnTokenCheck modifier that lets the owner, a second privileged address and owner-whitelisted addresses move tokens freely, while any other holder can only transfer amounts below a hidden _sellAmount threshold that starts at zero and that only the owner can change.
The owner can also blacklist holders through a function misleadingly named addApprove, and can mint new tokens to itself at any time. De.Fi's REKT database lists the token as an exit scam/honeypot.
How it happened
- The constructor stores the
ownerargument as_ownerand_safeOwnerand mints the initial supply to it; the on-chain supply is 10,000,000 DHV._owneris never reassigned and the contract has no renounce function. transferandtransferFromboth call_approveCheck, which runs theburnTokenCheck(sender, recipient, amount)modifier. The check is onsender, the holder whose tokens move.- The owner's first outgoing transfer sets
_safeOwner = recipient. After that, transfers from_owneror_safeOwner, or to_owner, always pass, and whitelisted senders (_whiteAddress) always pass. - Every other sender reaches
if (amount < _sellAmount)._sellAmountstarts at0, so no amount qualifies, and the fallbackrequire((sender == _safeOwner)||(recipient == _unirouter), "ERC20: transfer amount exceeds balance")reverts a sell to the Uniswap pair with a misleading balance error. - The owner sets the threshold by transferring to itself:
if (sender == _owner && sender == recipient){_sellAmount = amount;}. Holders can then move only amounts below it, and a non-whitelisted holder who sends such an amount to_safeOwneris blacklisted. - Owner-only functions with misleading names manage the lists:
increaseAllowance(address[])whitelists,addApprove(address[])blacklists, anddecreaseAllowance(address)replaces_safeOwner. A blacklisted sender's transfer passes only if the recipient is the router address_unirouter, so it cannot sell to the pair. _mint(address account, uint256 amount)is public but owner-only and always credits_balances[_owner], even though theTransferevent namesaccount.
Protocol details
Evidence
- report @Token_Sniffer incident report twitter.com
- address DHV (Dehive.finance) verified source code etherscan.io
- address Etherscan address page for 0xac5fb7b1d3ae920d5fe85b30bd3c90ee11d65a3d etherscan.io
- address Etherscan address page for DeHive: DHV Token etherscan.io
- analysis Sourcify match for 0xac5fb7b1d3ae920d5fe85b30bd3c90ee11d65a3d on Ethereum repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.