MentalHealth Honeypot

Reported loss Not disclosed
BNB Chain
Honeypot

What happened

$MentalHealth ($MHealth) is a BNB Smart Chain token whose verified source lets its owner change every fee percentage without any cap and set the per-transfer limit to zero, which makes every transfer that does not involve the owner revert. The deployer address 0xD2eB3425…eEC465 is hard-coded as the first owner. De.Fi's REKT database lists the token as an "Exit Scam/Honeypot" dated 2021-09-10 and describes it as the contract owner being able to disable the transfer function, which restricted users in selling their tokens; the listing gives no loss figure or proof link.

An eth_call on 2026-09-30 returned the zero address as owner, so these functions can no longer be called, but when ownership was renounced is not established.

How it happened

  1. The Ownable constructor hard-codes the first owner (_owner = 0xD2eB3425635B4CF1B734f1c0FDcfD90813eEC465;), the whole supply is credited to it (_rOwned[owner()] = _rTotal;) and it is exempted from fees (_isExcludedFromFee[owner()] = true;).
  2. Three owner-only setters have no cap: setTaxFeePercent, setCharityFeePercent and setLiquidityFeePercent, for example function setCharityFeePercent(uint256 charityFee) external onlyOwner() { _charityFee = charityFee; }. The defaults are 2, 5 and 3.
  3. In _transferStandard the sender is debited the full amount (_rOwned[sender] = _rOwned[sender].sub(rAmount);) while the recipient is credited rTransferAmount, the amount minus all three fees. If the percentages sum to 100, a transfer between two addresses that are not fee-exempt credits the recipient nothing; above 100 the subtraction tAmount.sub(tFee).sub(tLiquidity).sub(tCharity) reverts.
  4. setMaxTxPercent computes _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);, so 0 sets the limit to 0. _transfer requires amount <= _maxTxAmount whenever if(from != owner() && to != owner()) holds and separately requires amount > 0, so with the limit at 0 every transfer that does not involve the owner reverts, whether it is a sale, a purchase or a wallet-to-wallet send.
  5. Liquidity tokens created by the contract's swap-and-liquify routine are sent to the owner (addLiquidityETH{value: ethAmount}(address(this), tokenAmount, 0, 0, owner(), block.timestamp)), and the charity fee is credited to the fixed wallet 0xd5CA1af99b57f263fc246C1f3a2A28605bD4958e.

Protocol details

Classification Token
Protocol Type Exit Scam/Honeypot
Affected asset / contract MHealth
Protocol links @mentalhealthtkn

Build your security review skills

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