This proposal advocates for an upgrade to runtime version 1.25.4, focusing on refining premium redeem logic. To avoid unjustly burdening vaults, only award premiums for the tokens required to restore the vault to its secure threshold. This greatly reduces the financial risk for vault operators while remaining a financial incentive for network participants to redeem against vaults with a low collateralization ratio.
For example,
Consider the following values for Vault A
- Thresholds
- secure threshold: 200%
- premium threshold: 160%
- liquidation threshold: 110%
- collateral: 2000 tokens
- the exchange rate is at 2 between issued tokens and collateral tokens, ie 2 collateral tokens = 1 issue token
- secured threshold capacity: collateral / exchange rate / secure threshold = 2000/2/2 = 500 tokens can be securely issued
- premium threshold capacity: : collateral / exchange rate / premium threshold = 2000/2/1.6 = 625 tokens
- vault A has issued 650 tokens
Observations
- vault A can be premiumly redeemed as it can securely back 500 tokens but it has issued 650 tokens.
- Ideally, it should only pay a premium for 150 issued tokens ie 300 collateral tokens but currently, it can pay for more than that. Let’s take a look
If the User redeems 650 tokens through Vault A
Currently,
- vault pays a premium for the redeem (600 redeem tokens - fees)
- this way a user can exploit the vault to get more premium redeem, by redeeming a higher amount
- The current premium fee calculation
- (redeemAmount - fees) * exchangeRate * premiumRedeemFee
- inputing the values for vault A = (650 − 4.450) * 2 * 0.05 = 64.555 collateral tokens
- vault pays 64.555 collateral tokens as a premium or 32.2775 issued tokens as a premium considering the exchange rate as 2.
- previous code calculation link
After the proposed changes are done
- vault pays a premium for the redeem to get back to the secure threshold ie 150 tokens instead of 650 redeem tokens requested by the user. But since the premium is given out in collateral tokens it also needs to be considered.
- The final formula comes out to be
- maxPremium = (oldTokens * exchangeRate * secureThreshold - oldCol) * (premiumRedeemFee / (secureThreshold - premiumRedeemFee))
- Inputting the values for vault A = (650 * 2 * 2 - 2000) * (0.05 / (2 - 0.05)) = 15.3846 collateral tokens.
- So vault can pay a maxPremium of 15.3846 collateral tokens, while the user redeems 650 tokens for which the premium comes out to be 64.555 collateral tokens as calculated above.
- In the updated code instead of giving 64.555 collateral tokens to the user, it will give a minimum of 64.555 and 15.3846 which comes out as 15.3846 collateral tokens.
- This way the vault only paid the premium to get back to secure threshold rather than based on users redeem amount.
- new code calculation link
For more detailed info take a look at the release tag: https://github.com/interlay/interbtc/releases/tag/1.25.4