Killer Success

Many of the popular token sales / ICOs have run into the same issue:

There are only a limited amount of tokens for sale

The sale worked on a first-come-first served basis

Demand significantly exceeded supply

The above combination resulted in a network congestion, as people rushed in and flooded the network with transactions. This, in some cases, caused a day-long network slowdown.

This will get fixed once sharding and the other scalability features are implemented, but that will take some time.

But even until then there are some valid strategies that can be applied to keep all parties happy, including the ethereum network.

Guaranteed Participation

This strategy lets everyone in, and if demand exceeds supply, then everyone gets less tokens, and will get their excess ETH returned to them during the token distribution phase.

Let’s assume that the ICO is selling TKN tokens, and 1 TKN = 1 ETH. The total supply is 100 TKN.

If the ICO does not get oversubscribed, and you send in 10 ETH, then you will get your 10 TKN after the end of the sale.

If the ICO gets oversubscribed by 200% (200 ETH comes in during the sale period), and you sent in 10 ETH, then you will get back 5 TKN and 5 ETH. Similarly, every participant will get back 50% of their contribution, and the amount of TKN that is warranted by the non-returned contribution.

A few scenarios:

Original | ICO | Final | Returned |# of TKNs |

contribution | subscription | contribution | amount | |

amount | % | amount | | received |

------------------------------------------------------------------

10 | 100% or less | 10 | 0 | 10 |

------------------------------------------------------------------

10 | 200% | 5 | 5 | 5 |

------------------------------------------------------------------

10 | 1000% | 1 | 9 | 1 |

------------------------------------------------------------------

Extra ETH would be returned at the token distribution phase, together with the tokens.

This method seems fair, but it has a significant problem. A person with a large amount of funds could squeeze out everyone else, without any risk. Given the above scenario, one with 100,000 ETH could get 99.9999% of the TKNs, without paying any premium.

Big Fish — Small Fish

There is another way to remove the need for the rush, and at the same time make it more difficult for high rollers to squeeze out the smaller contributors. Below I will describe the idea. Please note that while the method is solid, the details will have to be refined. I am currently working on a simple reference implementation. I will share the git repo as soon as I am done.

The process goes like this:

Write a script that will use a pseudo-random way to sort all the incoming transactions. This script is off chain. Once written, hash it and push that hash onto the blockchain. Make sure to do this before the start of the token sale. Start the sale. Transactions will start coming in. No time pressure, sending a transaction earlier will not grant it any special status. Leave the sale open for conveniently long, so anyone can participate. (2 weeks?) After closing the sale, reveal the script publicly and execute it. Take the first transaction from the list produced by the script in step 4, and process it. Keep processing the list until the goal of the token sale has been reached. Refund all other transactions.

6. Profit.