Provide Support for Capped Oracles for Enhanced Security

Description

Capped Oracles are a type of price oracle designed to limit the maximum value (or growth) of an asset’s reported price to protect against manipulation or sudden volatility.

Capped Oracles set an upper bound (a “cap”) on the price that can be reported for an asset in the protocol. This mechanism helps mitigate the risk of price manipulation—especially for low-liquidity or volatile assets—which could otherwise allow users to borrow excessively or liquidate positions unfairly. By capping the price, the protocol ensures that users can’t exploit sudden, artificial price spikes to increase their borrowing power or trigger liquidations.

Venus Correlated token oracles calculate the USD price of assets strongly correlated with other assets, for example wstETH and stETH, taking into account the onchain exchange rate between the correlated assets. Specifically, Capped Oracles limit the considered growth of that exchange rate on correlated assets.

Cached Prices is a new feature integrated on the Venus oracle contracts, that reduces the gas consumed by the functions that collect and return the prices, using Transient Storage to cache the prices in the smart contract memory. This drastically reduces the needed gas when the price for one asset is requested more than one time in the same transaction (common behaviour during liquidations or complex transactions).

The deployment and configuration of the Capped Oracles and Cached Prices will be performed on several phases. It requires the upgrade of the base contracts (ResilientOracle, BoundValidator, ChainlinkOracle, BinanceOracle and RedStoneOracle).

2 Likes

Security and additional considerations

We applied the following security procedures for this upgrade:

  • Audits: Certik, Quantstamp and Fairyproof have audited the deployed code
  • VIP execution simulation: in a simulation environment, validating the new implementations are properly set on opBNB, and the asset prices doesn’t change
  • Deployment on testnet: the same upgrade has been performed on opBNB testnet, and used in the Venus Protocol testnet deployment

Audit reports

Deployed contracts

opBNB mainnet

opBNB testnet

References

2 Likes

Excellent news! We need capped oracles to enhance Venus’ security.

1 Like

Overview

Chaos Labs supports and encourages the use of Venus Capped Oracles in all the markets which include yield bearing collateral, to prevent price manipulation of the exchange rate. In light of the upcoming adoption of Capped Oracle in the Base instance, we cover the parameters for the wsuperOETHb asset in the following recommendation.

Capped Oracle Parameters

Historical yield data for wsuperOETHb show that exchange-rate growth becomes statistically smooth once returns are measured over a 7-day horizon. This behaviour stems from Origin’s dripper contract, which streams the underlying OETH yield at a near-constant rate, suppressing short-term variance in the observed APY. To translate this evidence into a conservative growth ceiling for the Capped Oracle, Chaos Labs selects the highest annualised return recorded within the last 180 days when yields are smoothed over that 7-day window and then adds the standard deviation of the 1-day yield series to accommodate transient rate spikes.

The outcome of this calculation is an Annual Growth Rate of 14.26 %.

A snapshot interval of 30 days allows the reference exchange rate to be refreshed monthly, limiting cumulative deviation from the true on-chain rate.

Finally, to prevent the oracle from capping legitimate growth in the weeks immediately following market launch, the initial snapshot gap is sized to equal one month of yield at the recommended annual growth rate, corresponding to 1.11 %.

As such, for the asset of wsuperOETHb on the Venus Base instance, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 14.26%
Snapshot Interval 30d
Snapshot Gap 1.11%

Disclaimer

Chaos Labs has not been compensated by any third party for publishing this recommendation.

2 Likes

Overview

In light of the upcoming adoption of Capped Oracle in the Arbitrum and ZkSync instances, we cover the parameters for the relevant assets in the following recommendation.

zkETH

Dinero’s zkETH is an LST native to the zkSync Elastic Chain, providing a way for users to earn Ethereum staking rewards on zkSync.

