spETH
Custom price feed for Spark Savings ETH (spETH).
Custom price feed for Spark Savings ETH (spETH). spETH is an ERC-4626 vault share that accrues value as savings yield accumulates. The price is derived from the vault's current share-to-asset conversion rate multiplied by the NAV's WETH/USD price.
Source: spETH_CustomPriceFeed.sol
Approach
spETH.convertToAssets(1 spETH) × WETH/USD (from the NAV's primary feed)
Spark shipped this savings family twice — pin the vault by address, never by symbol(). A dead earlier generation answers the same symbol() at a different address with totalSupply == 0. An empty ERC-4626 answers convertToAssets at the 1:1 default instead of reverting, so wiring the dead one prices plausibly and wrongly. Note that spETH is 18-decimal in both generations, so decimals alone does not disambiguate it — only the address does.
Price calculation
decimals = spETH.decimals() // vault share decimals
rate = spETH.convertToAssets(10^decimals) // WETH per 1 spETH
price = rate × WETH_USD / 10^assetDecimalsconvertToAssets()
IERC4626(spETH)
WETH backing per 1 spETH share at the current accrued rate
WETH_USD
NAV base — getPriceDataNoDivergence(WETH) (8 dec)
the NAV's primary WETH/USD price
The divisor is 10^assetDecimals (the underlying's decimals), not the share decimals — they differ whenever a vault uses a decimals offset. Result carries the feed's 8 decimals.
Constructor
vault_
The spETH vault address (also used to read vault decimals)
nav_
NAVCalculator (proxy) — supplies the base asset's USD price via getPriceDataNoDivergence
baseAsset_
The registered base asset whose USD price is read (WETH); must equal the vault's asset() — reverts BaseAssetMismatch otherwise
Staleness
The price is stale if the NAV reports the base asset (WETH) stale — all its feeds stale. The base leg's updatedAt comes from the NAV's selected WETH feed. The convertToAssets rate has no heartbeat — it is a live view on the ERC-4626 vault.
Chains
Deployed on Ethereum mainnet only.
Unlike the other members of this family the base is WETH, not a stablecoin, so the share price tracks ETH rather than $1.
Last updated