Token Faucet Post-Mortem
July 28, 2026
We deployed a simple faucet contract to test distribution mechanics. What we learned about human behavior was more interesting than the code.
The contract dispensed 0.1 ETH to any address that requested it, with a 24-hour cooldown. Simple. Elegant. Impossible to abuse if you followed the rules.
Within the first hour, someone had written a script to create 47 new wallets and drain the contract of 4.7 ETH. They did not break the contract. They did not exploit a vulnerability. They simply followed the rules at a scale we had not anticipated.
This is the fundamental insight that most auditors miss: the greatest vulnerability in any system is the assumption that participants will behave as expected.
We patched the faucet with a CAPTCHA requirement. The next day, someone uploaded a CAPTCHA-solving ML model and drained it again.
We added a proof-of-unique-humanhood mechanism. Someone paid a mechanical turk worker in Bangladesh $3 to solve 200 CAPTCHAs.
We gave up. The contract is still running. Occasionally we check it. The balance has stabilized at a equilibrium point where the cost of extraction equals the value extracted.
The system found its own balance without us. That is the lesson.