The exchange rate growth of zkETH reflects staking rewards earned through native Ethereum staking. These rewards primarily originate from the Ethereum Beacon Chain and can be broadly categorized as follows:

  1. Consensus Layer Rewards - These are stable and predictable, determined by protocol-defined parameters and directly linked to the total amount of staked ETH. They form the core of the staking yield and provide a relatively steady source of rewards.
  2. MEV and Execution Layer Rewards - These rewards are more volatile, less frequent, and influenced by external market conditions. They introduce short-term variance to the yield profile, contributing to occasional spikes in the APY.

zkETH’s historical yield data is analyzed using a 14 day smoothing window to reduce noise and capture a more stable representation of staking rewards. Based on the past 180 days of data, the maximum observed 14 day annualized yield is selected, and the standard deviation of the one day APY series is added.

The resulting Annual Growth Rate used for the Capped Oracle is 7.3%.

A snapshot interval of 30 days is selected, allowing the reference exchange rate to be updated monthly and minimizing the risk of prolonged deviation from the true on-chain growth rate.

To avoid prematurely capping legitimate growth immediately after deployment, we apply a snapshot gap equivalent to one month of yield at the selected annual growth rate. This corresponds to 0.44%.

As such, for zkETH, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 7.3%
Snapshot Interval 30d
Snapshot Gap 0.44%

weETH

The exchange rate growth of weETH reflects staking rewards earned through EtherFi’s native Ethereum staking. These rewards are sourced directly from the Ethereum Beacon Chain and primarily include:

  1. Consensus layer rewards, which are stable and predictable. These are determined by protocol defined parameters and are a direct function of the total amount of staked ETH.
  2. MEV and execution layer rewards, which are volatile, infrequent, and subject to external market dynamics. These rewards introduce short term variance and are responsible for occasional spikes in the APY.

While EtherFi enables users to opt into restaking protocols such as EigenLayer, restaking rewards are not baked into the exchange rate of weETH. As such, restaking related yields are excluded from this analysis and do not contribute to the APY considered for the Capped Oracle.

weETH’s historical yield data is analyzed using a three day smoothing window to reduce noise. Based on the past 180 days of data, the maximum observed three day annualized yield is selected, and the standard deviation of the one day APY series is added. This methodology captures the stable baseline while accounting for transient yield spikes.

The resulting Annual Growth Rate used for the Capped Oracle is 5.3%.

A snapshot interval of 30 days is selected, allowing the reference exchange rate to be updated monthly and minimizing the risk of prolonged deviation from the true on-chain growth rate.

To avoid prematurely capping legitimate growth immediately after deployment, we apply a snapshot gap equivalent to one month of yield at the selected annual growth rate. This corresponds to 0.44%.

The yield distribution of wstETH is consistent across chains. Hence, the recommended parameters can be adopted for other wstETH markets on Venus.

As such, for weETH, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 5.3%
Snapshot Interval 30d
Snapshot Gap 0.44%

wstETH

The exchange rate growth of wstETH is primarily influenced by staking rewards earned on the Ethereum Beacon Chain. These rewards originate from two distinct sources:

  1. Consensus layer rewards, which are stable and predictable. These are determined by protocol defined parameters and are a direct function of the total amount of staked ETH.
  2. MEV and execution layer rewards, which are volatile, infrequent, and subject to external market dynamics. These rewards introduce short term variance and are responsible for occasional spikes in the APY.

wstETH’s historical yield data is analyzed using a three day smoothing window to reduce noise introduced by sporadic MEV events. Based on the past 180 days of data, the maximum observed three day annualized yield is selected, and the standard deviation of the one day APY series is added. This methodology captures the stable baseline while accounting for transient yield spikes.

The resulting Annual Growth Rate used for the Capped Oracle is 6.7%.

A snapshot interval of 30 days is selected, allowing the reference exchange rate to be updated monthly and minimizing the risk of prolonged deviation from the true on-chain growth rate.

To avoid prematurely capping legitimate growth immediately after deployment, we apply a snapshot gap equivalent to one month of yield at the selected annual growth rate. This corresponds to 0.55%.

