PROPOSAL: Deploy the VAI PEG Stability module and Supply Liquidity to PancakeSwap for the VAI/USDT Pair

Introduction

This proposal presents a plan to attain and maintain the peg of VAI to $1. The proposal involves a series of steps, starting with providing liquidity to PancakeSwap V2 (PCS) for the VAI/USDT pair, and followed by further developments and evaluations.

Proposal Overview

  1. Supply liquidity to PCS using the treasury:
  • Contribute 180K VAI and 180K USDT to the PCS VAI/USDT pair.
  • Transfer the LP tokens to the Venus treasury contract.(Automatically executed in the VIP)
  1. Develop and deploy Peg Stability Modules (PSM) for VAI/USDT and VAI/USDC, based on MakerDAO’s PSM

  2. Implement VAI Savings Rate (VSR) to provide additional utility for VAI, based on MakerDAO’s DAI Savings Rate

  3. Upgrade the liquidation sequence to prioritize VAI debt reduction.

Benefits of Supplying Liquidity to PancakeSwap

Providing liquidity to the VAI/USDT pair on PancakeSwap offers multiple advantages:

  • Support the PSM
  • Enhanced price stability: Increased liquidity helps maintain the VAI price peg to $1.
  • Improved trading experience: Reduced slippage and tighter spreads for VAI trading on PancakeSwap.
  • Increased VAI utility: Greater accessibility and stability of VAI attracts more users and use cases within the Venus ecosystem.

Peg Stability Module (PSM)

The Peg Stability Module (PSM) is a mechanism designed to ensure the peg of VAI to $1 by offering PSM contracts similar to those provided by MakerDAO for DAI. These contracts enable users to swap VAI and another stablecoin (USDT or USDC) at a fixed conversion rate. The PSM can create a more stable and liquid environment for VAI trading, thus helping maintain its peg.

Key components of the PSM:

  • Stablecoin association: The PSM contract is associated with two stablecoins - VAI, the coin whose peg we want to maintain, and USDT or USDC, the supporting coins used to help maintain the VAI peg.
  • Dual PSM contracts: The initial goal is to deploy two separate PSM contracts, one for USDT and another for USDC, to provide more options and flexibility for users.
  • Fixed conversion rate: The PSM allows users to swap VAI and USDT (or USDC) at a 1:1 conversion rate, ensuring the value of VAI remains at $1.
  • Swap operations: Users can send VAI to the PSM and receive USDT (or USDC) if there’s sufficient balance in the PSM, and vice versa. Users can send USDT (or USDC) to the PSM and receive VAI, as long as the configurable limit of VAI minted by the PSM isn’t surpassed.
  • No stability fee: The VAI emitted by the PSM will not have any associated stability fee or interest accrual.
  • Configurable fees: The PSM has three configurable variables via VIP:
    • tin: fee charged when USDT (or USDC) is sent to the PSM.
    • tout: fee charged when VAI is sent to the PSM.
    • maxMintedVAI: the maximum amount of VAI that the PSM can distribute.
  • Collected fees: The fees collected during swaps are sent to the Venus Treasury contract, always in VAI. The treasury address is stored in a storage variable and can only be set by the admin/owner of the contract (the Normal Timelock).

In summary, the PSM plays a crucial role in maintaining the peg of VAI to $1 by offering users the ability to swap VAI and USDT (or USDC) at a fixed conversion rate. The configurable fees and limits provide additional control over the swapping process, while the collected fees contribute to the Venus Treasury, benefiting the entire ecosystem.

Integration of the oracle price

The main idea of this section is to consider the USD value of the stable coin, and peg the VAI to that value, stop assuming the value of the stable coin used (USDT or USDC) is always $1. To protect the value of VAI, we will consider the following rules for the USD value of the stable coin (reference here):

swapVAIForStable (the user sends VAI and receives USDT)

  • If the oracle price of the stable coin is below $1, we should consider 1 stable = $1
  • If the oracle price of the stable coin is above $1, we should consider 1 stable = oracle price

swapStableForVAI (the user sends USDT and receives VAI)

  • If the oracle price of the stable coin is below $1, we should consider 1 stable = oracle price
  • If the oracle price of the stable coin is above $1, we should consider 1 stable = $1

The following graph shows these rules:

Examples

swapVAIForStable

  • Example 1:

    • 1 USDT = $0.90 (conversion rate according to our oracles)
    • Input: the user will define he wants to receive 1 USDT
    • First, we have to calculate how many VAI’s are equivalent to 1 USDT
      • Conversion rate to consider: max(1, 0.9) => 1 USDT = $1 = 1 VAI
      • The user has to send (1 USDT * 1 $/USDT) 1 VAI + fees
      • (assuming feeOut = 10%, 0.10 VAI will be sent to the treasury, and 1 VAI will be burnt, so the total amount the user is providing is 1.1 VAI)
      • the fee is calculated considering the “principal” VAI amount that we are to burn (1 VAI = $1)
  • Example 2:

    • 1 USDT = $1.1 (conversion rate according to our oracles)
    • Input: the user will define he wants to receive 10 USDT
    • First, we have to calculate how many VAI’s are equivalent to 10 USDT
      • Conversion rate to consider: max(1, 1.1) => 1 USDT = $1.1 = 1.1 VAI
      • The user has to send (10 USDT * 1.1 $/USDT) 11 VAI + fees
      • (assuming feeOut = 10%, 1.1 VAI will be sent to the treasury, and 10 VAI will be burnt, so the total amount the user is providing is 11.1 VAI)
      • the fee is calculated considering the “principal” VAI amount that we are to burn (11 VAI = $11)

