RETAWATCH Rug Pull

Reported loss $29K
Rugpull

What happened

RETAWATCH (RTW) is a BEP20 token built from a generic reflection-fee template (contract name GoldKeyToken). The deployer-chosen owner receives the entire supply in the constructor, and the owner can change the fee settings; the code has no sell block, blacklist or mint. De.Fi's REKT database lists the incident as an exit scam / rug pull of 29,069 USD.

According to that listing, the contract creator sent 15M RTW to a wallet (address B) that created RTW/BNB and RTW/BUSD liquidity pools worth about 16.8K USD in total (liquidity transactions 0x1b7df886…d351b9 for BUSD and 0xab1311a6…4c516b for BNB). It says the deployer then spread tokens across team-controlled wallets to fake a wide holder distribution, for example 0xf04fc8f7…0007c4, 0x1232ca2e…f9929e and 0xfccd8eff…b95dfe. It adds that address B removed liquidity several times and took about 3.7K USD (transactions 0x219bae11…693543, 0x9c0b9854…9700df, 0x1132159c…b2edad).

The listing then says the creator sent 20M RTW to a second wallet (address C, 0xd18e87e3…38322a) in transaction 0x1f61d921…20bb76, that C sold them on PancakeSwap for 96.5 BNB, and that 25 BNB went on to address D in transaction 0x7bdcb62b…291711, while addresses E and F swapped tokens for BUSD (transactions 0x78f78503…893fd9 and 0xf7b329e7…d68337). The listing's reference addresses are 0x94ba9057…3f5a5a, 0xd18e87e3…38322a, 0xc39e6417…120d75, 0xf5d2e7d1…a653ef, 0xbf0b5acc…395dcb and 0x829d2235…be5f1f. The contract creation transaction is 0x84abb3f0…969709.

How it happened

What the code allows:

  1. The constructor assigns the whole supply to an address chosen at deployment: _owner = tokenOwner; _rOwned[tokenOwner] = _rTotal;. That holder can sell into any pool without a limit, because the token has no transfer cap, cooldown or sell restriction.
  2. Every non-exempt transfer splits off reflection, burn and charity fees: return tAmount.sub(tFee).sub(tBurn).sub(tCharity);. The sender is debited the full amount (_rOwned[sender] = _rOwned[sender].sub(rAmount);), the recipient receives only rTransferAmount, and the charity share is credited to FeeAddress.
  3. The owner can change the rates with updateFee, whose cap is require(_txFee < 100 && _burnFee < 100 && _charityFee < 100); per fee, so each fee can be set up to 99 percent. Because the three fees are checked separately, a combined total above 100 percent would make the SafeMath subtraction revert and block every non-exempt transfer. The owner can also redirect the charity fee with setAsCharityAccount. The on-chain owner read on 2026-09-30 is the zero address, so renounceOwnership() was executed at some point; the code evidence does not show when.

What De.Fi's REKT database lists as having happened:

  1. The creator moved 15M RTW to a wallet that created the BNB and BUSD pools, and spread tokens across team-controlled wallets.
  2. That wallet removed liquidity several times, and the creator sent a further 20M RTW to another wallet that sold them on PancakeSwap for 96.5 BNB, part of which moved on to further wallets.

Protocol details

Classification Other
Protocol Type Exit Scam/Rugpull
Affected asset / contract RTW
Protocol links @retawatchcoin

Build your security review skills

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