Oracle Configuration Update

Summary

This proposal tightens oracle safety parameters across the Venus BNB Core Pool: removes a duplicate oracle slot on sUSDe, recalibrates CAPO growth rate caps for liquid staking tokens, and tightens maxStalePeriod on 74 oracle slots.

Motivation

Staleness risk

Many oracle feeds have maxStalePeriod set too loosely relative to their actual heartbeat. For example, CAKE’s Chainlink feed has a 60-second heartbeat but a 24-hour maxStalePeriod - meaning Venus would accept a price that is up to 1,440x older than the feed’s update frequency. During a flash crash or feed outage, this could allow borrowers to use stale collateral values.

Redundant oracle slot (sUSDe)

sUSDe’s PIVOT and FALLBACK both point to the same CorrelatedTokenOracle contract. The fallback provides no additional protection - if the pivot fails, the fallback fails identically.

CAPO re-calibration

asBNB’s growth rate cap (30.5%/yr) is 30x the actual staking APY (~1%), providing diminished protection against oracle manipulation. slisBNB’s cap (4.12%/yr) is barely above actual APY (~3.5-4%), risking false CAPO triggers.


Pre-VIP Actions

These are permissionless calls that must be executed before the VIP to avoid immediate CAPO capping on liquid staking derivatives.

Action Contract Reason
updateSnapshot() 0x652B90D1d45a7cD5BE82c5Fb61a4A00bA126dde5 (asBNB CAPO) Snapshot 43+ days stale. Reducing growth rate without refreshing will immediately trigger capping.
updateSnapshot() 0xDDE6446E66c786afF4cd3D183a908bCDa57DF9c1 (slisBNB CAPO) Snapshot 16+ days stale. Same risk.

Specification

1. sUSDe: Disable Duplicate Fallback Slot

sUSDe underlying: 0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2

Current configuration:

Slot Oracle Address Enabled
MAIN Custom 0x2B2895104f958E1EC042E6Ba5cbfeCbAD3C5beDb true
PIVOT CorrelatedTokenOracle 0xA67F01322AF8EBa444D788Ee398775b446de51a0 true
FALLBACK CorrelatedTokenOracle 0xA67F01322AF8EBa444D788Ee398775b446de51a0 true

Action: Call ResilientOracle.setTokenConfig() to disable the FALLBACK slot.


2. CAPO Growth Rate Recalibration

Asset Contract Current Rate New Rate
asBNB 0x652B90D1d45a7cD5BE82c5Fb61a4A00bA126dde5 30.49%/yr 5%/yr
slisBNB 0xDDE6446E66c786afF4cd3D183a908bCDa57DF9c1 4.12%/yr 5%/yr

asBNB’s cap is reduced from 30x to ~5x the actual staking yield, providing meaningful protection while leaving adequate headroom. slisBNB’s cap is raised slightly to ~5% to avoid false triggers if actual APY fluctuates near the current cap.


3. maxStalePeriod Tightening (74 slots)

Formula:

Heartbeat New maxStalePeriod
<= 30s 60s
<= 60s heartbeat + 60s
60s < HB < 200s heartbeat + 100s
200s <= HB < 250s heartbeat + 250s
>= 250s heartbeat + 300s

Rules:

  • Only tighten: if current maxStalePeriod is already tighter than formula, keep current value
  • Unset slots (currently 0): set to formula value

3a. Chainlink feeds

Asset Role Feed HB (s) Current New
BNB Pivot 0x0567F232... 27 300 60
WBNB Pivot 0x0567F232... 27 300 60
CAKE Pivot 0xB6064eD4... 60 86,400 120
DOT Main 0xC333eb00... 600 86,400 900
XRP Pivot 0x93A67D41... 600 86,400 900
TRX Main 0xF4C5e535... 600 86,400 900
ADA Pivot 0xa767f745... 600 86,400 900
LINK Main 0xca236E32... 600 86,400 900
AAVE Main 0x1Fa0D75D... 600 1,200 900
UNI Main 0x97E87D0c... 600 1,200 900
USDC Pivot 0x51597f40... 900 86,400 1,200
DAI Main 0x132d3C0B... 900 86,400 1,200
TUSD Main 0xa3334A97... 900 86,400 1,200
USDT Main 0xb631F3Cb... 900 1,800 1,200
XVS Main 0x04C584Ce... 900 1,800 1,200
BCH Main 0x43d80f61... 900 86,400 1,200
FIL Main 0xE5dbFD90... 900 86,400 1,200
LTC Main 0x74E72F37... 900 86,400 1,200
FDUSD Main 0x390180e8... 86,400 88,200 86,700
USD1 Pivot 0xaD8b4e59... 86,400 93,600 86,700
USDe Pivot 0x10402B01... 86,400 93,600 86,700
U Pivot 0xaD8b4e59... 86,400 93,600 86,700
XAUm Main 0xfa54C1c5... 86,400 93,600 86,700

