Resilient Price Oracle
Overview
Before Venus V4, Venus relied on a Chainlink oracle adapter for protocol prices. A single configured source can become a single point of failure: an erroneous, manipulated, or stale price can cause improper liquidations or unsafe borrowing.
Venus V4 introduced ResilientOracle, which lets governance assign main, pivot, and fallback roles per underlying asset. When multiple roles are enabled, the contract can compare sources within governance-set bounds and try another valid source when a comparison fails.
This design provides configurable validation and fallback paths; it does not guarantee that every asset has multiple independent sources. If no pivot is configured or enabled, a valid main-oracle response can be returned without cross-validation. Oracle addresses, roles, enable flags, and bounds are mutable governance configuration and must be checked on-chain.
Key Features
Resilient Price Feeds
The Resilient Price Feeds replace a single provider in the Comptroller with per-asset source roles. Published configurations currently include Chainlink, RedStone, Binance, Atlas, APRO, and asset-specific adapters. A provider can be used as main, pivot, or fallback depending on the asset; the provider name alone does not determine its role.
Governance Configurations
Authorized governance actions can pause or unpause a ResilientOracle, set an asset's source addresses and roles, enable or disable a role, and update validation bounds. Fixed-price behavior, where used, is implemented by the configured source rather than by treating this page as configuration.
Safety Measures
In implementing the Resilient Price Oracle, several safety measures have been adopted to ensure the security and continuity of the Venus Protocol:
Price Continuity: Asset prices pre and post upgrade were validated in a simulated environment to ensure consistency.
Testnet Deployment: The oracles have been deployed and tested in the Venus Protocol testnet environment.
Auditing: Specific revisions have been reviewed by OpenZeppelin, Peckshield, Certik, and Hacken. Read each report's exact scope and verify that the deployed implementation maps to the reviewed revision.

Protection Mode
For low-liquidity collateral assets, the Resilient Oracle's spot price is wrapped by the DeviationBoundedOracle on the borrow-power path. When the spot deviates beyond a per-asset threshold from the recent rolling window, Protection Mode activates and the Comptroller switches to bounded prices — min(spot, windowMin) for collateral and max(spot, windowMax) for debt — until conditions normalize. Liquidations continue to use the Resilient Oracle's spot price directly.
Correlated Token Oracles
For correlated tokens, such as liquid staking tokens (LSTs), an adapter can read the on-chain exchange rate between correlated assets and multiply it by the underlying asset's USD price.
Venus uses dedicated adapters for supported correlated assets to calculate a price as follows:
convert the LST to its underlying token using the rate exposed by the relevant protocol contract; and
convert the resulting underlying amount to USD using the configured market-price oracle.
The current list of correlated token oracles in Venus is:
AnkrBNBOracle. It returns the USD price of the ankrBNB token, converting on-chain from ankrBNB to BNB using the exchange rate from the ankrBNB contract.BNBxOracle. It returns the USD price of the BNBx token, converting on-chain from BNBx to BNB using the exchange rate from the stake manager contract.eBTCAccountantOracle(instance ofEtherfiAccountantOracle). It returns the USD price of the eBTC token, converting on-chain from eBTC to WBTC using the exchange rate from the Accountant contract.PendleOracle. It returns the USD price of the PT Pendle token, converting on-chain from the PT token to the underlying token using a Pendle market contract.SFraxOracle. It returns the USD price of the sFRAX token, converting on-chain from sFRAX to FRAX using the exchange rate from the sFRAX contract.SlisBNBOracle. It returns the USD price of the slisBNB token, converting on-chain from slisBNB to BNB using the exchange rate from the stake manager contract.AsBNBOracle. It returns the USD price of the asBNB token, converting on-chain from asBNB to slisBNB using the exchange rate from the asBNB minter contract.StkBNBOracle. It returns the USD price of the stkBNB token, converting on-chain from stkBNB to BNB using the exchange rate from the stake pool contract.WBETHOracle. It returns the USD price of the WBETH token, converting on-chain from WBETH to BNB using the exchange rate from the WBETH contract.WeETHOracle. It returns the USD price of the weETH token, converting on-chain from weETH to eETH using the exchange rate from the liquidity pool contract and assuming 1 eETH = 1 ETH.WeETHsOracle(instance ofWeETHAccountantOracle). It returns the USD price of the weETHs token, converting on-chain from weETHs to WETH using the exchange rate from the Accountant contract.
Assumption on Liquid Staked Tokens
WeETHOracle and WstETHOracle assume a 1:1 price ratio between the LST's immediate underlying asset and ETH (for example, 1 stETH = 1 ETH). Smart-contract, counterparty, liquidity, or redemption failures can break that assumption. The existence of a market-price adapter, monitor, pivot, or fallback does not prove it is configured or enabled for an asset. Verify the live source roles, bounds, and latest governance actions before relying on the assumption or any secondary path.
Current configuration
The tables below are a documentation snapshot, last updated for BNB Chain oracle changes in VIP-662 on September 21, 2026. They cover only the listed Core markets and networks and are not an exhaustive deployment registry or a live status feed. A (Paused) label is also only a snapshot of market lifecycle state. For live verification, resolve the Comptroller's active oracle, then read getTokenConfig(asset), getOracle(asset, role), the relevant BoundValidator bounds, and the latest governance execution. See deployed oracle addresses.
BNB chain
Core
solvBTC
-
Upper bound: 1.02. Lower bound: 0.98. MAIN reads the Chainlink SolvBTC/BTC exchange rate feed
Core
VAI
-
-
Single price source: no pivot cross-validation and no fallback. Max stale period 86,700 seconds
Core
xSolvBTC
-
Upper bound: 1.02. Lower bound: 0.98. MAIN reads the Chainlink SVR xSolvBTC/SolvBTC exchange rate feed
Core
TSLAB
-
Upper bound: 1.05. Lower bound: 0.95. Oracle Dynamic Protection (16.67% deviation trigger)
Core
NVDAB
-
Upper bound: 1.05. Lower bound: 0.95. Oracle Dynamic Protection (16.67% deviation trigger)
Core
SPCXB
-
Upper bound: 1.05. Lower bound: 0.95. Oracle Dynamic Protection (16.67% deviation trigger)
Ethereum
Arbitrum One
ZKsync Mainnet
Base Mainnet
Further Reading
For more detailed information, refer to the following resources:
Audit reports
References
Last updated

