A large market sell on the Orca scnSOL-SOL liquidity pool caused the oracle price of scnSOL to fall below its fair market value for around four minutes. The price of scnSOL quickly returned to normal after. The vast majority of our users were unaffected, but a small percentage of users using scnSOL as collateral on borrow-lend protocols were liquidated.
We are very sorry that this has happened and have done several things to make sure this doesn’t happen again.
On June 15 2022, 06:30:16 AM UTC, a scnSOL holder sold 600,000 USDC worth of scnSOL on the Orca scnSOL/SOL pool, which did not have the liquidity to service such a large swap. They swapped 20000 scnSOL for 197 SOL, taking a 98% loss.
~8 seconds later, an arbitrage bot takes advantage of this mispricing and does the following sequence of swaps:
This greatly decreased the SOL amount in the Saber scnSOL/SOL pool. scnSOL’s Switchboard oracle, which pulls from the Saber scnSOL/SOL pool as its source, reads this as a drop in price.
Over the next four minutes, arbitrage bots do their work and rebalance the scnSOL/SOL pool, causing the price of scnSOL to return back to a fair market value.
The vast majority of scnSOL stakers were unaffected by the momentary price drop, but some users who had used scnSOL as collateral on borrow-lend platforms like Solend or Apricot were liquidated.
We know that the user sold their SOL in Orca’s scnSOL/SOL pool. We don’t know if they used our UI to do it, but it is likely that they did because i) the instant unstake feature is hard-coded to use the Orca scnSOL/SOL pool, and ii) we don’t think anyone would willingly take a 98% loss. We hard-coded it to use the Orca scnSOL/SOL pool at the start as it was the pool with the largest amount of liquidity. Unfortunately, most of Socean’s liquidity has migrated to Saber and Crema.
We suspect that the user did not notice that they were getting a very bad deal. While we do display the amount of SOL that will be received in our UI very clearly, users who are not looking closely at the amount may miss this information. And our UI could definitely be improved to make it more obvious.
We were aware of this issue, but triaged it as low priority as i) we believed that most people would price-shop or use an aggregator to find the best price, especially in the face of a 98% slippage; and ii) our new website design would resolve this issue. The timing was especially unfortunate as our new website would have rolled out at the start of this week.
To make sure this doesn’t happen again, we are rolling out a new website design this week that uses Jupiter to get the guaranteed best price of scnSOL over all LMs. Our updated design will also make it clearer how much SOL you will get compared to delayed unstake.
Currently, most stake pools fragment their liquidity over multiple different AMMs, which is good for exposure, but is capital-inefficient. Our own liquidity is fragmented over Saber, Orca, Atrix, and Crema, but we could service much larger swaps if the liquidity was combined into one.
To make sure this doesn’t happen again, we are in the process of consolidating scnSOL/SOL liquidity into a single AMM, and procuring more liquidity for scnSOL/SOL. We are also intensely exploring the design of a new, more capital-efficient AMM that will allow scnSOL holders to instantly unstake large amounts with much smaller slippage.
We are talking to the Switchboard team to pull data from multiple sources, not just the Saber pool. This will ensure that the oracle reports a reasonable price even if liquidity runs out on a single AMM.
We deeply apologise for this incident. While the price of scnSOL was quickly arbitraged back to normal, it was not quick enough to prevent several liquidations. It is very important to us that users can safely use their scnSOL in a variety of different DeFi applications. We are taking steps to fix this: we believe our improved website design, improved scnSOL/SOL liquidity, and more robust oracle will prevent this from ever happening again. Thank you for your continued trust in us.