The Liquidity squeeze: What's happening and what's next?

These are (once again) stressful times for vires.finance, one may call it (yet another) “extreme stress test”. We receive a lot of questions and complaints regarding timeline, rewards, liquidation mechanics, etc. Let’s break it down here.

Inability to withdraw

It’s nearly impossible to withdraw USDT and USDC from the contracts – not before the debts start to get repaid or new liquidity comes in: the smart contract doesn’t have the asset there. If you want to exit your position now, simply exchange your LP tokens at waves.exchange(USDC, USDN), the markets are pretty much alive and active.

Borrows paused

The borrows have been paused to prevent further escalation of current “all USDT/C borrowed” to “all assets borrowed”.

USDN Oracle price is 1.00

  1. It’s debatable whether AMM or exchange is a good source of price feed for USDN, given it can be redeemed through WAVES and save the day.
  2. Live feeds have their downsides: apart from reliable data, during turbulent times even the fiat-backed USDT/C are subject to volatility causing massive (inappropriate) liquidations when stablecoins are borrowed for stablecoins.

(Not much of an)Issue with Rewards, TotalDebt > TotalSupply

So far the rewards have been accumulating at the pace displayed at The Liquidity Protocol for Lending and Borrowing Assets – VIRES.FINANCE. Yes, you receive different numbers when claiming.

Say, userA deposited 10 USDT, userB then borrowed 10 USDT.

# amt
userA deposit 10 USDT
userB borrow 10 USDT

As time passes, userB’s debt grows by 1 USDT, but userA’s deposit is growing slower as part of accumulated debt goes to rewards.

# amt
userA deposit 10.9 USDT
userB borrow 11 USDT
supposed_rewards 0.1 USDT

This is why Total Debt is greater than Total Deposit.

As there’s no separate claims for different markets, the system uses min(balance, supposed_rewards) to maintain its stability for the extreme case:

# amt
userA_deposit 10.9 USDT
userB_borrow 11 USDT
supposed_rewards 0.1 USDT
withdrawable_rewards = min(balance, supposed_rewards) 0 USDT

Later as the situation progresses

# amt
userA_deposit 11.8 USDT
userB_borrow 12 USDT
supposed_rewards 0.2 USDT
withdrawable_rewards = min(balance, supposed_rewards) 0 USDT

In short, supposed_rewards is the value to be distributed under <100% borrow, but in the extreme case, the actual payout is 0. Once the markets are back in normal operation, the numbers will catch up.

The accumulation continues under the hood, but is not being distributed as there’re no assets to be sent. We’ll adjust the UI for the claim tab/dialogue.

Liquidation Mechanism

The core of the liquidation is transferDebt function. Borrowing assetA for assetB can be seen as the “right to buyback assetB for assetA”. The transferDebt function allows liquidator to transfer this “right to buyback” to himself.

The infamous proposal

The proposal put up a few days ago got a lot of attention. Let’s break it down with as little of taking sides as possible.

a. Setting liquidation threshold to 1

If the proposal is activated, the accounts with outstanding debt of WAVES/EURN/USDN are subject to liquidation. Say, an account have 100 USDC and 40 USDN borrowed(net value = $60). Upon liquidation, up to 40 of USDN debt can be liquidated for up to 42(= 40 * (1 + 0.05)) USDC, So net value would become $58.
THe proposal doesn’t lead to full liquidation of all accounts that have borrows of WAVES/USDN/EURN.

b. Lowering APR

If the proposal is activated, 105% APY will be over soon. Lowering APR will cap borrow rates to around 40%. It will still be a bit larger as the rate depends on totalBorrow/totalSupply, which is sometimes more than 1.

Thoughts and Moving Forward

  1. Hey, Alameda Research has(allegedly and indirectly) invested 80M in the Waves ecosystem(although, allegedly, shorted it heavily) by supplying the funds to Vires protocol. Might consider it a successful audit for both from at least one of the top trading firms in crypto.
  2. In our opinion, the proposal is not that badass as it’s portrayed on twitter.
  3. We are not sure it’s a good idea to accumulate USDT and USDC rewards for $VIRES stakers during times when suppliers can’t withdraw, maybe it’s a good time to discuss pause of revenue distribution for these markets until the situation is stable again. Another option would be to rework the contracts to reward with LP tokens.

Mitigating the current issue

Here’s what we have in mind: Big accounts are a liability that needs to be liquidated, stalemate is no good.

  1. Switching to a real-time oracle(once implemented) is still a debatable point especially during volatile times: it can be (too)easily manipulated. Maybe USDN oracle should be based on Backing Ratio of Neutrino Smart Contract instead?
  2. If massive liquidations of problematic accounts do happen, ensuring it happens gradually during weeks might be more sustainable approach in the long run then fast implosion. What is your opinion?

That being said, we stay committed to the principles of DAO, no decision will be made otherwise: Discussion followed by Voting and then Activation is the way to move forward for every step.

