[PIP-004] wstETH Oracle update from Chainlink stETH/USD to Chainlink stETH/ETH & ETH/USD

Summary

This proposal is for an oracle upgrade of the wstETH collateral. Currently, Prisma is using the stETH/USD Chainlink oracle which we would like to update to a combination of stETH/ETH & ETH/USD.

Motivation

Our original understanding was that using the stETH/USD oracle with a deviation threshold of 1% was equal and a better option than a combination of stETH/ETH & ETH/USD which both have a deviation of 0.5%.
In the past few days, mkUSD has traded just under the peg and we have had a small number of redemptions which can happen with volatility when mkUSD is slightly under peg. However upon closer inspection, we noticed that the deviation of the oracle was too high, sometimes exceeding 1% which made a redemption profitable for an MEV bot to the detriment of a user. While redemptions are cost free to the user being redeemed against, they are still a net negative though important peg keeping mechanism for Prisma.
The nature of of all on chain oracles including Chainlink means deviation will always happen but we have now been tracking the options and noticed that stETH/USD is much more likely to deviate from the true spot price than a combination of the stETH/ETH & ETH/USD oracles. We have observed deviation of over 1.2% on the stETH/USD oracle meaning redemptions could happen even if mkUSD was trading over peg in volatile market conditions. This only happened for a handful of blocks but is enough for MEV bots to take advantage of it and our monitors initially failed to catch as those deviations are rare occurrences to the credit of Chainlink.

As a result, we are proposing that we upgrade the wstETH oracle to use Chainlink stETH/ETH & ETH/USD oracles instead of stETH/USD Chainlink oracle which it is currently using.

Specification

[(β€˜0xC105CeAcAeD23cad3E9607666FEF0b773BC86aac’, β€˜0xec6e407d0000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca000000000000000000000000086392dc19c0b719886221c78ab11eb8cf5c528120000000000000000000000000000000000000000000000000000000000015180035faf820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001’)]

{
  method: 'setOracle',
  types: [ 'address', 'address', 'uint32', 'bytes4', 'uint8', 'bool' ],
  inputs: [
    '7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0',
    '86392dC19c0b719886221c78AB11eb8Cf5c52812',
    86400,
    '0x035faf82',
    18,
    true
  ],
  names: [
    '_token',
    '_chainlinkOracle',
    '_heartbeat',
    'sharePriceSignature',
    'sharePriceDecimals',
    '_isEthIndexed'
  ]
} 

Data


Credit to wavey at yearn |||| Source code

Next steps

This will be a three day snapshot temperature check

Vote

Snapshot

6 Likes

Good idea. Should greatly improve UX. Supported.

5 Likes

I think this change is well worth making, redemptions are an important part of Prisma but they should not be incentivized when peg is above 0.995.

Thanks for making this proposal, it has my support!

3 Likes

Support, curb redemption ASAP.

This morning, I woke up to my position which is 187% collateralized, almost redeemed with only 8K mkUSD buffer in front of it… having to worry about a position that is nearly 2x overcollateralized being redeemed is pretty insane.

2 Likes