complete
source
findings
The first-party crowdsale logic has broken ETH distribution accounting, broken per-address contribution accounting, and a reentrancy-prone purchase flow that updates round state after external token delivery.
Top findings
-
high
ETH distribution accounting is never persisted, so crossing the payout threshold can brick subsequent purchases
-
medium
Per-address round contribution caps are unenforced because contributor totals are never updated
-
medium
buyTokens performs external token delivery before round accounting and lacks the advertised reentrancy guard