The yield distribution of weETH is consistent across chains. Hence, the recommended parameters can be adopted for other weETH markets on Venus.

As such, for wstETH, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 6.7%
Snapshot Interval 30d
Snapshot Gap 0.55%

wUSDM

The exchange rate growth of wUSDM is primarily influenced by staking rewards earned from Treasury Bond Yield.

wUSDM’s historical yield data appears fairly inconsistent, with significant periods of lack of rewards. Based on the past 180 days of data, the maximum observed three day annualized yield is selected, and the standard deviation of the one day APY series is added. This methodology captures the stable baseline while accounting for transient yield spikes.

The resulting Annual Growth Rate used for the Capped Oracle is 6.1%.

A snapshot interval of 30 days is selected, allowing the reference exchange rate to be updated monthly and minimizing the risk of prolonged deviation from the true on-chain growth rate.

To avoid prematurely capping legitimate growth immediately after deployment, we apply a snapshot gap equivalent to one month of yield at the selected annual growth rate. This corresponds to 0.49%.

As such, for wUSDM, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 6.1%
Snapshot Interval 30d
Snapshot Gap 0.49%

Disclaimer

Chaos Labs has not been compensated by any third party for publishing this recommendation.

2 Likes

Overview

In light of the upcoming adoption of Capped Oracle in the Ethereum Chain, we cover the parameters for the relevant assets in the Core instance in the following recommendation.

sFRAX

The exchange rate growth of sFRAX reflects rewards accrued from Frax’s staking architecture, where returns are distributed through protocol revenue and partner integrations, including RWAs and Curve gauges. Rewards are typically distributed on a weekly basis, which informs the smoothing and maximum window selections for this analysis.

To accurately capture the representative yield pattern while minimizing short term noise, a 7 day smoothing window is applied to stabilize transient fluctuations and align with the weekly cadence of reward distribution. From the past 180 days of data, the maximum 30 day annualized yield is selected, to which the standard deviation of the 7 day APY series is added in order to account for variability and potential yield spikes.

The resulting Annual Growth Rate used for the Capped Oracle is 54.04%.

A snapshot interval of 30 days is selected, allowing the reference exchange rate to be updated monthly and minimizing the risk of prolonged deviation from the true on-chain growth rate.

To avoid prematurely capping legitimate growth immediately after deployment, we apply a snapshot gap equivalent to one month of yield at the selected annual growth rate. This corresponds to 4.5%.

As such, for sFRAX, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 54.04%
Snapshot Interval 30d
Snapshot Gap 4.5%

sUSDS

The exchange rate growth of sUSDS reflects staking rewards distributed through Sky’s stablecoin yield system, which is backed by a combination of protocol fees, liquidity deployment, and yield strategies. These rewards are typically updated with high frequency, leading to more granular observable changes in APY.

From the past 180 days of data, the maximum 7 day annualized yield is selected. To this, the standard deviation of the 1 day APY series is added to account for short term volatility and potential yield spikes.

The resulting Annual Growth Rate used for the Capped Oracle is 16.24%.

A snapshot interval of 30 days is selected, allowing the reference exchange rate to be updated monthly and minimizing the risk of prolonged deviation from the true on-chain growth rate.

To avoid prematurely capping legitimate growth immediately after deployment, we apply a snapshot gap equivalent to one month of yield at the selected annual growth rate. This corresponds to 1.35%.

As such, for sUSDS, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 16.24%
Snapshot Interval 30d
Snapshot Gap 1.35%

yVault Tokens

The exchange rate growth of yVault tokens reflects rewards from various yield farming strategies and is distributed through Yearn’s yield system. These rewards are typically sparse, leading to less consistent observable APY.

From the past 180 days of data, the maximum 30 day annualized yield is selected. To this, the standard deviation of the 1 day APY series is added to account for short-term volatility and potential yield spikes.

The resulting Annual Growth Rate used for the Capped Oracle of the yvVault tokens is the following:

  • yvUSDT: 11.08%.

  • yvUSDS: 22.21%

  • yvUSDC: 12.21%

  • yvETH: 5.18%

