osToken (osETH / osGNO)
Custom price feed for StakeWise V3 osTokens.
Custom price feed for StakeWise V3 osTokens. No direct osToken/USD feed exists, so the price is composed from the StakeWise vault controller's osToken→underlying conversion rate and the NAV's own underlying/USD base price. A single generic adapter prices osETH on Ethereum (underlying ETH) and osGNO on Gnosis (underlying GNO) via separate instances. On mainnet, osETH also carries an independent cross-rate monitor feed (ETH/USD × osETH/ETH, with a Redstone osETH/ETH leg) registered as a divergence monitor — a market depeg flags osETH irregular without moving its price.
Source: osToken_CustomPriceFeed.sol
Approach
OsTokenVaultController.convertToAssets(1e18) × NAV base underlying/USD (getPriceDataNoDivergence(WETH) on mainnet, getPriceDataNoDivergence(GNO) on Gnosis)
The base/USD term is sourced from the NAV's own selector — see Base/USD from the NAV's own selector.
Price calculation
convertToAssets(1e18)
IOsTokenVaultController.convertToAssets
Underlying backing per 1 osToken (18 dec)
underlying/USD
NAV base — getPriceDataNoDivergence(WETH) on mainnet, getPriceData(GNO) on Gnosis (8 dec)
the NAV's primary underlying/USD price — ETH/USD for osETH, GNO/USD for osGNO
convertToAssets returns the underlying-per-osToken exchange rate, which rises as StakeWise staking rewards accrue. The underlying's USD price is read from the NAV's own primary feed — ETH/USD via getPriceDataNoDivergence(WETH) on mainnet, GNO/USD via getPriceDataNoDivergence(GNO) on Gnosis. The divisor is the fixed 1e18. Output is 8 decimals (inherited from the NAV's base price).
Constructor
osToken_
osToken address (osETH or osGNO; the supported underlying asset)
osTokenVaultController_
StakeWise OsTokenVaultController for this osToken (must be a contract)
nav_
NAVCalculator (proxy) — supplies the base asset's USD price via getPriceDataNoDivergence
baseAsset_
The registered base asset whose USD price is read (WETH on mainnet, GNO on Gnosis)
Staleness
The underlying/USD leg has no independent heartbeat here — its freshness comes from the NAV: the result is marked stale if the NAV reports the base asset (WETH on mainnet, GNO on Gnosis) stale — all its feeds stale. The base leg's updatedAt comes from the NAV's selected feed. The result is also marked stale if the underlying/USD answer is ≤ 0 or if convertToAssets(1e18) returns 0. The convertToAssets call has no independent age check — it is a live view on the StakeWise controller.
Chains
Deployed on Ethereum (osETH, underlying ETH/USD) and Gnosis (osGNO, underlying GNO/USD), one instance per osToken.
Last updated