TRUMP 2024 Honeypot
What happened
TRUMP 2024 (TRUMP2024) is a BEP-20 token on BNB Smart Chain, deployed from 0xcCf00dD3…Ce81bA at contract address 0x5dd104f6…af3f60. All 10 billion tokens are minted to a hard-coded owner address, 0x0D71a922…1E20fD, in the constructor. The token's transfer and transferFrom functions contain a variable, newun, that records the first address to receive tokens through transferFrom and then rejects every later transfer to that address with the message "please wait".
A trading pool receives tokens whenever someone sells, so once the pool address is captured, selling reverts while buying (tokens leaving the pool) is not checked. De.Fi's REKT database lists the token as an Exit Scam/Honeypot in which the contract owner could disable the transfer function, restricting users from selling; it gives no loss figure and no transaction hashes.
How it happened
- The constructor sets
symbol = "TRUMP2024",name = "TRUMP 2024"and_totalSupply = 10000000000e18, and assigns the whole supply tobalances[owner]; the owner address is hard-coded asowner = 0x0D71a922E4523A1A1b4BbF6ab40F5Fb0241E20fD. transferFromrunsif(from != address(0) && newun == address(0)) newun = to; else require(to != newun, "please wait");. The firsttransferFromwith a non-zero sender therefore stores its recipient innewunwithout any check. A router-based liquidity add moves the owner's tokens to the pool withtransferFrom, so the pool can becomenewunthis way (the code allows this; the on-chainnewunvalue was not read).- From then on every
transferFromwhose recipient equalsnewunreverts, because theelsebranch requiresto != newun. A sell through a router callstransferFrom(seller, pool, amount), so it fails for every holder.transferhas the same guard:require(to != newun, "please wait");. - Buys are not affected by this check: the pool pays buyers with
transfer(buyer, amount), and the guard only tests the recipient againstnewun. Holders can therefore acquire tokens that they cannot sell back through the pool. - The owner can call
transfernewun(address _newun)(onlyOwner) to overwritenewun. Setting it toaddress(0)makes the nexttransferFromrecipient be captured again, so the block re-arms; only pointing it at an address that is not the pool lifts it. The only ownership functions aretransferOwnershipandacceptOwnership; there is norenounceOwnership. clearCNDAO()(onlyOwner) sends the contract's own BNB balance to the owner, and the contract has a payable fallback. This does not touch holders' tokens or the pool.- What happened on chain is not established here: no sell transactions, liquidity removal or owner calls were opened. Only De.Fi's REKT database listing states that selling was restricted.
Protocol details
Evidence
- report De.Fi REKT database listing for TRUMP2024 (as imported in the job meta) twitter.com
- address BscScan verified source code, TRUMP 2024 (TRUMP2024) bscscan.com
- analysis Scam explained: BSC stealthy LP block cryptot3ddybear.gitlab.io
- analysis Sourcify repository entry, chain 56 contract 0x5dd104f6315695f543fdbbc5a81b6b878aaf3f60 repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.