swapStableForVAI

  • Example 1:

    • 1 USDT = $0.90 (conversion rate according to our oracles)
    • Input: the user will define he wants to send 10 USDT to the PSM
    • First, we have to calculate how many VAI’s are equivalent to 10 USDT
      • Conversion rate to consider: min(1, 0.9) => 10 USDT = $9 = 9 VAI
      • The user will receive 10 USDT * 0.9 = 9 VAI (- fees)
      • (assuming feeIn = 10%, 0.9 VAI will be sent to the treasury, 8.1 VAI will be sent to the user
      • the fee is calculated considering the “principal” VAI amount (9 VAI = $9)
  • Example 2:

    • 1 USDT = $1.1 (conversion rate according to our oracles)
    • Input: the user will define he wants to send 10 USDT to the PSM
    • First, we have to calculate how many VAI’s are equivalent to 10 USDT
      • Conversion rate to consider: min(1, 1.1) => 10 USDT = $10 = 10 VAI
      • The user will receive 10 USDT * 1.0 = 10 VAI (- fees)
      • (assuming feeIn = 10%, 1 VAI will be sent to the treasury, 9 VAI will be sent to the user
      • the fee is calculated considering the “principal” VAI amount (10 VAI = $10)

VAI Savings Rate (VSR) Contract

The VAI Savings Rate (VSR) contract is a smart contract designed to accept deposits of VAI and mint SavingsVAI tokens for depositors. This contract offers users an opportunity to earn interest on their VAI deposits, while also providing additional utility for the VAI token within the Venus ecosystem.

Key features of the VAI Savings Rate contract:

  • Deposit and minting: Users deposit VAI into the VSR contract, which mints and issues SavingsVAI tokens to the depositor according to their VAI deposit amount.
  • Redeem and return: Users can redeem their SavingsVAI tokens at any time, receiving VAI in return. The amount of VAI received upon redemption will always be equal to or greater than the initial VAI deposit used to obtain the SavingsVAI tokens.
  • SavingsVAI token: SavingsVAI is an ERC-20 token representing a redeemable deposit in the VSR. The redeem process is guaranteed and immediate, with no lock-up periods.
  • ERC-4626 implementation: The VSR contract can implement the ERC-4626 standard (ERC-4626: Tokenized Vaults), where VAI serves as the asset and SavingsVAI functions as the shares.

The VAI Savings Rate contract introduces an additional layer of utility for VAI by allowing users to earn interest on their deposits. This mechanism not only incentivizes holding VAI but also enhances the overall value proposition of the Venus ecosystem.

Conclusion

This proposal seeks to maintain the VAI peg to $1 with the release of the VAI PEG Stability module and by supplying liquidity to the VAI/USDT pair on PancakeSwap. The plan starts with utilizing the treasury for liquidity provision on PancakeSwap and continues with additional developments, such as Peg Stability Modules, VAI Savings Rate, and liquidation sequence upgrades.

12 Likes

I really think this is a very good proposal!

One slight noob question: With 180k: isn’t there a chance that we could run out of liquidity very fast?

Perhaps I just don’t understand it fully.

If User B has 200k of VAI that he/she bought (not minted) and he would like to exchange this amount for USDT: what would happen?
Will there be some kind of refill?
Or would the user have to wait for people swapping in the opposite direction to swap the remaining (20k - fees from swap 1)?

Addition of a PSM is key to get a good peg.

@Hiromatsu to your point, the LP doesn’t have much liquidity and is taken as Venus as 180k VAI in the treasury and not more. If the LP gets depleted, market makers will be incentivized to use the PSM to arbitrage the PCS LP. This is why the fees on the PSM should be linked to the LP concentration range to maximize efficiency. Obvisouly while, Venus can mint as much VAI as needed in the PSM, it can’t mint USDT or USDC.

Currently, the VAI borrow fees are 2.0% as VAI is getting closer to the peg while other stablecoin borrow rates are between 3.5-8%. As I assume XVS holder don’t want to run Venus at a loss, the higher the VAO borrow rate, the higher Venus can incentivize the VAI Saving Rate.

@Steakhouse , if no one else does, will propose higher VAI borrow rates to incentivize some loans repayment. But it is also important to remain competitive and a trusted partner to the borrowers. What we don’t want is VAI going too high above $1 and hurting borrowers wanting to repay. The PSM fixes this.

2 Likes

Nice to read you’re finally doing like DAI. It took 2 years to remember VAI stands for Venus DAI.

Is it a random example or realistic? Because paying 1.1 VAI to get 1 USDT is very much like the current situation where the price is $0.9x

Most definitely an example :wink:

I do not understand how this helps to protect the value of VAI. In this case, the USD price of stable coin (USDT) is calculated as max(1, stable_coin_usd). As a result, the USD price of USDT used in swap is higher than or equal to (>=) the actual price. Thus hurting the users sending VAI and receiving USDT. Did I miss something?