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
- 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)
-
Develop and deploy Peg Stability Modules (PSM) for VAI/USDT and VAI/USDC, based on MakerDAO’s PSM
-
Implement VAI Savings Rate (VSR) to provide additional utility for VAI, based on MakerDAO’s DAI Savings Rate
-
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.