Skip to content

Instantly share code, notes, and snippets.

@killerstorm
Created September 9, 2017 16:35
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save killerstorm/7197867a6da76c18091e6965190ca725 to your computer and use it in GitHub Desktop.
Save killerstorm/7197867a6da76c18091e6965190ca725 to your computer and use it in GitHub Desktop.

Interest tokens

Token sales are associated with a number of problems, such as high risk, lack of fairness, network disruptions, etc. A good overview of problems as well as possible mitigating strategies are described in V. Buterin's Analyzing Token Sale Models.

In this article I'm going to describe a very simple mechanism which can potentially mitigate some of ICO problems. It has following properties:

  1. Incentive to invest early (without it it is usually better to wait until the last minute)
  2. No network disruptions
  3. Almost no risk for investors
  4. Can be used at very early stages
  5. It's largely fair
  6. Investors can receive full picture before making a decision
  7. Extremely simple code, easy to validate

Sounds too good to be true, doesn't it? Well, there's probably a catch...

So here's how it works: Token sale is performed in two stages:

  1. Project first creates a smart contract which issues interest tokens. It allows anyone to buy interest tokens thus indicating their interest in participating in token sale.
  2. Stage two is the actual token sale, but tokens are sold for interest tokens, not ether.

First stage is needed to gauge interest in the project. This gives valuable information both to the project's team and to investors.

For example, if there's too much interest, investors who believe that the tokens will be overpriced can drop out. They can do that with only a tiny loss of the sum they put in to indicate their interest.

Project's team can use the information from the first stage to plan the second. If there's an excessive interest, they can propose to give back a part of collected funds, or send it to charity. If there's not enough interest, they can work on improving their proposal, or abandon the project if it's hopeless.

Since buying interest tokens carries almost no risk (maximum risk is 1-2% of the invested sum), interest token smart contract can be created at the very early stages of project's existence -- literally when there's only an idea. People who are interested in the idea can buy interest tokens to indicate their interest. If more people join, they will receive a reward. On the other hand, if idea is never materialized, they can withdraw their money losing only 1% of the sum.

Interest tokens can be implemented using "growth token" model, which I described here and here. Informal description follows:

  1. Suppose user got interested and wants to buy 1 ETH worth of 'interest tokens' (IT) of a particular project.
  2. Smart contract charges 1% fee for issuing and buying 'interest tokens'. So 0.99 ETH is depostied on this user's account, and 0.01 ETH is distributed to all previous intestors proportionally to their contribution.
  3. User might withdraw money from his account at any time, so in the worst case he gets 0.99 ETH back and his loss is 0.01 ETH.
  4. However, if he waits a bit, he receives fees from subsequent investors, thus the amount on his account becomes higher than 0.99 ETH.
  5. When project announces token sale, IT issuance becomes frozen. User can choose either to withdraw money, or to send it to the token sale, receiving corresponding tokens.

Slightly more formal description:

  1. When user buys tokens from IT contract, contract sells at a price which is 1% higher than a 'fair price'.
  2. The difference is put into contract's ether pool, which is then used to calculate new 'fair price'.
  3. This means that upon buying tokens, you lose 1%. However, all previous token holders gain a little, as token price growth.
  4. User can sell his tokens at any time at 'fair price', thus getting his share of ether.

Here's how it might look like in an complete example:

  1. Alice has a great idea for a decentralized app project. She creates an interest token contract, puts 1 ETH into it, and describes her idea to Bob.
  2. Bob puts his 1 ETH into it and makes a web site which describes the idea, posts link to a forum.
  3. 10 people like it and put 1 ETH each. At this Bob breaks even, as price grows from 1 to 1.021 ethers per IT.
  4. A researcher gets interested and helps Alice and Bob to write a whitepaper.
  5. Whitepaper attracts 1000 more perspective investors who put 1 ETH each.
  6. Programmer gets intersted and implements a prototype of a project.
  7. A prototype gives confidence to investors, so they put 10000 ETH more.
  8. Now the team believes they have enough. They freeze IT sale and annouce a token sale, with a cap 11012 ETH (assuming nobody have withdrawn any money). For the first week IT investors get a priority.
  9. Investors move 9001 ETH from IT contract to token contract, thus buying 9001 ETH worth of tokens.
  10. After one week people can buy tokens with just ether up to the limit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment