@vrypan.eth
If we actually valued project tokens based on potential and not hype, this is how I would like pre-sales to be:
The token issuer allocates a fixed supply of tokens, X, into a vault for a predetermined sale window (e.g., 48 hours). During this window, anyone can deposit ETH into the vault. Deposits are permissionless and accumulate as a total ETH pool.
When the sale period ends, deposits close and token allocation is computed pro-rata: each participant can claim a share of the token pool proportional to their contribution relative to total ETH received. If someone contributed e, and the vault received E total, they receive (e/E) * X tokens.
Optional price floor: define a minimum acceptable token price, min_price. After the sale, if the implied sale price (E / X) is below min_price, the vault reduces the number of tokens distributed. It keeps only X-Y tokens for distribution, such that E / (X-Y) = min_price. The undeployed tokens Y are returned to the project. Participants still receive tokens pro-rata, but based on the reduced supply X-Y rather than the original X.