A simple way to continually sell tokens.
Ethereum’s DeFi sector is vibrant and growing, with many projects presenting sophisticated proposals for putting financial services on the blockchain. Among these, the problem of fundraising—selling tokens to support projects—remains evergreen, with many ideas (DAICOs, Continuous Organizations, and various flavors of bonding curves and market makers) floating around the ecosystem.
We at Colony were looking for a reasonable way to sell tokens, but found that none of these mechanisms quite met our needs. Some were too complex, or too prone to manipulation, or had difficult UX. Ultimately we wanted something dead-simple and easy-to-use, but which still supported some key behaviours. After a couple research sessions, we present: Coin Machine.
Coin Machine is a mechanism which sells limited amounts of tokens in fixed-price batches, adjusting prices up or down in between sale periods based on recent demand. Think of it like a continuous series of hard-capped micro-ICOs in which token price is determined by performance in prior sales. Coin Machine sacrifices continual availability and real-time price adjustment for the simple semantics of fixed price and fixed supply, thereby also sidestepping the challenges of price manipulation, volatility, and front-running.
Specifically, Coin Machine takes the following parameters: a target and maximum number of tokens to sell per period, as well as a period length (i.e. hour, day) as well as a number of periods to use as a price averaging window. Coin Machine then sells up to the maximum number of tokens per period, but adjusts the prices based on the target number of tokens. In this way, if the maximum number of tokens is sold each period (representing high demand), the prices will adjust upward. Alternatively, if less than the target number of tokens are sold, the prices will adjust downward. If exactly the target number of tokens are sold each period, prices remain constant, while the length of the averaging window determines the volatility of price over time.
While the interval-based nature of the adjustment means that prices will always slightly lag the market, we feel that given the mechanism’s purpose—to bring tokens into circulation, rather than create a perpetual market-maker—this is an acceptable tradeoff. If we create some small arbitrage opportunity, then Colony is served by having more tokens enter the market; it is not necessary that we capture 100% of the value of the tokens sold, and the cap on the maximum number of tokens sold bounds the upside of any arbitrage. In exchange, we gain simplicity and security, while still allowing for prices to automatically adjust, which we believe is an appropriate balance for this use-case.