IOV Token Sale: Simple Equations

Benjamin Simatos
3 min readNov 7, 2018

--

To see examples, you can visit the Level 1: Primary Bid and Level 2: Bonus Bid blog posts.

Equations

The external variable ETH/IOV = the number of IOV tokens that you can buy with 1 ETH will be set at the time of the public sale.

Your input

your_ETH_Primary_Bid = your Primary Bid in ETH > 0

your_ETH_Bonus_Bid = your Bonus Bid amount in ETH ≥ 0

Stage 1: Fairness

At this stage, the variable to determine your stage 1 allocation S1 is the oversubscription OS:

OS = oversubscription ratio = TotA / Tot_IOV

where

TotA = total amount, the sum of all the Primary Bids for all the participants

Tot_IOV = total value of all IOV Tokens on sale

If OS > 1, then we are oversubscribed.

S1 = 50% x min(1/OS, 1)

Stage 1 allocation vs Oversubscription ratio

Stage 2: Speed

At this stage, the variable to determine your stage 2 allocation S2 is your Speed_Rank:

Speed_Rank = your rank in % of your contribution arrival

= contribution amount arrived before you / TotA

If Speed_Rank < 10% then S2 = S1 x 5/3 else

If Speed_Rank < 20% then S2 = S1 x 4/3 else

If Speed_Rank < 30% then S2 = S1 x 3/3 else

If Speed_Rank < 40% then S2 = S1 x 2/3 else

If Speed_Rank < 50% then S2 = S1 x 1/3 else

S2 = 0

If S2 > 1-S1 then S2 = 1-S1. In this case, the tokens that have been capped will be allocated in stage 3, increasing the number of tokens to be allocated at that stage.

Stage 2 allocation S2 (in % of S1) vs the contribution speed rank. S2 is then capped at 1-S1.

Stage 3: Bonus Bid

Your stage 3 allocation S3 depends on OS, S1, S2 and your Bid_Ratio. There are Stage_3_tokens ≥25% of the tokens to be allocated at this stage, the exact amount depending on the oversubscription and capped amount at stage 2. We assume Stage_3_tokens = 25% for the graph below.

Bid_Ratio = your_ETH_Bid / your_ETH_Amount

All strictly positive Bid_Ratio are ranked in decreasing order.

Starting from the highest Bid_Ratio and going in decreasing Bid_Ratio order, we allocate S3:

S3 = min( R3, S3_P + S3_EA )

Where

  • R3 = your remaining amount at stage 3 = 1-S1-S2
  • S3_P = Proportional amount distributed at Stage 3 = Stage_3_tokens / (OS-(1-Stage_3_tokens)) x R3
  • S3_EA = your Extra Amount if successful bid = 30% x R3

Until the bidders list is empty (no more strictly positive Bonus Bids) or all the tokens of stage 3 have been allocated. If you have been served at that point, then your Bonus Bid is said to be successful. Otherwise, unsuccessful if any.

If there are IOV tokens left, everyone who has not been served receives S3 in equal proportion of the remaining total allocation:

0 < S3 ≤ S3_P

depending on other participants bids.

If the stage 3 allocation stops because all the stage 3 tokens are allocated, then everyone not served yet receives S3 = 0.

Stage 3 allocation S3 (in % of R3) vs Oversubscription when Stage_3_tokens = 25%. If the Bonus Bid is successful, you get the right line. Otherwise you get between 0 and the blue line.

At stage 3, you receive a refund R_Bonus from the Bonus Bid.

If the bonus bid is successful, R_Bonus = S2/(1-S1)

else R_Bonus = 100%

Your output

Your total allocation S = S1 + S2 + S3

Finally, you receive:

  • An amount of IOV Tokens = your_ETH_Primary_Bid x ETH/IOV x S
  • An ETH refund from your Primary Bid = your_ETH_Primary_Bid x (1-S)
  • An ETH refund from your Bonus Bid = your_ETH_Bonus_Bid x R_Bonus

To see examples, you can visit the Level 1: Primary Bid and Level 2: Bonus Bid blog posts.

Follow Us On Twitter for updates on the latest IOV news. Ask us any question on our Telegram chat.

--

--

Benjamin Simatos

Working on giving better access to the world’s values.