Eth Contingency Rug Pull
What happened
EthContingency sold its Contingency Token (CTY) in an Ethereum ICO in early 2017 through a crowdsale contract modified from FirstBlood's. According to ZachXBT, it raised 21,144 ETH when ETH traded at about $17, and the team disappeared weeks after the sale while keeping most of the funds. Between 2021 and 2022 the team moved more than $25 million worth of ETH to Tornado Cash, and in February 2024 it still held more than 4,600 ETH (about $13.5 million) in dormant wallets. The contract gave contributors no protection: the founder address could withdraw any amount of the raised ETH at any time, with no escrow, milestone or refund path.
Dormant wallets listed by ZachXBT in February 2024:
- 0x89e28ec9…f44ed3: 2,365 ETH
- 0xbb4ed2b0…b56c0e: 1,619 ETH
- 0x5472d797…618840: 404 ETH
- 0x139bcb54…1be961: 79 ETH
- 0x4c756e1c…02b859: 64 ETH
How it happened
- During the crowdsale window, the payable fallback calls
buyRecipient, which creditsCTYto the buyer and keeps the ETH in the contract; the direct forward to the founder is commented out. founderWithdraw(uint amount)lets thefounderaddress send itself any amount of the contract's ETH, at any time, with no cap, time lock or condition on the project's delivery.- The contract has no refund function, so contributors have no on-chain way to recover ETH, and ordinary holders cannot even move
CTYuntil about two months after the sale ends because oftransferLockup. founderWithdrawis the only code path that sends ETH out of the contract, and Etherscan now shows a balance of about 0.31 ETH, so the contributed ETH can only have left through that function, to whichever address wasfounderat the time.- According to ZachXBT, the team vanished weeks after the ICO, later moved more than $25 million worth of ETH to Tornado Cash in 2021-2022, and still held 4,600+ ETH in February 2024.
Protocol details
Evidence
- report ZachXBT on the EthContingency ICO (X post, 2024-02-23) twitter.com
- address ContingencyToken verified contract source, Etherscan etherscan.io
- address Etherscan address page, ContingencyToken 0xc96eec418b50c538c3f3e32e71575da068a97401 etherscan.io
- analysis Sourcify match, chain 1, 0xc96eec418b50c538c3f3e32e71575da068a97401 repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.