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

wstETH (L2)

Custom price feed for Lido Wrapped Staked ETH on L2 chains.

Custom price feed for Lido Wrapped Staked ETH on L2 chains. No direct wstETH/USD feed exists, so the price is composed from a Chainlink wstETH/ETH feed and a Chainlink ETH/USD feed.

Source: wstETH_L2_CustomPriceFeed.sol

L2 feed. For the Ethereum mainnet feed, see wstETH.


Approach

Chainlink wstETH/ETH × ETH/USD — the ETH/USD term is read from the NAV's own primary feed via getPriceData(WETH), not a hardcoded oracle.

Left-to-right flowchart of the wstETH (L2) price feed: rate and Chainlink inputs combine into a USD price, with a staleness gate.
wstETH (L2) price feed — how its oracle inputs compose into a USD price, with the staleness gate.

The ETH/USD term is sourced from the NAV's own selector — see Base/USD from the NAV's own selector.


Price calculation

Input
Source
Description

wstETH/ETH

Chainlink wstETH/ETH feed (latestRoundData)

wstETH price in ETH (18 dec)

ETH/USD

NAV basegetPriceDataNoDivergence(WETH) (8 dec)

the NAV's primary WETH/USD price

The wstETH/ETH feed already embeds the Lido exchange rate, so no on-chain rate call is made. The divisor is 10 ** wstETHToETH.decimals(). Output is 8 decimals (inherited from the ETH/USD term via _decimals).


Constructor

Parameter
Description

wstEth_

wstETH token address (the supported underlying asset)

wstEthToEthChainlink_

Chainlink wstETH/ETH aggregator

wstEthToEthHeartbeat_

Staleness window (seconds) for the wstETH/ETH feed

nav_

NAVCalculator (proxy) — supplies the base asset's USD price via getPriceDataNoDivergence

baseAsset_

the registered base asset whose USD price is read (WETH)


Staleness

getLatestPrice() returns stale = true if the wstETH/ETH feed satisfies block.timestamp − updatedAt ≥ heartbeat, if its answer is ≤ 0, if its updatedAt is in the future (clamped to block.timestamp before the check), or if the NAV reports the base asset (WETH) stale — all its feeds stale. The base leg's updatedAt now comes from the NAV's selected WETH feed. The reported updatedAt is the older (smaller) of the two legs.


Chains

Deployed on Arbitrum, Base, and Gnosis. The Ethereum mainnet counterpart is wstETH (Mainnet), which derives the rate from stEthPerToken() instead of a wstETH/ETH feed.

Last updated