stETH/ETH chainlink oracle has too long of heartbeat and deviation threshold which can cause loss of funds
getTknOhmPrice uses the stETH/ETH chainlink oracle to calculate the current price of the OHM token. This token valuation is used to determine the amount of stETH to skim from the user resulting from oracle arb. This is problematic since stETH/ETH has a 24 hour heartbeat and a 2% deviation threshold. This deviation in price could easily cause loss of funds to the user.\\nBLVaultManagerLido.sol#L458-L473\\n```\\nfunction getTknOhmPrice() public view override returns (uint256) {\\n    // Get stETH per wstETH (18 Decimals)\\n    uint256 stethPerWsteth = IWsteth(pairToken).stEthPerToken();\\n\\n    // Get ETH per OHM (18 Decimals)\\n    uint256 ethPerOhm = _validatePrice(ohmEthPriceFeed.feed, ohmEthPriceFeed.updateThreshold);\\n\\n    // Get stETH per ETH (18 Decimals)\\n    uint256 stethPerEth = _validatePrice(\\n        stethEthPriceFeed.feed,\\n        stethEthPriceFeed.updateThreshold\\n    );\\n\\n    // Calculate wstETH per OHM (18 decimals)\\n    return (ethPerOhm * 1e36) / (stethPerWsteth * stethPerEth);\\n}\\n```\\n\\ngetTknOhmPrice uses the stETH/ETH oracle to determine the price which as stated above has a 24 hour hearbeat and 2% deviation threshold, this means that the price can move up to 2% or 24 hours before a price update is triggered. The result is that the on-chain price could be much different than the true stETH price.\\nBLVaultLido.sol#L232-L240\\n```\\n    uint256 wstethOhmPrice = manager.getTknOhmPrice();\\n    uint256 expectedWstethAmountOut = (ohmAmountOut * wstethOhmPrice) / _OHM_DECIMALS;\\n\\n    // Take any arbs relative to the oracle price for the Treasury and return the rest to the owner\\n    uint256 wstethToReturn = wstethAmountOut > expectedWstethAmountOut\\n        ? expectedWstethAmountOut\\n        : wstethAmountOut;\\n    if (wstethAmountOut > wstethToReturn)\\n        wsteth.safeTransfer(TRSRY(), wstethAmountOut - wstethToReturn);\\n        \\n```\\n\\nThis price is used when determining how much stETH to send back to the user. Since the oracle can be up to 2% different from the true price, the user can unfairly lose part of their funds.
Use the stETH/USD oracle instead because it has a 1-hour heartbeat and a 1% deviation threshold.
User will be unfairly penalized due large variance between on-chain price and asset price
```\\nfunction getTknOhmPrice() public view override returns (uint256) {\\n    // Get stETH per wstETH (18 Decimals)\\n    uint256 stethPerWsteth = IWsteth(pairToken).stEthPerToken();\\n\\n    // Get ETH per OHM (18 Decimals)\\n    uint256 ethPerOhm = _validatePrice(ohmEthPriceFeed.feed, ohmEthPriceFeed.updateThreshold);\\n\\n    // Get stETH per ETH (18 Decimals)\\n    uint256 stethPerEth = _validatePrice(\\n        stethEthPriceFeed.feed,\\n        stethEthPriceFeed.updateThreshold\\n    );\\n\\n    // Calculate wstETH per OHM (18 decimals)\\n    return (ethPerOhm * 1e36) / (stethPerWsteth * stethPerEth);\\n}\\n```\\n