Temporarily pause sUSD markets during merge

Hi all,
would like to check the sentiment about this proposal.

Synthetix as per SIP-271 is considering (council voted yes) to suspend the whole system few hours before the merge and re-activate post after testing everything is ok.

This affect sUSD transfers which won’t be possible during the stop.

Aave has two markets on V2 and V3, totalling 5.03M/2.48M and 14.44M/11.42M respectively (supplied/borrowed).

On V2 sUSD can be only borrowed on V3 can be used as collateral too. This could expose to the risk of having positions that cannot be liquidated (if necessary) during the stop i.e. borrowing x against sUSD, borrowing sUSD against y. These positions could be created close to the stop.

Anyway impact is limited considering the relative size of the market.

The proposal is to temporarily pause sUSD markets and re-enable them after Synthetix get unsuspended.

Would love your feedback.

Thanks, @emilianobonassi - the suspension of the Synthetix system would have the most risk implications from users that borrow only sUSD. For users who have other borrowed assets, liquidators benefit from the ability to pay back those borrowed assets to liquidate the position. The largest user on V2 that borrowed only sUSD has a relatively low amount of sUSD borrows ($174k), and their collateralization is relatively high (187%). Another user has supplied $687k ETH to borrow $253k sUSD and $65k USDC. As such, there is currently a relatively low borrowed amount and high collateralization. For this to present outsized risk, the sUSD borrowed would have to grow significantly.

However, a potential edge-case risk here is that the most profitable liquidation (as calculated by the liquidation bot) is to repay sUSD, and in the case where the sUSD repayment fails, the bot may not be encoded to attempt the liquidation again with another borrowed asset (thus rendering the liquidation a failure).

Gauntlet has not fully integrated with V3 yet (you may track our progress here). However, from looking at the raw data, we observed that the majority of positions on V3 are recursive stablecoin-to-stablecoin positions that do not present outsized market risk.

We will monitor the situation and continue to analyze tail risk events.

2 Likes

Thanks @Pauljlei for the feedback!

I mostly agree with you hence my “limited impact”.

Anyway, not sure I’ve understood your

For users who have other borrowed assets, liquidators benefit from the ability to pay back those borrowed assets to liquidate the position

In the case users have been using sUSD as collateral (V3), those positions cannot be liquidated since the system cannot transfer to the liquidator the collateral. This can happen or if sUSD lose value or if borrowed assets price increases.

Considering the current open positions, risks are pretty limited. My major concern (and suggestion) is to look at exploitability risk by a malicious actor who can create ad hoc positions before the suspension.

1 Like

Thanks for informing the community of this potential risk @emilianobonassi !

We checked the SIP description, and we saw a test on Test on transfers of synths and SNX to a different wallet, which seems to imply that transfers of synths and SNX will remain available, only the “infrastructural” smart contract functionalities (e.g. opening position on Synthetix) with be halted.

We also checked with members of the Synthetix community, and that seems to be the case, but let us know if maybe we are missing some aspect, given that we are not full experts on the Synthetix system.

3 Likes

Thanks @bgdlabs for the feedback

Those tests are related to the ones executed before unsuspending the system (at least as reported in the SIP)

The following checks would be performed on a forked chain (with canon) before unsuspending the system:

Before making this post, I’ve tested with tenderly the suspension of the system as per SIP

The system would be suspended by triggering the suspendSystem function wih the reason given being set to 271 .

and sUSD is untransferable after.

Below screenshots of the simulation and code references

  1. suspension

  2. trying to move sUSD

  3. exception stack trace
    Screenshot 2022-09-09 at 12.15.35 PM

  4. call tree
    MultiCollateralSynth - transfer
    Synth - transfer
    Synth - ensureCanTransfer
    SystemStatus - requireSynthsActive
    SystemStatus - _internalRequireSystemActive

So, if the SIP-271 will be executed following exactly the steps indicated and current Synthetix deployed logic remain the same, the results above will occur.

Said that, I achieved my goal that was to acknowledge the potential risk to the Aave community. I am happy that both the risk team (@Pauljlei) and core contributor (@bgdlabs) are aware of that and can provide guidance to the Aave community if necessary. :muscle:

2 Likes

The Synthetix community members have commented to us that SIP-271 needs some updating, as it seems the code on which you run the simulation was an initial decision that was later on modified in order to impact fewer external protocols, like Aave.
We will keep monitoring the situation, even if the risk doesn’t seem meaningful in the case of pause transfer(), but probably everything will be fine, only temporarily reduced “primary” liquidity for synths.

As an update, it seems the SIP needs to be updated and voted again, and will not include halting of transfers().
It is possible to check the new specification to be proposed here SIPs/sip-271.md at master · Synthetixio/SIPs · GitHub

1 Like