# Lido adapter incorrectly calculates the price of the underlying token

Alchemix's Lido adapter priced WstETH in stETH instead of WETH, misstating yield-token value and skewing harvestable balance calculations.

- Payout: Audit contest
- Severity: medium
- Program: Alchemix
- Found by: AuditsAreUS
- Disclosed: 2022-07-18
- Write-up quality: 6/10
- Original: https://code4rena.com/reports/2022-05-alchemix#m-15
- Library page: http://bugbountylibrary.com/r/c4%3A2022-05-alchemix%3AM-15
- Tags: area:web3 domain:web3 impact:funds-loss kind:contest platform:code4rena sev:medium tech:evm tech:solidity vuln:accounting-error

**Target:** Lido/WstETH price adapter contract
**Root cause:** price() calls IWstETH.getStETHByWstETH(), which only converts WstETH to stETH, but the desired underlying is WETH; stETH and WETH are not equivalent in value.
**Steps:**
1. Inspect the adapter's `price()`: `return IWstETH(token).getStETHByWstETH(10**SafeERC20.expectDecimals(token));`
2. Note getStETHByWstETH only returns WstETH value denominated in stETH, not WETH
3. Observe balance/harvest calculations consume this price as if it were the WETH price
4. Result: harvestable amount is over- or understated because stETH != WETH
**How found:** Code review of the adapter's price() function, noticing the conversion helper returns stETH rather than the desired WETH underlying.
**Insight:** When auditing price/oracle adapters, verify the denomination of the final return value matches the protocol's expected underlying asset, not just an intermediate wrapper token.

