Liquorice Gen: Initial Bonding Curve Offering (IBCO)
TLDR; Getting liquidity to launch a token is a non-trivial feat. Either you foot the bill and put up your personal funds as liquidity for your token, or you raise funding and use a part of that as the liquidity. There is, however, a different way. If you are unfamiliar with bonding curves, you can check out this article about curves and use cases to get caught up.
Liquorice Gen (v1) allows a user to create a token bonded to a curve (aka a token bonding curve). The price of the token is determined by the curve, and the collateral being paid into the curve (to buy a token) is stored within the token contract.
Once the predetermined token threshold (and thus collateral threshold as the price is predetermined) is met, the token will then call the MarketTransition
contract, and the collateral will be moved out of the token and into Uniswap V2, along with some newly minted tokens. The price of the tokens in Uniswap will be the end price of the bonding curve, ensuring a level of continuity for investors.
What is Liquorice Gen
Over the course of the Hack Money hackathon, Michal (Linum Labs’ amazing designer) and I built Liquorice Gen. We used only our wit, Webflow, some smart contracts, vue.js
and ethers.js
(if you are curious as to how we pulled that off, you can read about it here).
In early-stage DeFi products there is a liquidity shortage. this is particularly pronounced at hackathons, where most DeFi products start. The products need to get funding before they can launch a product. The funding goes towards food on the table, liquidity for the token sale, and (hopefully) an audit of the smart contracts.
Let’s run through an example of the lifespan of a token created with Liquorice Gen.
Project walkthrough
If you would like to follow along you can find the front-end here, and the repo here. This project is currently only available on desktop and the Rinkeby testnet.
Emilia creates an epic project at a hackathon. Her project needs a utility token (Awesome Token (AWT)). She wants to put her token on Uniswap and have the price set by the free market, but she does not have any cash (or Dai) to spare to seed the liquidity herself.
Emilia then finds Liquorice Gen, and decides to launch her token through it.
Design your Token
The first thing Emilia will do on Liquorice Gen is set the standard ERC20 information, like the name, symbol and collateral currency of her token. The collateral address in the field by default is the DAI address on the Rinkeby network.
Advanced Token Setup
Then Emilia will set the liquidity parameters.
The token threshold is for how many tokens Emilia wants to sell before the token should transition from the bonding curve to a Uniswap market. It is automatically scaled by 1e18 (the standard decimal accuracy for ERC20 tokens). In Liquorice Gen V1 no more tokens will be able to be minted after this transition is complete, so Emilia chooses a high number of tokens.
The minimum number of tokens will only be checked against once the token has expired (i.e not reached the token threshold before the timeout). The timeout is in months and automatically converted into a Unix timestamp of now + your_time_in_months
.
Curve Parameters
Now that Emilia has her transition threshold, she needs to set the parameters for the bonding curve. These parameters will control the tokens price. As Emilia chose to have a very high number of tokens as her threshold, she will set these parameters to be quite low, so that the tokens are not expensive and the threshold can be reached quickly.
Summary
Now Emilia selects the “Show Summary” button to calculate all her outputs.
And here is the summary:
Full Results
Here we can see the end price of the market, as well as how much collateral the bonding curve will need to accumulate before the market will transition. Emilia can see that her number is very high, and she is not sure if she will be able to reach it within her timeframe.
Note: The max token start price
already has the 1e18 scaling for decimals removed. This means the last token sold on Emilia’s bonding curve will cost 990,005,000,000.00 in her chosen collateral token!
She has some options to fix this:
- Set her minimum and maximum threshold significantly lower
- Reduce the steepness of her curve as to make the token prices lower, with the biggest impact being the lowering of the exponential factor (a).
Emilia chooses to lower the number of tokens as well as reduce the steepness of the curve.
Now we can see that Emilia's token price and collected collateral is much lower.
Now that Emilia is happy with her token prices and collateral, she can make her AWT tokens by scrolling to the bottom and clicking shes ready!
Once Emilia has signed the transaction and it has mined, she will be presented with her tokens’ address.
During the hackathon we did not have time to create a front end for Emilia to sell her token on, so she will need to sort that out.
Below is Emilia’s AWT loaded onto Remix. As there is no Front end right now for the token, this is the easiest way to buy tokens.
Here we can see the price of a token changing after a buy and sell:
Getting the buy price for 100.000000000000000000 tokens:
This means that 100 tokens in the beginning of the curve will cost you:
(collateral) 20 000.000000000000002000
Buying some tokens:
Let's buy that 100 tokens. Don't forget to approve the contract as a spender if you are manually following along.
Getting the new buy price:
100 tokens will now cost you:
(collateral) 60 000.000000000000002000
Say Emilia impressed a crypto whale while presenting her hackathon. This whale makes their way to Emilia's token and buys the entire supply.
This buy will push AWT well over the threshold. The contract will only let the whale buy up until the threshold.
Once the whale's transaction has mined, we can see that the market has transitioned.
We can get the address of the Uniswap pair from the events of the AWT contract.
Here we can see the tokens being moved into Uniswap V2, and creating a market.
In the events, we can see that the pair was created, and we can get its address.
Here we can see the token on Unsiwap. We can see the start price being very close to the end price originally predicted by the Liquorice Gen dApp.
And, as below, the whale can sell some of their tokens on the Uniswap pair.
Of course, as the whale bought the entire supply, their selling of tokens will move the market. They also have the option of adding liquidity to the pool, which would decrease the movement of the price, as well as earning the whale interest in being a liquidity provider.
Conclusion
Liquorice Gen provides a novel and innovative way to get your token from 0 to hero, and onto Uniswap V2. We plan on building on this into the future and turning it into a real tool you can use to raise funding for your dApp!