uAD Token (Dollar)

Ubiquity DAO
Ubiquity DAO
Published in
6 min readSep 1, 2021

--

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.

Price 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)

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 Bonding.sol:

function uADPriceReset(uint256 amount) external onlyBondingManager {
IMetaPool metaPool = IMetaPool(manager.stableSwapMetaPoolAddress());
// safe approve
IERC20(manager.stableSwapMetaPoolAddress()).safeApprove(
address(this),
amount
);
// remove one coin
uint256 expected =
(metaPool.calc_withdraw_one_coin(amount, 0) * 99) / 100;
// update twap
metaPool.remove_liquidity_one_coin(amount, 0, expected);
ITWAPOracle(manager.twapOracleAddress()).update();
IERC20(manager.dollarTokenAddress()).safeTransfer(
manager.treasuryAddress(),
IERC20(manager.dollarTokenAddress()).balanceOf(address(this))
);
}

function uADPriceReset.

Under extreme conditions, the protocol performs a forced price reset. This is carried out in the following steps:

  1. The protocol withdraws single-sided liquidity from StableSwap, which it controls (its own LP tokens + LP tokens staked in the bonding contract.)
  2. The withdraw is done until the peg is restored within some acceptable range
  3. 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 looking to use Chainlink’s random number generator to randomly invoke when the condition is met in order to avoid being gamed by arbitrageurs.

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

IMPORTANT: new uAD (for seigniorage rewards or debt repayment) is only issued as long as the fractional reserve requirements are met.

A bonding contract participant 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 M_{-1}M−1​. Its initial value will be 2.

Which gives us the following function based on the current uAD price.

Expired Debt

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

The uAD (Dollar) is a Primary Token*.

* the main user-facing tokens. 95%+ of the users of the system need to be concerned only with those. They drive the main functionality of the system.

--

--