LongNoseDog Rug Pull

Reported loss $310K
Rugpull

What happened

LongNoseDog (LONG) is a BEP20 token on BNB Smart Chain (0xFAE06dE7…8F29A5) that is a thin shell: it holds no balances itself and routes balanceOf, transfer and transferFrom to a separate accounting contract that the owner can point anywhere with setAccountingAddress. That contract's rules, and therefore who can move or sell tokens, are not part of the verified token source.

PeckShield Alert reported on Jan 19, 2024 that LONG had dropped 100% after the deployer 0x10DD0BEC…083eb5 swapped LONG for about 998.7 BNB (about 310K USD), and noted that the rug-pull token shares its name with legitimate ones. De.Fi's REKT database lists the incident as an exit scam/rugpull on Jan 18, 2024, removing liquidity worth 309,749 USD (998.71 BNB) from a PancakeSwap pool, with the funds passed through multiple EOA addresses.

Deployer address (per De.Fi listing): 0x10DD0BEC…083eb5

Scammer address (per De.Fi listing): 0xaa398476…19f276

Liquidity removal transaction (per De.Fi listing): 0x8566f47b…528964

Funds transfer transaction (per De.Fi listing): 0xe1e50f0d…63efca

How it happened

What the verified code allows:

  1. The token stores no balances. Every read and transfer is delegated to an external contract: return Accounting(accounting).balanceOf(who); and return Accounting(accounting).doTransfer(msg.sender, msg.sender, to, amount);.
  2. The constructor only emits a mint event and assigns nothing: emit Transfer(address(0), msg.sender, _totalSupply);. Who holds the supply is decided entirely inside the accounting contract, whose source is not in the verified token code.
  3. The owner picks that contract and can change it at any time: function setAccountingAddress(address accountingAddress) public { require(msg.sender == owner); accounting = accountingAddress; }.
  4. transfer and transferFrom emit a Transfer event before the delegated call runs (emit Transfer(msg.sender, to, amount);), so the event log does not by itself prove that a balance moved.
  5. renounceOwnership() exists and sets owner = address(0). The on-chain owner() read on 2026-09-30 returned the zero address, so the accounting pointer can no longer be changed now; when that happened is not shown by the evidence.

, per the sources:

  1. PeckShield Alert reported that the deployer swapped LONG for about 998.7 BNB (about 310K USD) and that LONG fell 100%.
  2. De.Fi's REKT database lists the event as an exit scam/rugpull of 309,749 USD from PancakeSwap, with the funds moved through multiple EOA addresses.

Protocol details

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

Build your security review skills

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