uAD Token (Dollar)
This section focuses on mechanics specific to the uAD product. All UBQ rewards quoted in this section are the rewards before the supply penalty, as explained in the UBQ Token Documentation.
UBQ TokenPrice stability
Price stability pertains to mechanisms that aim to stabilize the token price, short of performing a full price reset. Those mechanics (in each group, e.g., below and above 1.00 USD) are active all at once unless explicitly specified otherwise.
Below 1.00 USD
BURN NOT ACTIVE AT LAUNCH
Incentives for traders. As the token price drops below 1 USD, traders on the 3CRV pool will be incentivized to buy the tokens and disincentivized to sell the token. Incentivization is achieved by burning a percentage of all uAD sold and issuing governance tokens (UBQ) in equal proportions for all uAD bought. Those incentives grow larger the further the price of the token falls below 1.00 USD. We define the function (in terms of percentages) as:
So essentially:
- A price of 0.90 USD would mean that 10% of the seller's uAD are burned before trading them in the swap contract, and a buyer would get 10% of his uAD buy value as bonus UBQ.
- A price of 0.50 USD would mean 50% burned and 50% of the value as bonus UBQ.
Coupon/Auto-redeem minting. As the price falls below 1.00 USD, the system will begin issuing debt in the form of:
- uDEBTs (debt coupons)
Participants may burn uAD tokens in exchange for uDEBT coupons issued at a premium rate. The premium is calculated as follows:
where R stands for the debt ratio: (total supply of uDEBTs) / (total supply of uAD).
- Read about uDEBT token in the "Token list" page
The exact mechanics of each of those are specified in the links above.
Above 1.00 USD
Minting. When the price is above 1.00 USD, new tokens are minted and distributed according to our mint rules.
Based on the following formula:
Price Reset
As seen in BondingV2.sol
function uADPriceReset(uint256 amount) external onlyBondingManager { IMetaPool metaPool = IMetaPool(manager.stableSwapMetaPoolAddress()); // remove one coin uint256 coinWithdrawn = metaPool.remove_liquidity_one_coin( amount, 0, 0 ); ITWAPOracle(manager.twapOracleAddress()).update(); uint256 toTransfer = IERC20(manager.dollarTokenAddress()).balanceOf( address(this) ); IERC20(manager.dollarTokenAddress()).transfer( manager.treasuryAddress(), toTransfer ); emit PriceReset( manager.dollarTokenAddress(), coinWithdrawn, toTransfer ); }
Under extreme conditions, the protocol performs a forced price reset. This is carried out in the following steps:
- The protocol withdraws single-sided liquidity from StableSwap, which it controls (its own LP tokens + LP tokens staked in the bonding contract.)
- The withdraw is done until the peg is restored within some acceptable range
- The withdrawn tokens (either 3CRV or uAD) are kept as a reserve for a future price reset.
Rules and conditions for performing a price reset:
- Price reset is performed only when the price of uAD is < 1.00 USD.
- To start, this will be manually invoked by the protocol deployer but we are aiming to piggy back the reset transaction on uAD token sells against the StableSwap market.
Early Days vs Normal Operation
The term “Early days” pertains to the period of the token between 0 and 30 days of the protocol's official launch. During this period we assume high price volatility.
The differences between the early days period and normal operation are:
- During the early days period, 50% of the new mint will go to the treasury (instead of the standard 10%)
- During the early days period, the threshold for the “Bonus Liquidity Provision” price stabilization mechanic will be set a lot lower and will be staked for a lower duration.
Bonding contract
The bonding contract’s function is to facilitate new mint distribution (seigniorage) after all outstanding debt is paid. Seigniorage is distributed as follows:
- 10% to the Treasury
- 10% to UBQ fund
- 80% to bonding contract participants
New uAD (for seigniorage rewards or debt repayment) is only issued as long as the fractional reserve requirements are met.
A Bonding contract participant (BP) is a person who provides liquidity to a predetermined uAD liquidity pool and subsequently stakes the LP tokens (LPt) for a certain duration (D). The final % of seigniorage allocated to each person is determined by the formula:
Where:
- LPt is the amount of LP tokens staked in the bonding contract
- M is the staking duration multiplier for the LPt tokens
The staking duration multiplier (M) is defined by the following curve, with the minimum staking duration in weeks (D) being 1 week and the maximum 208 weeks (4 years.)
Thus calculated, the BP ensures that the people who are the most invested in the protocol’s stability get the most rewards and the most voting power.
Example Multipliers
Bonus Liquidity Provision. Above the threshold uAD price (P) of 10 USD, the bonus liquidity provision (BLP) mechanic activates. Under this mechanic for each uAD token sale, the protocol matches per cent (M) of the trade value and mints new tokens (NM). Half of NM is automatically sold on the 3CRV pool, and the resulting balance (½ NM + ½ sold NM) is posted as liquidity on the 3CRV pool. The LP tokens are automatically deposited in the bonding contract, on behalf of the user, for a period of 6 months. The user is eligible for all rewards based on those staked tokens and can withdraw them after the staking period ends.
Liquidity Provision
Bonding contract participants are further incentivized with governance tokens (UBQ) when the token price of uAD is close to 1 USD. This is achieved via:
- Rolling multiplier M which depends on the uAD price
- A base UBQ reward per block - U
- The percentage of seigniorage shares which the user holds compared to all seigniorage shares - PS
From here, we can define the reward (R) per user as:
The multiplier M in turn depends on the current uAD price (P) and the previous value of the multiplier . Its initial value will be 2.
Which gives us the following function based on the current uAD price.
Expired Debt
Not implemented at protocol launch. We will honor these manually in the first wave of expired redemption attempts, then automate via smart contracts.
Expired uDEBT will be convertible to UBQ tokens within 30 days of the uDEBT expiration at a rate of (uDEBT:UBQ):
- 2:1 during the first 3 months since the go-live of the protocol
- 10:1 afterward
Rewards Summary
If we are to provide a simplified view of the reward mechanism, it would be the following:
- Provide liquidity near 1.00 USD price & stake LP tokens → rewards in UBQ
- Buy uAD under 1.00 USD price → rewards in UBQ
- Expired uDEBT → convert to UBQ
- Stake LP tokens >= 1-week duration → seigniorage