iProtocol Rug Pull
What happened
iProtocol (IYP) was a reflection-style ERC-20 token on Ethereum with a hidden mint inside increaseAllowance. When the owner calls increaseAllowance with its own address as the spender while excluded from reflections, the function adds the amount directly to the owner's balance without changing totalSupply. The deployer sent tokens to the iProtocolPreSale contract, which collected presale funds and added the initial Uniswap liquidity.
On December 21, 2020 the deployer sold 4,000,000 IYP, eight times the 500,000 initial supply, into the pool for about 67.59 ETH, called increaseAllowance on itself for 9,000,000 IYP, and sold again. The record puts the loss at $41,930.
How it happened
- The constructor credits the whole 500,000
IYPsupply to the deployer and creates the Uniswap V2 IYP/WETH pair. The deployer then funded the iProtocolPreSale contract, which added the initial liquidity in transaction 0xa109005b…22e893. - The owner can put its own address in the excluded set with the
onlyOwnerfunctionexcludeAccount. increaseAllowancecontains a branch that runs only when the caller is excluded, is the spender and is the owner. It addsaddedValueto the caller's_tOwnedand_rOwnedbalances, creating tokens thattotalSupply(which returns_tTotal) never reports. The call still emits a normalApprovalevent, so it looks like an ordinary allowance change.- The owner is exempt from
_maxTxAmount, so it can sell any amount in one transaction. - On 2020-12-21 at 04:38 UTC, the deployer sold 4,000,000
IYPthrough the Uniswap router for about 67.59 ETH (0xcca01f5d…7e1018). At 04:42 UTC it calledincreaseAllowancewith itself as spender and 9,000,000IYP(0x0b5944f6…51ffba), then sold 1,000,000IYPfor about 0.77 ETH at 04:47 UTC (0x0403198f…0cfffa) and 95,000IYPfor about 0.06 ETH on 2020-12-22 (0xaeac86a7…cc66e4).
Protocol details
Evidence
- report Report t.me
- transaction Etherscan transaction 0x0b5944f6... (increaseAllowance) etherscan.io
- transaction Etherscan transaction 0xcca01f5d... (swapExactTokensForETH) etherscan.io
- transaction Etherscan transaction 0x0403198f... (swapExactTokensForETHSupportingFeeOnTransferTokens) etherscan.io
- transaction Etherscan transaction 0xaeac86a7... (swapExactTokensForETH) etherscan.io
- transaction etherscan.io transaction 0xa109…e893 etherscan.io
- address iProtocol (IYP) verified contract source, Etherscan etherscan.io
- analysis Sourcify match, chain 1, 0xef7b1745C55D66a3941aD2a45329c5B2C0486e40 repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.