For the complete documentation index, see llms.txt. This page is also available as Markdown.

Resilient Price Oracle

Overview

In its previous version, Venus was fully reliant on the Chainlink price oracle for fetching prices. This dependence, while generally reliable, created a single point of failure. An erroneous or stale price could, without a secondary mechanism for validation, pose threats such as unwarranted liquidations or inflated borrowing.

In light of these risks, Venus V4 introduces the Resilient Price Oracle, a more robust system capable of pulling data from multiple sources for cross-validation. The Resilient Oracle is equipped with an algorithm to verify prices between two or more sources, providing a safeguard in cases where the primary source proves unreliable or fails.

Furthermore, the improved oracle infrastructure supports the integration of new price oracles in real-time and permits the enabling and disabling of price oracles per token.

Key Features

Resilient Price Feeds

The Resilient Price Feeds replace the single source price provider used in the Comptroller contract with a more robust and reliable solution. This new component not only fetches asset prices from various on-chain sources but also includes a fallback mechanism to protect the protocol from oracle failures. Presently, this feature incorporates Chainlink, RedStone, Pyth Network and Binance oracles, with the possibility of adding more in the future.

Governance Configurations

The Resilient Price Feeds system can be configured by the Venus governance via Venus Improvement Proposals (VIPs). These configurations include pause and resume functionalities for the oracle, price feed configurations, and fixed price settings, among others.

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: The code has been audited by OpenZeppelin, Peckshield, Certik, and Hacken.

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, like Liquid Staked Tokens (LST), best practice suggests oracles quote first smart contracts to get the exchange rate between the correlated assets, and then multiply that by the USD market price of the second token to complete the calculation.

In Venus we use dedicated oracles for each LST asset in order to calculate the price as follows:

  • convert the LST to the underlying tokens (using the exchange rate provided by the LST contracts)

  • convert the underlying token calculated in the previous step to USD, using a “traditional” oracle based on market price

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 of EtherfiAccountantOracle). 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 assumming 1 eETH = 1 ETH.

  • WeETHsOracle (instance of WeETHAccountantOracle). It returns the USD price of the weETHs token, converting on-chain from weETHs to WETH using the exchange rate from the Accountant contract.

  • WstETHOracle. It returns the USD price of the wstETH token, converting on-chain from wstETH to stETH using the exchange rate from the stETH contract, and assumming 1 stETH = 1 ETH.

Current configuration

BNB chain

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

AAVE

Upper bound: 1.05. Lower bound: 0.95

Core

ADA

Upper bound: 1.05. Lower bound: 0.95

Core

asBNB

-

Upper bound: 1.05. Lower bound: 0.95

Core

BCH

Upper bound: 1.05. Lower bound: 0.95

Core

BETH (Paused)

-

-

Core

BNB

Upper bound: 1.01. Lower bound: 0.99

Core

BTCB

Upper bound: 1.01. Lower bound: 0.99

Core

BUSD (Paused)

-

-

Core

CAKE

Upper bound: 1.05. Lower bound: 0.95

Core

DAI

Upper bound: 1.05. Lower bound: 0.95

Core

DOGE

Upper bound: 1.05. Lower bound: 0.95

Core

DOT

Upper bound: 1.05. Lower bound: 0.95

Core

ETH

Upper bound: 1.01. Lower bound: 0.99

Core

FDUSD

Upper bound: 1.05. Lower bound: 0.95

Core

FIL

Upper bound: 1.05. Lower bound: 0.95

Core

LINK

Upper bound: 1.05. Lower bound: 0.95

Core

lisUSD

-

-

Core

LTC

Upper bound: 1.05. Lower bound: 0.95

Core

MATIC (Paused)

-

-

Price feed from $POL

Core

PT-sUSDE-26JUN2025 (Paused)

-

-

Core

SOL

Upper bound: 1.05. Lower bound: 0.95

Core

slisBNB

-

-

Core

SolvBTC

-

Upper bound: 1.05. Lower bound: 0.95

Core

SXP(Paused)

-

-

Core

THE

-

Upper bound: 1.05. Lower bound: 0.95

Core

TRX

Upper bound: 1.01. Lower bound: 0.99

Core

TRXOLD(Paused)

-

Upper bound: 1.01. Lower bound: 0.99

Core

TUSD

-

Upper bound: 1.05. Lower bound: 0.95

Core

TUSDOLD (Paused)

-

-

Core

TWT

-

Upper bound: 1.05. Lower bound: 0.95

Core

UNI

Upper bound: 1.05. Lower bound: 0.95

Core

USDC

Upper bound: 1.01. Lower bound: 0.99

Core

USDe

Upper bound: 1.06. Lower bound: 0.94

Core

USDT

Upper bound: 1.01. Lower bound: 0.99

Core

VAI

-

Upper bound: 1.05. Lower bound: 0.95

Core

WBETH

-

Upper bound: 1.05. Lower bound: 0.95

Core

XRP

Upper bound: 1.05. Lower bound: 0.95

Core

XVS

Upper bound: 1.05. Lower bound: 0.95

Core

U

-

Upper bound: 1.01. Lower bound: 0.99

Core

PT-clisBNB-25JUN2026

-

-

Ethereum

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

crvUSD

-

-

Core

DAI

-

-

Core

TUSD

-

-

Core

USDC

-

-

Core

USDT

-

-

Core

WBTC

-

-

Core

WETH

-

-

Core

FRAX

-

-

Core

EIGEN

-

-

Core

sFRAX

-

-

Core

USDS

-

-

Core

BAL

-

-

Core

USDe

Upper bound: 1.01. Lower bound: 0.99

Core

tBTC

-

-

opBNB mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

BTCB

-

-

Core

ETH

-

-

Core

FDUSD

-

-

Core

USDT

-

-

Core

WBNB

-

-

Arbitrum One

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

ZKsync Mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

WBTC

-

-

Core

WETH

-

-

Core

USDC

-

-

Core

USDC_E

-

-

Core

USDT

-

-

Core

ZK

Upper bound: 1.01. Lower bound: 0.99

Core

zkETH

-

-

Assume 1:1 for WETH:rzkETH

Optimism Mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Base Mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Unichain Mainnet

Pool
Market
MAIN oracle
PIVOT oracle
FALLBACK oracle
Notes

Core

WBTC

-

-

Core

WETH

-

-

Core

USDC

-

-

Core

USD₮0

-

-

Core

UNI

-

-

Further Reading

For more detailed information, refer to the following resources:

Audit reports

References

Last updated