Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basis-Cash Improvement Proposal #1 #8

samkazemian opened this issue Dec 3, 2020 · 0 comments

Basis-Cash Improvement Proposal #1 #8

samkazemian opened this issue Dec 3, 2020 · 0 comments


Copy link

Title: Use BAC CirculatingSupply for Minting
Author: Basis-Cash Analysis Group
Category: Economic

Simple Summary
The current Basis Cash (BAC) mint function calculates the number of BAC tokens to mint as: totalSupply *(oraclePrice-1). We propose changing this to circulatingSupply *(oraclePrice-1) where ciculatingSupply is the totalSupply of BAC minus the balanceOf BAC within the treasury contract.

The Basis Cash protocol is designed to quickly expand the supply of BAC when the time weighted average Uniswap pair price of BAC-DAI is above 1. There is no hard limit on how much each expansion can create in supply. The function simply calculates the deviation from the oracle price, then multiplies by the current total supply of BAC: totalSupply *(oraclePrice-1).

The minted BAC has two possible destinations: the treasury or the boardroom. The treasury is used for Basis Bond (BAB) holders to redeem BAB for BAC. Minted BAC to the boardroom is distributed to staked Basis Share (BAS) holders. The Basis Cash protocol first mints BAC into the treasury if there is less than 1000 BAC within the treasury, regardless of if there is BAB tokens in circulation. If there is more than 1000 BAC within the treasury at the next expansion, then the protocol mints BAC into the boardroom.

During the first 5 days of the Basis Cash protocol, a hard cap of 50000 BAC tokens will be minted with no expansions through the mint function. Because of this unique scenario and demand for BAC in farming pools, the price of BAC has risen to all time high prices of over $1,000/BAC (currently about $100 as of writing). This means that the first expansion of the protocol after the 5 day genesis period will possibly mint millions of new BAC if current prices hold. These millions of BAC will be placed within the treasury first where they are not able to be accessed to sell into the open market since no BAB tokens have been created. With no new BAC in circulation to lower the price and the total supply of BAC potentially in the millions, the second expansion on day 7 could be excessively large for the early days of the protocol since the total supply of BAC would then be extremely high. Such a high supply of BAC could make stabilizing the peg unnecessarily long which can be fixed with BIP-1’s simple and resilient parameter change.

For example, a BAC price of $500 would mean that the first expansion into the treasury is calculated as: 50000 * (500-1) = 24950000. These 24.95m BAC cannot be accessed by anyone since they are only for BAB holders (which don’t exist on day 6). With no new BAC supply entering the market to lower the price, the second expansion on day 7 would then be calculated as: 24950000 * (500-1) = 12450050000

This creates billions of BAC in circulation if a comparable scenario occurs. Of course, it’s entirely possible that the price of BAC drops significantly naturally as this scenario is anticipated, but BIP-1’s simple and intuitive fix for this early scenario is a win-win. The calculation of the circulatingSupply instead of totalSupply would prevent excessive expansion in this current scenario (and all future scenarios). This change is not a vulnerability/security fix, it simply takes more parameters into account (the supply of treasury BAC) when calculating expansions. This new addition to the expansion phase of the protocol makes Basis Cash more secure against all possible economic states now and in the future.

We propose changing the BAC minting function from totalSupply *(oraclePrice-1) to instead use circulatingSupply *(oraclePrice-1) where circulatingSupply is calculated as all BAC minus the tokens within the treasury contract.

This permanently solves the unique motivating scenario as well as creates a future-proof new protocol rule that can remain within the Basis Cash protocol. This change to the protocol expansion rules is in effect more resilient not only for the genesis case that it is needed, but also makes the Basis Cash system more adaptable if there’s various levels of funding remaining in the treasury for BAB holders.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

No branches or pull requests

2 participants