2049 Rug Pull

Reported loss $82K
Rugpull

What happened

2049 is a BNB Chain token deployed on 11 October 2023 at 0x996F5813…4Ffcdf by 0xa6ABbBBa…D6fceB, with a supply of 1,000,000,000 tokens. Its _transfer function does not trust its own balance ledger: before every transfer it overwrites the sender's balance with a number returned by an external contract whose address was passed in as a plain integer constructor argument and cast to an address. Whoever controls that contract can give any address an arbitrary balance to sell into the pool, or shrink a holder's balance so their sale fails.

On 12 October 2023 PeckShield reported that 0xfCE24b0d…6a911e swapped 1,000,000,000,000,000 2049, a million times the supply, for about 400 BNB (about $82.5K), and the price fell by 100%. De.Fi's REKT database records 399.84 WBNB taken in swap transaction 0xa6f7c4b8…5625b6, says the seller was not directly linked to the deployer and received 0.05 BNB from Binance beforehand in 0x2457182f…2d6f23, and lists 0xFcCe0c3B…8FD2d4 as a second scammer address.

How it happened

  1. The constructor takes qf91ygy and stores wqfjVkDXOXbRTrAPmgOGG(address(uint160(qf91ygy))), so the address of the external contract is hidden as a number rather than named in the code; there is no setter to change it.
  2. Every transfer and transferFrom reaches _transfer, which first runs _balances[cotdkoamfrom] = _increaseAllowance(cotdkoamfrom, amount, _balances[cotdkoamfrom]).
  3. Despite its name, _increaseAllowance just returns iebdcCCcbLYazvIwaSFbd.totalSupply(sender, amount, balance), so the external contract decides the sender's new balance on each transfer.
  4. The balance check and the debit only run after that overwrite, and _totalSupply is never updated, so a chosen address can hold and sell far more than the total supply.
  5. The same hook can return a lower balance for an ordinary holder, making "ERC20: transfer amount exceeds balance" revert on their sale.
  6. PeckShield reported one swap of 1,000,000,000,000,000 2049 for about 400 BNB from 0xfCE24b0d…6a911e, after which the token's price dropped 100%.

Protocol details

Classification Token
Protocol Type Exit Scam/Rugpull
Affected asset / contract 2049

Build your security review skills

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