The reserve on the our bonding curve contracts will never grow far beyond the Target Reserve Ratio (TRR) point as holders will sell off the CICs and remove the reserves beyond it.
Giving people the option to multiply the reserve and supply tokens with the same multiple (without a price change) would be a way to increase the overall liquidity.
But because that would give an advantage to liquidity providers when the CIC price is above 1:1 we need to ensure that excess tokens are given to the community - in the form of a Basic Income pool.
### Note on depth_shrink
While a depth_bump gives people the ability to grow the liquidity ppol while taking a loss and as a result incresing the Basic Income
- a depth shrink (spec comming) can have the same effect by reducing the liquidity depth.
- The result of a depth bump and depth shrink means that a market can determine the appropriate liquidity depth.
We have no ability to increase liquidity depth (reserve and supply outside of the bonding curve) in the case where a system wants to grow without effecting the price.
The idea would be to keep the CIC price 1:1 with reserve and increase both reserve and supply equally (with the same multiple) (off the curve)
To avoid gaming: Excess tokens created in this process (beyond those minted along the bonding curve) should be given to a specific address designated in the Converter constructor.
> lash: "specific address in the converter constructor." Is this feasible without changing code? Where else could we put this without changing code? Could contract registry help?
> lash: this must be performed as an atomic operation.
> lash: Is it possible to set up the equation so that we avoid the case of having to handle overshoot in a special wallet; does it help to define the token issuance as the target instead of the amount of reserve?
* A public depthBump Funcation is added to the converter contract which takes in reserve R1
* Calculate the multiple to teh reserve (R1/R0) and mint an amount of tokens T1 = T0(R1/R0) - Where R0 and T0 are the inital amount of reserve and supply
* Calculate the amount of tokens (Tc) that would have been created on the bonding curve due to R1.
* If the tokens T1 > Tc then Te = (T1-Tc) and Te goes to a desginated wallet (Community Pool) and Tc goes to whomever added the R1 (thus not giving the liquidity provider a advantage)
* If the tokens T1 <= Tc then T1 goes to whomever added the R1 (in this case the liquidity provider takes a loss)