V2 Token Migration, Distribution and setting up for veBAO

BAO token migration and unlocking proposal

(This concept is quite long as there is much to discuss not just in terms of the core implementation of the BAO distribution/migration but also all the operational changes that must accompany it)

nox - I am more than happy to answer any questions you might have, but also fortunately for us, a lot of the same principles from the previous concept about token migration/distribution are present in this concept, only modified to show different choices or improvements made by smart contract galaxy since I last posted in concepts…Enjoy!!!


Following the annual roadmap concept and BIP proposal, we know that we must revisit how the unlocking system of BAO works, and we learned that our current hard cap is too high for many contracts to work properly (math issues).

This proposal aims to propose a BAO token migration that would interact with the staking contract and veBAO emissions model proposed in the Annual roadmap concept as well as unlocking of the tokens. There is also a lot of explanation on the details of the change in governance as a whole, and this proposal aims to be fully comprehensive of all changes and decisions we need to make as a DAO.

This proposal is not to vote on the details of the staking contract or the veBAO model specifically as that will be in a separate BIP. This proposal is to vote/verify the distribution curve proposed for locked BAO tokens, and the supply reduction in order to set the DAO up to implement and start voting escrow alongside the new token. Once we have made the decisions key to this proposal, then and only then, can we make follow up proposals to move forward with the specifics of how we incentivize different groups/actions in the new system.

Issues and Hypothesis

Token ownership locked in MasterFarmer contract

Due to the design of different contracts, the BAO token contract is permanently owned by the MasterFarmer contract, meaning that BAO minting and distribution always need to go through MasterFarmer.

This also means that the current locked BAO and future minted BAO needs to follow the same rules (given we do not migrate to a new token). The percentage of locked BAO and the number of block until unlock is completed will be shared among any past and future use.

Having proposed in the annual roadmap a meta token to the farm will give the DAO 5% of farmed BAO now, but the 95% remaining will play with the same set of rules as every farmer of this community.

Total BAO hard cap is too high for current veBAO contract implementation

As specified in the original annual roadmap concept, the veBAO contract, which would be based on the veCRV contract, has difficulties handling the large hard cap of BAO (over 1T). A token migration with a redemption rate of 1000:1 could be implemented to remove this limitation.

Future incentives would be hard to distribute

It is almost impossible right now to give BAO incentives on other chains and impossible to do staking rewards outside MasterFarmer. Also, if we still use MasterFarmer to reward users by staking, it is again with the same conditions as the initial stakers of phase 1 of our distribution schedule.

The DAO does not have the flexibility currently to reward or give incentives in different forms or modalities.

Bao coupons locking is a big issue

Bao coupons were a bad idea from the start. It has been admitted by the galaxies for a few months and it is giving headache on how to handle governance voting power of xDAI locked BAO and how those locked BAO could work in the veBAO model if they are cross-chain.

We need to account for the longevity in supporting Bao coupons and to align the unlocking timeline of xDai MasterFarmer with the main-net MasterFarmer contract, knowing xDai time blocks are not fixed.

Founder share vesting for core members is not defined properly

There are some galaxy members who have vested BAO in part of their agreements to work for the DAO. Those vested BAO comes from the founder wallet and follows the same distribution pattern as the rest of the MasterFarmer users (5% now, 95% locked).

The vested BAO are still in the founder wallet and are not properly vested other than being locked with the rest of the BAO tokens. They aren’t also in the possession or directly assigned to those galaxy members.

This proposal does not aim to discuss the distribution and allocation among galaxy members but to provide a solution to this particular issue.

Unlocking model has to be redefined alongside the veBAO model

The DAO can only play currently with the last block until the end of the unlock period to determine the amount of BAO that is released on each block and for how many years as the unlocking is linear. The annual roadmap concept of this September split the community about how to proceed with the dilution of the BAO that could happen continuously for 3 years.


The solution consists of undertaking a token contract migration that would give more flexibility in the distribution and future use of the tokens by the DAO.

By taking a snapshot of the locked Bao tokens on main net and also the bao coupons locked on xDai, we will be able to unify on a Bao V2 contract all the Bao holders migrate to in order for them to partake in BAO governance on ethereum main-net, but also be considered in the veBAO model for revenue sharing/governance by the protocol if they choose to lock.

This concept also proposes a way to manage locked tokens over new contracts.

