ghostshiba.xyz Honeypot
What happened
ghostshiba.xyz (GHOST SHIBA) is an Ethereum token whose compiled code stores an address in a public variable called newun. The first transferFrom call with a non-zero from while newun is empty sets newun = to, and after that every transfer or transferFrom whose recipient is newun reverts with "please wait". When newun is a liquidity pair, that stops holders from sending tokens into it, which is how a sale on a DEX is executed.
The source header says "Renounced Ownership & 100% LP Burnt -> NO RUGPULLS", but that is a comment, and the compiled code contains no renounce function and still has onlyOwner control over newun. De.Fi's REKT database lists the token as an Exit Scam/Honeypot, describing a contract whose owner could disable the transfer function, which restricted users in selling their tokens.
How it happened
- The compiled
TokenBEP20constructor setssymbol = " GHOST SHIBA ",name = "ghostshiba.xyz",decimals = 8and gives the whole supply toowner. A public variableaddress public newun;starts empty. The header comment lists burn, liquidity and marketing fees and says ownership is renounced and the LP burnt; none of the fee code is compiled, because theswapAndLiquifyblock sits inside a comment. transferFrombegins withif(from != address(0) && newun == address(0)) newun = to; else require(to != newun, "please wait");. The first call with a non-zerofromtherefore records its recipient innewunwithout any check. If that call is the router moving tokens into a new liquidity pair, the pair address is the one captured.- From then on,
transferFromtakes theelsebranch andrequire(to != newun, "please wait")reverts any transfer whose recipient isnewun.transferhas the same guard unconditionally:require(to != newun, "please wait");. - A holder selling through a router calls
transferFrom(holder, pair, amount). Withnewunset to the pair,to == newunand the call reverts. The check is on the recipient only, so a transfer fromnewunto another address, which is what a purchase from the pair is, is not blocked by it. - The owner can change the guard.
transfernewun(address _newun)isonlyOwnerand overwritesnewun. Pointing it at an address nobody uses lifts the block, while setting it toaddress(0)re-arms capture, so the nexttransferFromcall with a non-zerofromrecords its recipient as the new blocked address. - The
Ownedcontract has onlytransferOwnershipandacceptOwnership, and no function that renounces ownership.GHOSTSHIBAalso exposesclearCNDAO(), restricted byonlyOwner, which sends the contract's own ETH balance to the owner. Theowner()value read on 2026-09-30 was 0x607487fb…67e2ba, the same address that deployed the contract; this is a current-state read, not a historical one. - This describes what the code allows. The supplied source does not show which address
newunheld, whether it was ever changed, or whether any liquidity was removed on this deployment.
Protocol details
Evidence
- report De.Fi REKT database listing for GHOST SHIBA (proof link: Token Sniffer tweet, returned 404) twitter.com
- report ghostshiba.xyz (GHOST SHIBA) source on Sourcify repo.sourcify.dev
- address ghostshiba.xyz (GHOST SHIBA) verified source on Etherscan etherscan.io
- analysis Scam explained: BSC stealthy LP block (cryptot3ddybear blog) cryptot3ddybear.gitlab.io
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.