BGD. Operational oracles update

TL;DR

Present to the community our proposal to do an operational update of different oracle aspects, for the sake of consistency across instances of Aave.


Context

Given limitations on for example the availability of price feeds, or changes in community strategies of assets’ pricing, sometimes it is necessary to have purely operational proposals to align all Aave components.

In order to not create a big overhead, we have decided to batch some of these required updates, and before going forward with an on-chain proposal, we want to transparently present to the community what will be proposed.


The update. What is included?


1. Unify pricing of WBTC based on a WBTC feed

Discussion

https://governance.aave.com/t/wbtcs-and-others-pricing-mechanism-on-aave/10825/10

Following the previous discussion and the outcome on Snapshot, the community decided to price WBTC based on a feed that properly prices the WBTC component and not just assumes that the price of WBTC is equal to BTC’s.
The proposal will swap the WBTC price feed on Aave v2 Ethereum from BTC/ETH to WBTC/ETH.


2. Activate Price Oracle Sentinel on Aave v3 Optimism

Discussions

N/A, just live in production on the instances where it was available

Aave v3 has a mechanism called “Price Oracle Sentinel” by which if the network infrastructure is down (mainly the sequencer on rollups), new borrowings and liquidations are not processed, and a grace period is given to the user to refill their positions and avoid liquidation.
This mechanism is part of Aave v3, but its activation depends on having an underlying oracle providing the “health check” of the network infrastructure.

Aave uses the L2 Sequencer Uptime Feeds for Arbitrum since day 0, but at that point, Optimism was not available.
Following its introduction on Metis with the new deployment of Aave v3 there, now this proposal will activate its Price Oracle Sentinel on Optimism too.


3. Generalized price sync components update, LSTs

Discussions
https://governance.aave.com/t/bgd-generalised-price-sync-adapters/11416

https://governance.aave.com/t/arfc-maticx-supply-cap-increase-polygon-v3/12657/5

https://governance.aave.com/t/arfc-gauntlet-e-mode-methodology-aave-v3-liquid-staking-tokens/12700/6

https://governance.aave.com/t/arfc-gauntlet-and-bgd-chainlink-synchronicity-price-adapter-2-0/13046

With the Generalized price sync solution already applied on multiple assets, in cases like Optimism and Arbitrum, when listing some assets like wstETH, not all underlying price feed components were available to “plug” into the adapter contract.

Additionally, before the risk teams evaluated better the risk associated with the pricing of LSTs it was not completely clear if the “primary market” exchange rate of the assets should be used. Both following discussions of the community, activation of withdrawals in some LSTs, and after checking with Gauntlet and Chaos Labs, seems legitimate to unify all pricing methods to use “official” (and non-manipulatable) exchange rates on all generalized price syncs.

To do that, the proposal will include the following specific changes:

  • wstETH on both Optimism and Arbitrum will be priced based on a generalized price sync adapter using wstETH/ETH/USD composition.
  • stMATIC and MATICX will be priced based on their on-chain exchange rates stMATIC/MATIC and MATICX/MATIC combined with MATIC/USD, also following an adapter approach. The stMATIC/MATIC and MATICX/MATIC exchange rates will be taken directly from the smart stMATIC and MATICX, as they are non-manipulatable.
  • The price feed of cbETH will be slightly changed. Currently, it already uses the generalized price sync adapter, with the underlying feeds being cbETH/ETH from Chainlink and ETH/USD. However, we are swapping the cbETH/ETH Chainlink component to use directly the rate from cbETH.

Next steps

Given the operational nature of the proposal, we think it is more optimal to directly submit an on-chain governance proposal, and not create voting overhead.

However, we target the governance proposal early next week, in order to get feedback from the community, if any.

8 Likes

Thanks for putting forward this proposal @bgdlabs. We are in full support.

As we’ve written in our LSD Methodology Update, updating the pricing of LSDs to use the primary exchange rate, alongside implementing the price sync adapter, will decrease the likelihood of liquidations, paving the way for more aggressive risk parameters and caps, subject to the community’s risk appetite and desired level of exposure to the various LSDs.

Will the Price Oracle Sentinel activate be occurring before the Optimism Bedrock upgrade / downtime?

Given the sequencer will be offline for an undetermined period of time, it would be ideal to have that protection enabled prior to the upgrade window.

1 Like

Correct, even considering governance timing, the Price Oracle Sentinel should be active before the scheduled 6th June of Bedrock.

Also from the Optimism documentation/communications, the estimation is 2-4h, which should not really create much risk for users, given the lack of correlation between assets’ price movements and the upgrade itself.

Still, having the Price Oracle Sentinel will provide users with an extra buffer of time to improve their HF.

2 Likes

As an update for the community, after checking deeper into the usage of the on-chain exchange rate of cbETH, we think more time needs to be allocated to study its pricing dynamics. So the swap of the cbETH feed will not be included in this proposal.