It will consist of many components that would be described thoughtfully in the next sections

  • Distribution=> for those with locked BAOv1 (on main-net and xDAI), an unlocking of 1000:1 BAOv2 tokens will be distributed to those addresses with locked bao in accordance with the distribution and slashing function proposed below, on ethereum main-net. (more details below)

  • Swap 1000:1 contract for BAOv1 to BAOv2 (for those tokens already circulating)

  • to be determined, still need more discussion to make a definitive plan here => Liquidity providers migration

  • Snapshot of ETH / xDai

    • [Ethereum(Circulating + locked supply) + xDAI(Circulating + locked supply)] = total supply BAOv2
    • BAOv2 supply is overtime migrated back to main-net and now incentivized through vote escrow
  • Protocol multi-sig plans

  • Notify CEXs of migration

  • Remove tBAO in order to move toward veBAO and convert bao coupons to BAOv2 (xDai => Ethereum)

    • Use bao 1:1 contract on xDAI to allow xDAI tokens to migrate back seamlessly
  • veBAO details relating to the token distribution

  • The 3 choices for locked bao holders in claiming directly, or locking BAOv2 tokens in veBAO


(summary) The BAO smart contract galaxy has been looking at ways in which to safely and fairly move away from our original governance model using the Bao MasterFarmer contract and the accompanying Bao Token (both on main-net and xDAI/Gnosis chain). To briefly reiterate on previous discussion, this is because with the current state of how many locked tokens there are relative to circulating tokens as a result of the farming era that took place on both chains, the rate at which the original linear unlock was scheduled to happen would have caused too large of a dilution (inflation of the Bao token supply) for the protocol to safely handle. To explain further, this is given that we have not yet successfully scaled bao-markets (hard-synths on main-net), before the original unlock time was scheduled, which was/is necessary to help mitigate the dilution of our governance token. More details can be read in previous governance concepts and the proposal to delay the unlock (reference BIP-6 => present).

This brings me to how the smart contract galaxy plans to unlock the tokens that were promised to Bao liquidity farmers. The first proposed step is to define a migration to a new token (BAO v2) that reduces the supply by a factor of 1,000 relative to the original BAO token (~1.5 trillion → ~1.5 billion tokens). This is because the math used inside of the voting escrow contract implementation we will be using from curve finance’s contracts causes errors when using larger numbers for some operations.

The proposed distribution will take place over (could be 2 or 3 years depending on what we want, but this concept I chose to show people the 3 year scenario) 3 years and allow anyone to claim their locked tokens before the 3 year period is over in the form of BAOv2 tokens, but at a slashed rate defined by a function that reaches some minimum slash rate (details below describing slash function) that slashes the balance of those who end the distribution early by a certain amount. For example, if one were to wait for 1.5 years (half-way point of the distribution) to claim all their tokens, they would receive all the unlocked tokens from the first 1.5 years of the distribution function with no slash and the rest beyond the 1.5 years they waited to end the distribution would be given to them at a slashed rate (in this proposal the endDistribution() function allows the address to receive 5% of the BAO left to be distributed after the date they waited to end the distribution). Only after 3 years do you receive all (100%) the locked BAO tokens promised at no slash, given as the new BAOv2 token (1000:1).

We have yet to decide where the slashed balances will go (separate BIP to decide after this one), but most practically they would be burned in some amount, then some would go to the protocol for future incentives to people who are long term invested in BAO (namely, liquidity providers).

Example Distribution Function:

-Here is the function the smart contract galaxy currently has proposed in the latest governance concept (weighted more heavily to the end)

-this is to make a larger slash for those that want to dilute the token faster and sell

-X in this piecewise function below is the number of days (the end being the 1095th day, AKA 3 years)

-example 3yr distribution function below

The distribution function we implemented in this concept, and the other 2 yr distribution example function in a previous concept are the options proposed by the smart contract galaxy. The function we’ve defined so far is designed to weight distribution towards the end, so those who wait longer are rewarded more so. Any function that does not have a bias to the end of the 3 years will give more incentive for people to slash and sell the tokens rather than continue to participate in the DAO/vote escrow system. Hence, why the function here is proposed as a realistic balance between people who slash and governance holders.

Example Slash Function:

X is days since start of distribution

0 <= X <= 100 || -.05x (starts at 100% slash and approaches 95% slash)

100 <= X <= 1095 || .05 constant (constant at 95% slash)

The slash function proposed starts at the same date the address selects to start their BAO distribution. They can slash immediately at the start of distribution for a ~99.9% slash or wait until time X (currently 100) days has elapsed on their distribution and the slash minimum has been reached, at a proposed 95% (the slash rate function decreases to a given rate minimum before going constant at that rate minimum). Meaning any time after time X (100 days into their distribution) the same minimum slash rate of tokens will be constant moving forward until the full 2 years has elapsed. If one were to choose to wait 1 year (half-way) before ending early for the slash they will still receive the first years distribution tokens without a slash and the rest thereafter 1 year will be received at the 95% slash rate (so the address receives 5% of what is left for the rest of the 2 years).

