Part I: Sale Mechanics

The Problem

Vitalik’s analysis of token sale models correctly notes that certainty of valuation and certainty of participation cannot be fully satisfied simultaneously.

Various token sales have forced participants to buy in with no bound on the price per percentage share they might pay, or made them race to get in before a cap is reached (high fees, stress, chain congestion, no guarantee of participation, digital scalpers that flip for a quick profit…)

This is a mess. What can we do? Here’s a mechanism that works around these issues.

Personal Demand Curve Auctions

What if you could say how much of the token you’d like to purchase at each possible valuation? In other words, we could each submit our own personal demand curve. Here’s one that buys in heartily at lower valuations but throws up its hands and says ‘hell no’ if the valuation is over $130m:

Personal Demand A

Here’s a demand curve that spends exactly $1,000 no matter what the valuation is (uncapped participation):

Personal Demand B

The user interface could let people choose parameters for premade curves, or use control points to design their own. People who don’t want to bother could just send plain ETH to a designated contract that submits a simple curve on their behalf.

When someone submits a demand curve, they include a deposit for the maximum amount they could end up needing to pay. If they end up actually paying less, the difference is refunded.

After the deadline for submitting curves, the token sale contract simply sums up all the individual demand curves. Here’s the aggregate demand curve that would emerge if 5 people submitted a curve like Example A and another 5 people submitted a curve like Example B:

Aggregate Demand

Let’s say 80% of all tokens are being sold off. The intersection of this available supply and the aggregate demand determines the final equilibrium valuation (around $100k in the example). To determine the share a given participant receives, just look up that valuation on their personal demand curve.

In a personal demand curve auction, participants publish their purchasing preference for every possible valuation, and are guaranteed that one such preference will be satisfied.


It turns out that this type of scheme was suggested by Milton Friedman in 1960. He didn’t require submission of the entire demand curve. The US Treasury has since auctioned billions of dollars of bonds using a similar mechanism.

Bad Properties

  • Depending on the shape of your demand curve, you may have to temporarily lock up extra capital.

Good Properties

  • Everyone pays the same price, so it’s safe to participate even if you’re not an expert on the valuation of the coin. This helps democratize participation.
  • There’s no race (low stress; less scalping)
  • Participants can choose whether they want a guarantee on participation or valuation
  • Participants never receive outcomes they didn’t approve of

Technical Notes on Personal Demand Curve Auctions

  • If the aggregate demand and supply curves intersect at multiple points, the contract should select the one with the highest valuation.

  • In theory, this type of auction is not completely incentive compatible. In practice, other considerations seem to dominate.

  • If each participant specifies a demand curve across all possible valuations, bids might not need to be sealed (simple is good). Rationale: participants are already deciding how much they’ll pay conditioned on all the different amounts others may opt to pay, which makes the decision independent of information about what others are actually willing to pay. Caveats:
    • Eliciting your personal demand curve is a bit of work. If by waiting you can learn that valuations below some threshold are impossible, you wouldn’t have to consider that stretch of your demand curve.
    • Hypothetical valuations might be hard to consider properly. Maybe there’s useful brain machinery that kicks in when you learn that the valuation will actually be e.g. ~$300m.
    • People might just behave weirdly in the face of public bid information.
  • The value of bid deposits could change during the sale period.
    • The auctioneer could take on this risk by denominating bids in USD (using the price at the time the bid was placed). They’d have to be trusted to convert accurately.
    • A trust-minimized version could just denominate the whole sale in ETH, and perhaps offer a small bonus (that decreases during the submission period) in order to make up for the price risk.
  • If the gas required to determine the clearing valuation proves exorbitant, it could be computed off-chain and submitted alongside a zkSNARK proof.

Part II: Allocation

We should think through the best norms for allocating tokens and the proceeds from sales. Getting it wrong provides cover for developers who are merely greedy. (This is what we’re doing now.)

Token Allocation

  • Tokens held by developers personally should vest over a long period (think 10 years).

  • Tokens held by the development project should also vest over a long period. If the token does poorly, they’ll be unable to get much for tokens that vest. This provides additional funding for the project to the extent that it proves itself over time – very efficient! This can play a similar role to the multiple rounds of funding we see in startup/VC land.

Sale Proceed Allocation

Most new software projects need less than ~$15m in funding for their first couple of years. If a public sale raises a mammoth $200m and the project or developers keep it, it’ll screw up everything we just established. Instead, take anything over $15m and either:

  • Put it into a contract that helps maintain a price floor for the token.
  • Distribute it to a charity like GiveDirectly. Just giving the money to charity might seem crazy, but it’s better than screwing up incentives.


If we can turn these sorts of terms into a norm, then developers that defect are signaling a lack of confidence in their own project, and will struggle to raise money.