We invite everyone to the discussion: please share your suggestions and opinions in the comments below.

6 Likes

If we use the average of the largest venues of these trades between USDN and USDC/USDT, it shouldn’t be so easy to manipulate. I know that curve and waves exchange are two big venues. Why not start with these?

1 Like

Yes okay, but still, 40% is 40%.
It’s not something that can be downplayed.

Nope, it has been proven that they took a neutral stance to try to capture the funding rates on the perp market. No heavy shorting.

do you mean that USDN should be counted as 1$ as long as the backing ratio is above > 100%?
It won’t change anything, the real issue is the “LIQUID” backing ratio. We cannot certainly liquidate 600m$ of $WAVES at the current price.
There are other ways of doing it, just like any other Market Maker protocol do it: take the real, current price.

how do you plan on executing this?
It’s not like you can wait to liquidate, because:

  • if you wait there might not be anymore enough collateral to be seized
  • unless you block users from liquidating outstanding debts themselves, people will take profit from any opportunity
    Maybe we could take into consideration lower % liquidations? Like 5-10% at a time instead of 40% or full value of the collateral? That would have the same effect and it would be possible.
1 Like

why don’t we squeeze this borrower instead of Alameda?

isn’t $900M in asset+liabilities better than 80M$?

the “infamous proposal” excludes him, why? is there any reason that pushes you to avoid liquidation at all costs and not to talk about this account?

13 Likes

What does this even mean? that those of us trapped now at Vires won’t even get at least some “virtual” yield hoping one day that would turn into something real?

1 Like

Is not possible change the Borrow APR when all liquidity is borrow to a Higher % so borrower will be pushed to repay faster or pay more apr.
And for lender just wait little more and enjoy this apy

2 Likes

just because that’s Waves Team

4 Likes

Team deposits 600m USDN (who else would have this much) to take the equivalent in USDT/USDC. But we have to punish Alameda for borrowing 20m in WAVES.

How stupid do you think your holders are?

12 Likes

The problem is the shortage in liquidity for USDC and USDT. Why is no one talking about raising interest rates to attract new capital and force the borrower to repay? But you are thinking about stopping rewards of those markets because people can’t withdraw? If you care about people not being able to withdraw the solution is simple: higher rates for borrowing

17 Likes

2 Likes

i think Team was borrowed fund for bring back the peg of usdn and look like they reach the goal. I can suppose that soon will start to repay loan and the liquidity will come back

1 Like

Yes there is a chance of manipulation, but what about other tokens such as Waves and Vires on the platform? The prices of these tokens change by the second, and doesn’t Vires already take in some kind of oracle price to value these tokens as well? These stablecoins aren’t any easier to manipulate than Waves and Vires token, and even if someone can push the price just tiny little bit, say by a penny or two, it is still a lot closer to the fair market value at the moment than just using a constant $1 to value them.

This is not clear

Liquidation Mechanism

The core of the liquidation is transferDebt function. Borrowing assetA for assetB can be seen as the “right to buyback assetB for assetA”. The transferDebt function allows liquidator to transfer this “right to buyback” to himself

Do you mean “BORROW” or “LEND”?

Let’s say we’re talking USDt and USDn

Borrowing assetA (USDN) for assetB (USDT) can be seen as the right to buyback assetB(USDT) for assetA (USDN).

So if you have 1000 USDN as collateral for 800 USDT, does that mean you can always repay your 800 USDt with 800 USDn?

In other words, if an account health reaches 0, and the account needs to payback 800 USDT, but has USDN as collateral, is the USDN sold for USDT, which a lender can then withdraw?

Or does the lender receive USDN?

and if USDN is sold for USDT, is this done at 1:1 ratio or at market price?
.

the system is completely self-sufficient and interesting

in order to have no problems with withdrawals - just enter the geometric progression of the value of borrowed money after 60; 80 and 90%.
% of the value of money - this is a creative question. but for example in the voting of people who have the right to such a vote - it will not be a problem to solve.
by significantly raising the cost of borrowing money after 80 and 90% of collateral - this will significantly reduce the desire to take money above this%.

so there will be a problem - when it is conditional on 79% - the cost of borrowing will be conditionally 22%, and after 80% and already 90% or even 120%.
89% - the cost of borrowing 130-150%, and after 90% - up to 200%
% - they need to be discussed.
(this will be an additional percentage of red supply lines - to avoid manipulation)

so there will be a problem - when the system is close to the geometric rise of cost of borrowing money of conditionally another 1% and the cost of borrowed money will be raised from 20 to 80%.

to the usual system after 80 or 90% - will be added 50-100 or even 150% - values that will accelerate the elimination.
this interest is not paid in the usual way, and it is paid upon closing the loan or its liquidation in the system (only after) - in proportion to all participants.

