Road To Better ICOs
What are the possible solutions to the race conditions, created by ICOs so popular that they paralyze the Ethereum network?
Over the past few months, the cryptocurrency market has displayed a huge surge of interest in digital token sales, also known as Initial Coin Offerings (ICOs) or crowdsales. However, the best way to run an ICO - one which is good for both the project’s owners and its investors - remains to be found.
Many approaches to conducting a campaign have been tried out, but so far most of the crowdsales have been causing significant problems for everyone involved, as well as for non-participating network members.
The goals of running an ICO
In order to better understand where the problems with ICOs come from, we should take a look at the goals people usually have in mind when choosing to start a campaign.
To put it briefly, most projects who decide to run a crowdsale want to do three things:
raise money for the development of the project
make sure that their tokens are distributed across as many users as possible. This helps ensure that the token value will be more fairly determined and decentralize access to and/or ownership of the project. A larger number of token holders also means more potential users, especially if the tokens are directly usable in the project’s ecosystem.
make the experience as painless as possible for their supporters to encourage more people to invest, again ensuring distribution amongst more users.
Problems with running an ICO
As it turns out, there are several problems when it comes to running a user-friendly crowdsale campaign that accomplishes all three of the above goals. To break it down, let’s look at some of the main factors at play.
ICOs, Ethereum and ‘race conditions’
When running an ICO, project creators usually decide to cap the number of coins they will sell during their campaign for a number of reasons. In particular, they want to be able to set an initial price for the tokens and not to accidentally collect way more money than they actually need for the development.
Additionally, a large chunk of recent crowdsales have only accepted Ether as crowdsale contributions, which just means lots of transactions take place solely on Ethereum’s network.
Problems come up with how the Ethereum network functions under certain conditions, known as ‘race conditions.’ These conditions have unfortunately been created by many ICO campaigns (recent examples include Status and Bancor), due to flawed design of the token sale models.
Put simply; race conditions are a combination of high demand, limited supply (amount of tokens for sale is capped), and/or limited time (the duration of the campaign is also capped). What happens under these conditions is that a lot of people want to make sure they buy some tokens out of fear of missing out.
As such, they all attempt to make transactions at the same time, usually within seconds or minutes since the campaign’s start.
Since, as mentioned above, many of these transactions are concentrated on the Ethereum network, popular crowdsales can cause severe network overloads, which in turn causes delays and cancellations not only for campaign-related transactions but for all transactions on the network.
Ethereum’s gas - not all transactions are created equal
Ethereum’s Blockchain requires you to pay a small fee called ‘gas’ every time you ‘do something’ on the network - whether it’s sending money or running a smart contract. The gas - think of it as fuel that makes the transaction happen - is paid to the miner that actually does the work to process the transaction.
This system was designed so that work that was deemed more important would also be more valuable and end up prioritized by the miners. So, gas ends up working as something like a bidding system - when you initiate a transaction you can set the price of gas you’re willing to pay, knowing that miners are willing to do more work or do it faster if they’re offered more gas as a reward.
It’s important to note that there is nothing inherently flawed about Ethereum’s fee system and in general, it manages to do what it was designed to do.
However, in the case of running an ICO campaign, things get a little more complicated. Given the special race conditions described above, people who contribute to a crowdsale are incentivized to set exorbitantly high gas prices to make sure that their particular transaction will get processed faster, before the ICO is complete - either by reaching its funding or timing cap.
Obviously in this scenario, wealthier ICO participants have an unfair advantage, because they can afford to throw away thousands of dollars in gas.
Setting gas limits isn’t the answer
One way ICO makers address this problem of unfair distribution is by choosing to set a limit on the amount of gas each contributor is allowed to set per contribution to the ICO. In theory, this would prevent those who could afford to pay huge gas prices from beating everyone else to it.
Status chose to do exactly that during their ICO, in addition to taking other precautions to prevent unfair distribution. However, despite their well-intentioned efforts, race conditions were still in place and Ethereum’s network became severely overloaded during their campaign.
Status ended up returning 111,161 attempted transactions - a total of 347,154 ETH - due to problems with network overloading. As you might imagine, everyone who wanted and tried to participate, but whose transactions were returned were upset and disappointed.
This overload also caused big problems for those who weren’t even involved in the ICO, but just wanted to use the Ethereum network. Canceled and delayed transactions affected many cryptocurrency services, especially the exchanges - some exchanges were forced to suspend all ETH withdrawals during the period of overload.