The final items to be included are the previously announced:

  1. Swap to a WBTC/BTC/ETH feed on Aave v2 Ethereum for WBTC.
  2. Enable the Price Oracle Sentinel on Aave v3 Optimism.
  3. Swap the wstETH feeds on Optimism and Arbitrum to use a wstETH/ETH/USD price sync adapter. Important, the wstETH/ETH component by Chainlink doesn’t use the “primary market” rate, as it is not available on the L2s. But the swap to a price sync adapter is a net positive improvement.
  4. Swap the stMATIC and MATICx feeds on Aave v3 Polygon to use their on-chain exchange rates.
3 Likes

We would like to thank BGD for this update that will allow the growth of strategic assets for the Aave DAO while maintaining the highest safety standards.

we will vote accordingly when the related AIP is published

Following the plan of action, we have created Aave governance proposal 236 including the previous items.

Voting will start in ~24h, participate :ghost: !

https://app.aave.com/governance/proposal/?proposalId=236

Agreed, a huge thanks to BGD for their consistent innovation and upgrades. Most recently, the extra bit of relief provided by the CSPAs has been a personal highlight. I’m excited to see whats next.

As a follow-up update, we will be submitting a governance proposal for the Operational oracles update PT2, which will contain the following:

  1. Update of the stETH feed on Aave v2 Ethereum to a 1:1 value with ETH, representing the “exchange rate” of the stETH rebasing token, following the strategy of pricing LSTs on “primary price”.
  2. Update of the Aave v3 Ethereum, Optimism and Arbitrum CSPA feeds to be composed with wstETH/stETH and ETH/USD internal feeds, removing an intermediate stETH/ETH that was introducing undesired exposure to stETH secondary market price. (props to @Gauntlet for this suggestion on L2s, where the stETH/ETH feed is not available).

Pending for a following update will be applying the same pricing mechanics for wstETH on Aave v3 Polygon, where the wstETH/stETH exchange rate feed is not available yet. We are coordinating with Chainlink to get it live.

2 Likes

Following our previous update, we have created an Aave governance proposal to update the price feeds of stETH on Aave v2 Ethereum, and wstETH on Aave v3 Ethereum, Arbitrum, and Optimism.

Voting will start in ~24h, participate :ghost:

https://app.aave.com/governance/proposal/?proposalId=248

Excited to see this update on chain! We’re looking forward to seeing the CL feed for Polygon as well.

As a follow-up update, and most probably the last in this batch of price operational changes, we have a proposal to introduce the same type of adapter contract based on primary exchange rate for wstETH on Aave v3 Polygon.

Voting will start in ~24h, participate :ghost:

https://app.aave.com/governance/proposal/?proposalId=262

1 Like

On the operational side of oracles, in order to keep consistency between Aave v3 and other legacy instances (v2, v2 AMM, v1), we will be creating a proposal to configure the deprecated fallback oracle address to address(0) on them.

Even if we don’t recommend doing it in the current form, this doesn’t affect any improvement/re-activation of this mechanism in the future, as it will be possible to set it up again by calling setFallbackOracle().

We have published the on-chain governance proposal for the operational unification of fallback oracles on legacy versions of Aave.

Voting will start in ~24h, and last for 3 days. Participate :ghost:

https://app.aave.com/governance/proposal/?proposalId=351

1 Like

hey guys!

i’ve had a question here. The recent arbitrum sequencer outage and subsequent action after was quite interesting to me and i’ve taken a look at a bunch of dApps and how they acted during this time.

Got a question that is very specific for AAVe and @bgdlabs here. This update claims that on L2s like arbitrum the Price Oracle Sentinel are utilized, which incorporates Chainlinks L2 Sequencer Uptime Feed.

When i check the respective contract however, the Arbitrum Sequencer Feed of chainlink wasn’t updated at all during this outage. If you read latestRoundData from the aggregator contract that chainlink links in their documentation, the last update is from the 17th of November 2022.

Can someone enlighten me if i’m reading this wrong or if this completely malfunctioned and the L2 Sequencer Uptime feed was useless in protecting AAVE from the sequencer downtime in this instance?

Hello @sleezyggg. As you correctly point out, the Price Oracle Sentinel depends on Chainlink’s L2 Sequencer Uptime feed, and you are also correct that no downtime was triggered during the last days.

From our investigation and communications with the Chainlink team, the reasons are the following:

  1. The network was not “down” for a long time, but it had degraded performance due to important transactions load.
  2. The L2 Sequencer has certain time sensitivity in the order of low minutes, to be in good equilibrium of precision while avoiding too many false positives. From point 1), as the total downtime was not really long, the oracle didn’t update.
  3. Generally, the Price Oracle Sentinel (and more precisely the L2 Sequencer) is not a perfect mechanism, as it deals with a pretty complicated problems: which is the right entity to read a health check from? Or should a massive “queue” of pending transactions be considered downtime?
    Certainly there are ways of improving it, but not trivial.

We will also invite members of Chainlink to comment on the matter.

Thanks for the quick answer. Would be quite interested in a comment from Chainlink here and what the justification is for not calling this downtime when even the Arbitrum Foundation is calling it an outage of nearly 90 minutes.

Would also be good to know what Chainlink would consider an official sequencer outage, if it doesn’t line up with the definition of people running the sequencer.

@CL_Michael @bgdlabs wanted to check again, if there was ever a resolution to this or if its just gonna be left standing like this.