A snapshot interval of 30 days is selected, allowing the reference exchange rate to be updated monthly and minimizing the risk of prolonged deviation from the true on-chain growth rate.

To avoid prematurely capping legitimate growth immediately after deployment, we apply a snapshot gap equivalent to one month of yield at the selected annual growth rate

As such, for yVault tokens, we recommend the following Capped Oracle Parameters:

Parameter yvUSDT yvUSDS yvUSDC yvETH
Annual Growth Rate 11.08% 22.21% 12.21% 5.18%
Snapshot Interval 30d 30d 30d 30d
Snapshot Gap 0.92% 1.85% 1.07% 0.43%

LBTC/eBTC

While BTC staked within Babylon does not currently accrue any yield, given its use of the fundamental exchange rate, we recommend the adoption of the Capped Oracle with parameters designed to prevent exchange rate manipulation while not increasing the maximum price over time. This is done by setting an initial Snapshot Gap of 4%, while maintaining the Annual Growth Rate to 0%

Parameter LBTC eBTC
Annual Growth Rate 0% 0%
Snapshot Interval 30d 30d
Snapshot Gap 4% 4%

Disclaimer

Chaos Labs has not been compensated by any third party for publishing this recommendation.

2 Likes

Can we continue rolling out the Capped Oracles recommendations please? We have to deploy on BNB Chain as well as we have markets in the queue needed to be deployed. Thanks!

1 Like

Overview

In light of the upcoming implementation of the Capped Oracle on the Ethereum Chain, this recommendation outlines the proposed parameter adjustments for the relevant assets within the Venus Ethereum Liquid Staked ETH isolated instance. Additionally, since weETH and wstETH have already been analyzed in the previous post, they will not be covered again in this recommendation.

pufETH

The exchange rate growth of pufETH is driven by rewards earned through Ethereum PoS validation and native restaking on EigenLayer. These rewards are sourced from validator ticket sales and AVS operated by restaking participants.

To analyze pufETH’s historical performance, a 14-day rolling average is applied to the APY series to smooth short-term variance. Using data from the last 180 days, the highest observed 14-day annualized yield is identified, and the daily APY standard deviation is added.

The calculated Annual Growth Rate applied to the Capped Oracle is 22.31%.

The snapshot interval is fixed at 30 days to ensure monthly updates of the reference exchange rate.

To prevent the oracle from constraining natural post-deployment expansion, a snapshot gap equivalent to one month of growth at the applied annual rate is included. This value is 1.85%.

Given above, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 22.31%
Snapshot Interval 30d
Snapshot Gap 1.85%

sfrxETH

The exchange rate growth of sfrxETH is based on staking rewards earned by Frax ETH validators. These rewards are sourced from native Ethereum PoS yield and are periodically added to the sfrxETH vault in the form of newly minted frxETH.

To evaluate yield trends, a 7-day smoothing function is applied to the annualized yield series to dampen short-term movements. Based on 180 days of data, the highest 7-day annualized yield observed is 5.05%, and the standard deviation of the 1-day APY series is 0.94%. These values are summed to define the Annual Growth Rate used in the Capped Oracle, which is 5.99%.

The snapshot interval is fixed at 30 days to ensure monthly updates of the reference exchange rate.

To prevent the oracle from constraining natural post-deployment expansion, a snapshot gap equivalent to one month of growth at the applied annual rate is included. This value is 0.50%

Given above, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 5.99%
Snapshot Interval 30d
Snapshot Gap 0.50%

ezETH

The exchange rate growth of ezETH is based on Ethereum staking and restaking activity managed through Renzo Protocol. Rewards are generated from native validator yield and restaking across AVSs, and are reflected in the increasing ETH-denominated value of ezETH.

To evaluate rate behavior, a 14-day average is applied to the yield series to smooth daily changes. Based on the most recent 180-day window, the maximum 14-day annualized APY observed is 13.64%, and the standard deviation of the 1-day APY series is 9.87%. These values are added to produce an Annual Growth Rate of 23.51% for the Capped Oracle.