^^^Note: the current minimum slash point is reached at 100 days as written above but we could change this to 150 days for example to correspond with the lengthening from 2 years in previous post to 3 years distribution proposed here. There is not much reason to have it extend more than 150 days though as we do not want people who plan to slash to have to wait almost as long as the distribution itself in order to do so, otherwise there is not enough incentive to slashers.

3 years vs 2 year long distribution?

-the 3 year distribution curve proposed provides less inflation day to day (overtime) as compared to the 2 year distribution mentioned in the first concept about token migration/unlock. This means the price of BAO will be more stable as we move through the distribution which is inherently safer/less risky for the DAO.

-the 3 year distribution will also mean the amount of tokens collected in slash will be theoretically greater (could be the same if everyone were to wait longer because the function is now longer) depending on how many choose to slash at which point in time, because the distribution function now requires more time to reach the same amount of BAO available in the context of the 2 year function proposed before this one.

-the time is also a key difference as the 2 year distribution finishes a year earlier which could be viewed as a positive, but because it is moving faster in comparison it will provide more aggressive downward pressure on the price of BAO.

For BAOv1 that is already circulating, we will make a simple swapping function that converts the BAOv1 balance to the resultant BAOv2 balance factoring in the supply reduction as mentioned previously.

To summarize, all tokens whether unlocked/circulating or locked will be converted and given at a supply reduction of 1/1,000 (.001) relative to the ~1.5 trillion BAOv1 tokens.

Swap 1000:1 contract for BaoV2 redemption

There will be a contract that will let every token holder exchange their BAOv1 tokens for BAOv2 tokens at a 1000:1 ratio. So for every 1000 BAOv1, someone will receive 1 BAOv2. The Bao on xDai that is already in circulation will need to be bridged back to main-net for BAOv2 redemption.

Liquidity provider migrations highly subject to change, more so than any other section

Any current BAOv1 liquidity providers will have to move to new BAOv2 liquidity then stake those new LPs into its respective veBAO gauge for BAOv2 rewards when veBAO is deployed. This can be done through the respective AMM protocol the liquidity provider is on (Uniswap or Sushiswap) and potentially through a BAO liquidity migration contract that does all of it for the LP with one transaction through our UI.

The treasury could seed liquidity for incentivized LPs and stake them into the veBAO liquidity gauges along with the rest of those that chose to provide liquidity to liquidity gauges for veBAO emissions.