In such cases, there should be an algorithm that will allow you to delay the withdrawal or credit conditionally for 4-6-12 hours. want to borrow a percentage of used liquidity 79%? - so everyone who is a participant 79% must be warned that the cost of credit will increase several times, and this time - what they need to decide whether they are further in the system or will return - and will be these 4-6-12 hours of waiting.

if the withdrawal leads to the intersection of these conditional red lines - 80 or 90% - you need to wait and inform those who borrowed (those who took credit) then use it or return it - due to the additional value of the red liquidity line

it is necessary to provide the 2nd side also:
I withdraw funds - and this leads (already my withdrawal) - to a fall in liquidity, and accordingly - the one who borrowed will no longer be 79% but will be 80% - where the loan amount is raised due to the intersection of the red liquidity line
my money hangs until the withdrawal conditionally for whose time is 4-6 hours, during which the system warns the participants who took the loan - so that they decide - to use it further, or return part / all

hours of waiting as well - need to be discussed - but 8-10 hours, no more. at worst it will be very inconvenient.

and the reward should be divided into 2 parts.
1st - everything is as it should be, let it work.
the second is hyper-elimination due to the intersection of red lines. after self-repayment of debt (liquidation) - excessive interest and profits from them (the difference between the current system and additional interest - is an additional reward) are distributed evenly among the participants who provided this liquidity on the basis of which the borrowed was issued. only after liquidation.
ordinary interest and remuneration - in the usual way. and liquidation that will be accelerated after 80 and 90% - due to the high difference between the fee and deposit - will be paid later (after liquidation)

3 Likes

Nope, they dumped waves to bring back the peg. It’s all on chain.
Even if they manage to bring back the peg now, they have to keep it at PEG after they’ve returned all the funds they’ve borrowed.

1 Like

Basically, yes.

The liquidator has an option to repay his 800 USDT debt and capture 840 USDN in your scenario.
Then he can sell the 840 USDN for their market price (hence incurring in a loss at the current prices) or he can burn them for 840$ of WAVES.

It all dependent on good and gracious of our protected, high mighty ,all powerful borrower(s) of USDC/T to decide. So i am not gonna even indulge so much in mechanics of how we move forward because i really dont know or speculate how you are gonna come back from this.

Other things to consider:
Not if but while we are protecting the borrower(s) and liquidating others forcefully:

1
You could at least try to change vires distrubution mechanics

Borrower(s) are getting %50 of the distrubution of Vires token of respected assets still. Because they are all benevolent ; they are not gonna lock their Vires for govarnance (such democracy lovers) as long as they can threat (we will go down together if you are not gonna bail me out ) or convince Vires token holders to their agenda. However as we are seeing with infamous proposal (they are getting what they wish for, as for now , no need to lock or use their power) if one day people can decide differently ; it can be change drastically

So more power to the people!
-%99,9 of Vires Daily distribution for depositors
-%0,01 for borrowers
of respected USDT/C assets


2

This can happen as we are locked for months if not years anyways.


3
If you dont want to change 1:1 to real world prices:
At least lower liqudity penalty for USDC/T deposits.
Liquidators gonna be having a field day eitherway.


4

For certain people who holds NSBT (totaly unrelated token and mostly concentrated on certain people)


Good luck everyone.
Sasha always have said in AMA’s , he will make Waves a liquidity blackhole if my memory is correct.

4 Likes

How does someone use transferDebt?
Could there be a Liquidate tab on the sidebar with an easy interface for normal users to liquidate any account that drops below 0% health?

3 Likes

Let me get this right.

People can’t withdraw their USDC/USDT, and that is the main issue here and instead of increasing USDT/USDC interest to force that huge borrower to repay his loans, we are gonna reduce interest to allow borrowers to take even longer to repay their loans.

Resulting in an even increasing longer blockage of the whole system

You guys think your users are stupid??? What joke of a team/protocol/governance. What you are doing here is criminal

9 Likes

The proposal to lower borrowing rates to 40% seems to favour the borrowers instead of the lenders. I don’t see why lenders (who are interested in withdrawing) would agree to this. Surely you should increase borrowing rates to a rate that either lenders are happy to receive or borrowers are unhappy to pay to reach equilibrium.

Another big issue is that USDN is pegged to 1$. It is clearly an asset that fluctuates and should be treated as one. There should be an oracle that reads the average price of USDN. Is there not an oracle tracking the price of ETH and BTC lent? Would you allow a $45,000 BTC lending and borrowing position to stay if BTC went to $20,000?

You also have a problem with liquidators not being incentivised to run, due to the fact that USDN was trading for lower than the liquidation rate.

USDN are only redeemable for Waves if you are an NSBT holder, no one else can arbitrage this spot. USDN are not trading 1:1 for USDT/C on any exchange.

I propose:

  1. Increase the borrowing APR % to a threshhold that both borrower and lenders are happy/unhappy to pay/receive to reach equilibrium
  2. Have USDN price dictated by an price oracle.
7 Likes