A 30-day snapshot interval is applied to ensure consistent monthly updates of the reference exchange rate.

To account for initial growth upon deployment, a snapshot gap equivalent to one month of yield at the derived annual rate is included, resulting in a gap of 1.96%.

Parameter Value
Annual Growth Rate 23.51%
Snapshot Interval 30d
Snapshot Gap 1.96%

weETHs

The exchange rate growth of weETHs is driven by the composite staking yield of all assets deposited into the vault. These assets are restaked via Symbiotic, and rewards are auto-compounded into the value of weETHs. Users receive staking yield as well as Symbiotic, ether.fi, and Veda points.

To evaluate rate behavior, a 14-day average is applied to the yield series to smooth daily changes. Based on the most recent 180-day window, the maximum 14-day annualized APY observed is 3.63%, and the standard deviation of the 1-day APY series is 0.90%. These values are added to produce an Annual Growth Rate of 4.52% for the Capped Oracle.

A 30-day snapshot interval is applied to ensure consistent monthly updates of the reference exchange rate.

To account for initial growth upon deployment, a snapshot gap equivalent to one month of yield at the derived annual rate is included, resulting in a gap of 0.38%.

Parameter Value
Annual Growth Rate 4.52%
Snapshot Interval 30d
Snapshot Gap 0.38%

PT-weETH-DEC24

As the PT-weETH asset has expired in December 2024, it has stopped accruing yield; for this reason, we recommend adopting a capped oracle with 0% Annual Growth Rate and a 4% Snapshot Gap.

Parameter Value
Annual Growth Rate 0.00%
Snapshot Interval 30d
Snapshot Gap 4.00%

Disclaimer

Chaos Labs has not been compensated by any third party for publishing this recommendation.

1 Like

Overview

Chaos Labs provides a new recommendation for Capped Oracle parameters in the Venus BNB Chain deployment. Please note that assets being deprecated in the Liquid Staked BNB and ETH pools, as per our deprecation plan, are not included in this recommendation, as their borrowing power is already eliminated through setting CF to 0.

sUSDe

We reiterate our findings in our previous post regarding sUSDe, and recommend aligning its parameters on BNB Chain Core. Specifically, a 7-day rolling average is applied to the APY series to reduce noise from short-term fluctuations. Based on the most recent 180-day window, the maximum observed 7-day annualized yield is 23.50%, and the standard deviation of the one-day APY series is 4.77%. These values are combined to produce an Annual Growth Rate of 28.27% for the Capped Oracle.

The snapshot interval is fixed at 30 days to ensure monthly updates of the reference exchange rate.

To prevent the oracle from constraining natural post-deployment expansion, a snapshot gap equivalent to one month of growth at the applied annual rate is included. This value is 2.36%.

Given these factors, we recommend the following Capped Oracle Parameters:

Parameter Value
Annual Growth Rate 28.27%
Snapshot Interval 30d
Snapshot Gap 2.36%

PT-sUSDE-26JUN2025

As this PT asset expires in June 2025, it will have stopped accruing yield if and when this proposal is implemented. Thus, we recommend adopting a capped oracle with 0% Annual Growth Rate and a 4% Snapshot Gap.

Parameter Value
Annual Growth Rate 0.00%
Snapshot Interval 30d
Snapshot Gap 4.00%

xSolvBTC

While BTC staked within Babylon through the Solv Protocol does not currently accrue any yield, given its use of the fundamental exchange rate, we recommend the adoption of the Capped Oracle with parameters designed to prevent exchange rate manipulation while not increasing the maximum price over time. This is done by setting an initial Snapshot Gap of 4%, while maintaining the Annual Growth Rate to 0%.

Parameter Value
Annual Growth Rate 0%
Snapshot Interval 30d
Snapshot Gap 4%

BNBx

