Saiba Neko Honeypot
What happened
Saiba Neko (SAIBA) is a BNB Smart Chain token whose transfer and transferFrom functions revert for any transfer whose recipient equals a stored address called newun. The first transferFrom call stores its recipient in newun, so when liquidity is added through a router the pool address becomes the blocked recipient. Buyers receive tokens through the pool's transfer, but a sell has to deliver tokens to the pool and fails with "please wait".
De.Fi's REKT database lists the token as an Exit Scam/Honeypot dated 2021-06-17 with no loss amount.
How it happened
- The constructor mints the whole supply to the deployer, who is also the
owner, and leavesnewunat the zero address (balances[owner] = _totalSupply;). - The first
transferFromwherefromis not the zero address andnewunis unset stores its recipient:if(from != address(0) && newun == address(0)) newun = to;. When liquidity is added through a router, that call moves tokens from the adder into the pool, so the pool address would be the one stored. The cryptot3ddybear write-up describes this as the mechanism of the "stealthy LP block". - From then on both transfer paths reject the stored address as a recipient:
require(to != newun, "please wait");appears intransfer, and in theelsebranch oftransferFrom. - A buy is not affected: the pool pays the buyer with
transfer(to=buyer), and the buyer is notnewun. A sell through a router callstransferFrom(holder, pool, amount); the recipient equalsnewun, so the call reverts beforebalances[from]is debited. - The
ownercan calltransfernewun(address _newun)(onlyOwner) to overwritenewun. Setting it to the zero address lets the nexttransferFromcapture a new recipient again, while pointing it at an address that is never a recipient would lift the block. The contract never calls this itself, and no transaction is cited here showing the owner using it. - The block applies to this token only. Removing liquidity moves the pool's LP tokens, not this token, and the pool pays out through
transferto the remover, so the code does not stop the owner from withdrawing the pool's reserves. Who held the LP tokens, and whether liquidity was removed, is not established by the source.
Protocol details
Evidence
- report Token Sniffer tweet cited as De.Fi proof link (not retrievable: 404 via fxtwitter) twitter.com
- address BscScan verified source, TokenBEP20 (SAIBA) 0x0ef983e02f9a5c0bff79062c26289283ea7e6d24 bscscan.com
- analysis BSC-SCAM explained: stealthy LP block (cryptot3ddybear) cryptot3ddybear.gitlab.io
- analysis Sourcify match, chain 56 0x0ef983e02f9a5c0bff79062c26289283ea7e6d24 repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.