3b. RedStone feeds

Asset Role Feed HB (s) Current New
TRX Pivot 0xa17362dd... 600 1,500 900
THE Main 0xFB1267A2... 900 1,800 1,200
FDUSD Fallback 0x98DC6E90... 21,600 25,200 21,900
USDC Main 0xeA251120... 21,600 25,200 21,900
DAI Fallback 0x0bE6929F... 21,600 25,200 21,900
DOT Fallback 0xa75CC459... 21,600 25,200 21,900
USDT Pivot 0xf57bA294... 21,600 25,200 21,900
USD1 Main 0x6A1c87d1... 21,600 25,200 21,900
XVS Fallback 0xED2B1ca5... 21,600 25,200 21,900
USDe Fallback 0x0d9b42a2... 21,600 25,200 21,900
XRP Main 0xeC7C6Adc... 21,600 25,200 21,900
BCH Fallback 0x98ECE0D5... 21,600 25,200 21,900
SOL Fallback 0x90196F6D... 21,600 25,200 21,900
ETH Pivot 0x9cF19D28... 21,600 25,200 21,900
FIL Fallback 0xe49df9f6... 21,600 25,200 21,900
CAKE Main 0x1102D8C7... 21,600 25,200 21,900
ADA Main 0xc44be6D0... 21,600 25,200 21,900
LTC Fallback 0x7A9b672f... 21,600 25,200 21,900
LINK Fallback 0x1b0FDa12... 21,600 25,200 21,900
AAVE Fallback 0xe4630835... 21,600 25,200 21,900
DOGE Fallback 0x6f57Ff50... 21,600 25,200 21,900
TWT Pivot 0xefe76D1C... 21,600 25,200 21,900
UNI Fallback 0x22d47686... 21,600 25,200 21,900
solvBTC Main 0xF5F641fF... 21,600 25,200 21,900

3c. Binance feeds

Asset Role HB (s) Current New
BNB Fallback 60 100 100 (no change)
WBNB Fallback 60 0 100 (to match BNB)
lisUSD Main 900 1,500 1,200
TWT Main 900 1,500 1,200
USDC Fallback 86,400 90,000 86,700
DAI Pivot 86,400 90,000 86,700
TUSD Pivot 86,400 90,000 86,700
DOT Pivot 86,400 90,000 86,700
USDT Fallback 86,400 90,000 86,700
USD1 Fallback 86,400 90,000 86,700
XVS Pivot 86,400 90,000 86,700
XRP Fallback 86,400 90,000 86,700
BCH Pivot 86,400 90,000 86,700
asBNB Pivot 86,400 90,000 86,700
SOL Pivot 86,400 90,000 86,700
TRX Fallback 86,400 90,000 86,700
THE Pivot 86,400 90,000 86,700
BTCB Fallback 86,400 0 (unset) 86,700
FIL Pivot 86,400 90,000 86,700
CAKE Fallback 86,400 90,000 86,700
ADA Fallback 86,400 90,000 86,700
LTC Pivot 86,400 90,000 86,700
LINK Pivot 86,400 90,000 86,700
AAVE Pivot 86,400 90,000 86,700
DOGE Pivot 86,400 90,000 86,700
UNI Pivot 86,400 90,000 86,700
solvBTC Pivot 43,200 0 (unset) 43,500

Security Considerations

Staleness tightening may cause temporary price unavailability. If a feed fails to update within the new, tighter window, the oracle will reject the stale price. This is the intended behavior - it is safer to temporarily halt operations on a market than to use a potentially incorrect price. The tiered formula provides adequate margin for normal feed operation at each heartbeat tier.

CAPO snapshot freshness is critical. If updateSnapshot() is not called before this VIP executes, the new lower growth rate will be applied to a stale snapshot. The CAPO oracle will compute a maximum price that may be below the current exchange rate, immediately capping the price and potentially triggering incorrect liquidations on asBNB and slisBNB markets.

2 Likes