The exchange rate growth of BNBx is based on BNB Chain staking and activity managed through Stader. Rewards are generated from native validator yield and are reflected in the increasing BNB-denominated value of BNBx.

To evaluate rate behavior, a 14-day average is applied to the yield series to smooth daily changes. Based on the most recent 180-day window, the maximum 14-day annualized APY observed is 4.40%, and the standard deviation of the 1-day APY series is 3.13%. These values are added to produce an Annual Growth Rate of 7.53% for the Capped Oracle.

A 30-day snapshot interval is applied to ensure consistent monthly updates of the reference exchange rate.

To avoid prematurely capping legitimate growth immediately after deployment, we apply a snapshot gap equivalent to one month of yield at the selected annual growth rate; this results in a gap of 0.63%.

Parameter Value
Annual Growth Rate 7.53%
Snapshot Interval 30d
Snapshot Gap 0.63%

ankrBNB

The exchange rate growth of ankrBNB is based on BNB Chain staking and activity managed through Ankr. As above, rewards are generated from native validator yield and are reflected in the increasing BNB-denominated value of ankrBNB.

A 7-day average is applied to the yield series to smooth daily spikes. Based on the most recent 180-day window, the maximum 7-day annualized APY observed is 4.39%, and the standard deviation of the 1-day APY series is 1.73%. These values are added to produce an Annual Growth Rate of 6.12%.

A 30-day snapshot interval is applied to ensure consistent monthly updates of the reference exchange rate.

To account for initial growth upon deployment, a snapshot gap equivalent to one month of yield is included, resulting in a gap of 0.51%.

Parameter Value
Annual Growth Rate 6.12%
Snapshot Interval 30d
Snapshot Gap 0.51%

slisBNB

slisBNB is a liquid staking token issued by Lista DAO that represents staked BNB and accrues yield in line with BNB’s staking APR, allowing users to earn passive rewards while maintaining liquidity within the Lista ecosystem. While slisBNB itself generates yield from BNB staking, it also enables users to participate in Binance Launchpool events and earn additional rewards if held in a Binance Web3 MPC wallet, but these Launchpool rewards are not reflected in slisBNB’s exchange rate, reducing rate volatility.

To better evaluate rate behavior, a 7-day average is applied to the yield series. Based on the most recent 180-day window, the maximum 7-day MA observed is 3.24%, and the standard deviation of the 1-day APY series is 0.88%. These values are added to produce an Annual Growth Rate of 4.12% for the Capped Oracle.

A 30-day snapshot interval is applied to ensure consistent monthly updates of the reference exchange rate.

To account for initial growth upon deployment, a snapshot gap equivalent to one month of yield at the derived annual rate is included, resulting in a gap of 0.35%.

Parameter Value
Annual Growth Rate 4.12%
Snapshot Interval 30d
Snapshot Gap 0.35%

asBNB

asBNB utilizes slisBNB as its base asset, all withdrawals are processed in slisBNB, and its exchange rate is determined against slisBNB, while adding rewards from BNB Launchpool events on top. As such, we recommend layering the asBNB Capped Oracle on top of the slisBNB Capped Oracle (described above), reflecting asBNB’s role as an additional yield-generation layer of slisBNB.

Because rewards are distributed in the form of an increased exchange rate, a few days after the completion of a Launchpool, we opt for a 30-day moving average, the max observed rate of which is 9.86%. Additionally, we add the 1-day MA standard deviation, which is 20.63%. This leads to an annual growth rate of 30.49%.

A 30-day snapshot interval is applied to ensure consistent updates of the reference exchange rate. To account for initial growth upon deployment, a snapshot gap equivalent to one month of yield at the derived annual rate is included, resulting in a gap of 2.54%.

We recommend the following parameters in both the Core and Liquid Staked BNB pools.

Parameter Value
Annual Growth Rate 30.49%
Snapshot Interval 30 days
Snapshot Gap 2.54%

Disclaimer

Chaos Labs has not been compensated by any third party for publishing this recommendation.