(There will be a separate BIP after this one detailing all the BAO liquidity gauges we will add to incentivize a specific group of LP tokens for both Bao Baskets and Bao Markets

Reference List of LPs we will need for governance, operations, and products (BAO token, baskets, markets in the very near future)


  • BAOv2/ETH LPs, BAOv2/USDC LPs, for a liquid token

Bao Markets:

  • baoUSD-3CRV curve LP token
  • baoUSD-USDC LPs
  • others later?

Bao Baskets:

  • others later when we have another basket besides bSTBL?

Bao Main-net Collateral strategies using baskets and markets simultaneously:

  • bSTBL-baoUSD Curve LP token (baskets + markets)

Snapshot of ETH / xDai locked BAO

A snapshot will be taken for wallets that have locked BAO on main-net and Bao Coupons locked on xDai. The total per address across both chains will be recorded for the total supply number to be given on ethereum main-net, scaled down by 1000 as stated previously.

Protocol multi-sig plans

All Dao multi-sigs will migrate BAOv1 to BAOv2 tokens, any locked BAO will follow the same distribution as all other locked BAO. Liquidity will be migrated over and then added to liquidity gauges under the new veBAO model.

Exchanges migration

We will notify FTX, Gate, and Hotbit of the migration. They can choose to migrate or not, considering they hold BAOv1 tokens for their perpetual futures market.

tBAO + Bao Coupons migration

Incentives to tBAO will be removed and those with staked bao coupons will unstake, swap BAO.cx to BAOv1 using the 1:1 contract on xDAI (the DAO multi-sig will fund these swaps), then bridge BAOv1 tokens back to main-net. After the BAOv1 tokens have been bridged to main-net the swap contract from BAOv1 to BAOv2 tokens can be used to migrate to the new token.

veBAO details relating to the token distribution

With the distribution proposed above, we will now have an unlocking process taking place over the 3 year time period that gives everyone a proportional weighting of the tokens they were promised in the original unlock of locked BAO balances and to already circulating BAOv1 tokens.

The smart contract galaxy plans to set minting privileges for the new BAOv2 token to the BAO voting escrow minter contract so the only source of new BAOv2 supply will be from emissions in the voting escrow model (as it is in curve finance), beyond the distribution of the tokens which will be pre-minted in the token contract. We will have to make a separate proposal/concept and discussion for what we want our emissions function to look like and how much our “pre-mine” will be, or in other words how much extra supply as a percentage will be used in the future mining epochs for BAO rewards to BAO liquidity gauges relative to the number of tokens we distributed across the distribution.

Curve Inflation example:

  • here is curve’s token inflation schedule below for reference in the context of veCRV (pre-mine is 43%, the number on the y-axis at Time/x = 0)
  • this means curve liquidity gauges will receive ~57% of the future curve token supply as time => infinity

  • a 43% BAO pre-mine leaves ~57% of the total supply that will exist as time => infinity to the veBAO/BAO liquidity gauges
  • this theoretical maximum supply number our token will approach is based off of the starting supply from the distribution contract, roughly 1.2B to 1.5B BAOv2 tokens, and the supply function + initial rate we select. In this case we are using the function curve implemented, which is 2^(¼), at an initial rate resulting in the 43% premine as it is in curve’s implementation (this is subject to change based on a future BIP discussing the starting liquidity gauges, and veBAO mining epochs, although some of that is alluded to/describe in this proposal).

The 3 options for locked bao holders

As for veBAO with regards to the distribution, the smart contract galaxy proposes we allow for 3 possible outcomes for those with locked BAO.

  1. Collect/claim all tokens available before 3 years at a slashed rate depending on how soon they are claimed (in the form of BAOv2 tokens) based on the distribution and slash function proposed above (tokens are now in circulation after this function call)

  2. Collect/claim all tokens at 3 years (or sometime after) to receive 100% of the locked balance (in the form of the BAOv2 token) into the account address that farmed BAOv1 (now circulating)

  3. Choose to lock your balance in the BAOv2 distribution contract directly into voting escrow for a minimum of 3 years and a maximum of 4 years to get into veBAO as early as possible (your tokens will not be circulating but you will get the benefits of having veBAO)


For this proposal to be successful, it must be aligned/implemented around the same time as the staking contract and veBAO model get deployed/start in order to preserve incentives for token holders and liquidity providers during the change toward the new governance model.


This solution will need work/testing for the galaxies to accomplish and verify the security of the process. It is also in our interest to get these contracts audited beyond simply testing them vigorously internal to the smart contract galaxy so we will have to form a BIP to verify payment to an auditing firm for all of it in another BIP. This will benefit the DAO in the long term by resolving many of the issues stated at first. While the distribution model/parameters could still be discussed and changed, this would be a good check and balance to get a definitive conclusion on whether the community accepts this distribution and token migration process (for the supply reduction) so we can head one step closer to deploying and starting veBAO as governance and incentives for liquidity and all of our products (Bao Baskets, Bao Markets, future products)

Proposals that proceed this one

  1. Voting on the supply parameters for voting escrow BAO and the respective liquidity gauges we will incentivize to start
  2. What will we do with the slashed balances that come from the distribution/unlocking
  3. Voting to Audit the BAOv1 to BAOv2 swapper contract, BAOv2 token contract, Distribution contract, and BAO voting escrow contracts


Annual agenda concept https://gov.bao.finance/t/the-next-path-for-bao-annual-roadmap-bip/865

BIP-6 Annual agenda https://gov.bao.finance/t/bip-6-annual-agenda-changes-and-hard-synth-alpha/951

NEW UPDATES to add to this concept

reference last post about token migration/distribution here → BAO unlocking distribution + migration to work with voting escrow (veBAO)

Also now that I am thinking about it, I forgot to mention some details that are key to the snapshot of BAO balances (will include them in final draft under the snapshot section) we will take for BAOv2, but I will include them in the BIP when we push to governance proposal/voting on snapshot.

here are the steps for snapshot:

  1. end all BAOv1 farming after this proposal passes as a vote, the amount of BAO tokens/supply will be fixed from this point forward until the distributions are started.

  2. create a merkle proof of all locked balances on both xDAI and main-net for each BAO address

  3. total supply will now be =>
    [(xDAI → circulating supply + locked supply) +
    (main-net → circulating supply + locked supply)]

  4. this new fixed total supply number for BAOv1 tokens will now be scaled down by 1000:1 BAOv2 tokens in accordance with the proposal to work with a voting escrow contract

  5. start the BAO distributions after the smart contract galaxy has deployed new BAOv2 token and pre-minted upon deployment the exact necessary amount of tokens to give out during the distribution

We could also add a bUSD-bSTBL LP?

We should add a reference here for the other concept I feel.

1 Like

"Bao Main-net Collateral strategies using baskets and markets simultaneously:

  • bSTBL-baoUSD Curve LP token (baskets + markets)"

already included just below where u highlighted :), and I made the edits in post below to reference previous governance concept

Haha, I’m silly you’re on it N0x rock on!

From a conversation in the general chat I realized I may not actually understand how the slashed fees work and there seem to be disagreements between people on what they mean, can I get a eli5 of this?