This blog post was inspired by a Twitter conversation with John Kelleher from LevelK about Fairmint’s c-org bonding curve as implemented for the DXdao launch. Because of this, I use $DXD, the native token for DXdao in some of the examples.
If you don’t know what a bonding curve is, check out this article by Simon De La Rouviere.
I will give an overview of Bancor style bonding curves with an additional function that enables simultaneous fundraising and increasing liquidity for a token in one transaction. Here is a whitepaper which describes how this bonding curve with a twist can be used for community fundraising. If you like math, you can see Bancor’s bonding curve formulas in the paper too. Token mechanics start on page 6. I had a really hard time getting anybody to understand this method for simultaneous fundraising and increasing liquidity in 2017 and 2018.
We planned to implement the bonding curve with a twist in the first version of my project Native which launched at the end of 2018. I had a lot of lessons to learn, and v1 was ultimately scrapped.
So, let's say we have 100 PT (Project Tokens) backed by a Reserve of 10 DAI. We set a Reserve Ratio (RR), which can be compared to fractional reserve banking. It determines what percentage of a token’s total market cap will be held in the reserve. The RR can be set from 0-100%.
At a 100% RR, each PT is fully backed by 0.1 DAI - so the PT price is 0.1 DAI. The token holder is guaranteed to receive that exact value when selling tokens to the bonding curve. $USDC is a good example of a fully backed token as it is 1:1 backed by USD.
At a 50% RR, each PT is backed by 0.05 DAI but the PT price remains at 0.1 DAI. In this case we have introduced a price curve. This means each subsequent token holder that sells to the bonding curve will receive a lower price than the last. And vice versa, when there is a new token purchaser, the token price moves up.
At a 0% RR, PTs aren’t backed by any assets. Any token without a reserve has a 0% RR. $ETH is an example of this.
If each DXD is sold at 0.1 ETH (easy number for this example), DXdao splits the capital between the DAO Fund (0.09 ETH) and the Reserve (0.01 ETH). Each DXD is redeemable for a proportionate share of the reserve, so it's backed at a 100% RR. It is, however, important to note that each DXD is only redeemable for 10% (0.01 ETH) of the amount invested because the rest has been allocated to the DAO Fund. This is not ideal if one wishes to sell their tokens back to the bonding curve as they would be taking a huge loss.
Now let's use a 10% RR. When DXD is purchased, 0.01 ETH still goes to the Reserve and 0.09 ETH goes to DAO Fund. What changes is that the price of each token sold to the bonding curve will not send back the same amount of value for each token. It will start at a market price of 0.1 ETH for the first seller and trend down towards zero as more sales to the bonding curve take place. However, when someone buys tokens from the bonding curve, the Reserve gets replenished and the price goes back up (slowly if sending 90% of each deposit to the DAO fund).
Note that the DXD price, with 90% of capital being in the DAO Fund, remains the same as if it was 100% backed. This makes sense because the other 90% is essentially potential energy granted to the DAO. There is still the full 100% within the organization. When spent by the DAO, that 90% should return value equal to or greater than its original value back to token holders.
Now that we have an overview of RRs and this type of bonding curve, I want to note the correlation between bonding curves and traditional exchange order books. This applies to Uniswap as well as Bancor. When selling a large number of tokens into a curve at one time, there will be high slippage. This is just like selling into the bids on a traditional exchange. The same is true with buying a high number of tokens at the same time - you are going into the asks to fill the order.
Now let’s check out this image from Bancor’s whitepaper showing the price curves for different RRs.
Lower RR = more price volatilityHigher RR = more price stability
In the early stages of a DAO, getting off the ground is more important than providing ample liquidity for the DAO’s token. This is when sending 90% of incoming ETH to the DAO Fund, and using a volatile RR of around 10% makes sense. This is comparable to a startup raising a seed round and then immediately providing a limited number of share buyback contracts that investors can use if they want to exit their investment.
Once the DAO is well-capitalized from either earning revenues or receiving ample investment, increasing token liquidity and working towards a higher RR for increased price stability can be more valuable than continuing to add capital to the DAO Fund.
A sufficiently capitalized DAO can increase the portion of ETH coming that gets allocated to the Reserve. This raises the RR and stabilizes the token price. If the Reserve ever reaches a 100% RR, all new ETH coming into the Reserve directly increases the price of the fully backed tokens.
Now let's consider the DXdao implementation of the Fairmint bonding curve. If a token holders wants immediate liquidity available directly through the smart contract, they are out of luck as they would have to take a 90%+ loss to sell back to the curve. Other exchanges do build liquidity quickly and then better rates become available. Using the bonding curve with a twist, investors can exit their position up to a certain amount (based on the RR and capital split configuration) at any time, at or near market price by just sending tokens back to the bonding curve.
If a high number of investors all exit a token on a bonding curve at one time, and there are no new investors coming in, the project is presumably dead or at least not doing great. The token price will track all the way down its RR curve towards 0. However, unlike a traditional exchange where, when a project is dead, traders can pull all of their buy orders immediately and leave the sellers without any way to get money back, all token holders are guaranteed to receive something back from the reserve using a bonding curve.
Last but not least, these bonding curves provide a two-way arbitrage opportunity between the bonding curve and any other AMM or traditional exchange that lists the token. If a price is too high on an exchange, traders can mint new tokens from the bonding curve and sell them at a gain. If the price is too low on another exchange, then traders can buy tokens from the other exchange and sell them to the bonding curve.
Thanks for reading!