Flawed calculation of ETH_USD_PLACEHOLDER address in WiseOracleHub's constructor  leads to denial of service and breaks all the functionality related to it
Audit: 2024-02-wise-lending-findings
Severity: HIGH

# Lines of code

https://github.com/code-423n4/2024-02-wise-lending/blob/79186b243d8553e66358c05497e5ccfd9488b5e2/contracts/WiseOracleHub/WiseOracleHub.sol#L44-L55


# Vulnerability details

## Bug Description
ETH_USD_PLACEHOLDER is supposed to be a contract address that must have [IPriceFeed](https://github.com/code-423n4/2024-02-wise-lending/blob/79186b243d8553e66358c05497e5ccfd9488b5e2/contracts/InterfaceHub/IPriceFeed.sol#L5) functionalities implemented like `latestRoundData()` etc

Only contract where this address is initialized is in WiseOracleHub's constructor . The Problem lies in the assumptions of controllable address , what i mean by that is the codebase is encoding hard-coded string "ETH_USD_PLACEHOLDER" to derive the address from it.

```solidity
constructor(address _wethAddrss, address _ethPricingFeed, address _uniswapFactoryV3) {
   ...
   ETH_USD_PLACEHOLDER = address(
            uint160(
                uint256(
                    keccak256(
                        abi.encodePacked(
                            "ETH_USD_PLACEHOLDER"
                        )
                    )
                )
            )
        );
...
}
```

once the address is derived from it, there is no way to deploy contract with IPriceFeed functionalities on it, because that is not how the EVM works.

`You can read more about how contract address is calculated here` -> [1](https://ethereum.stackexchange.com/questions/17927/how-to-deploy-smart-contract-in-predefined-contract-address-in-private-ethereum) [2](https://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed/761#761) [3](https://eips.ethereum.org/EIPS/eip-1820) [4](https://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed)

Since codebase assumes that ETH_USD_PLACEHOLDER is a contract address that has implemented IPriceFeed functionalities, all the instances across codebase where there is function call to ETH_USD_PLACEHOLDER address, it will result in EVM Revert error, because there is no implementation on this address

`Lets demonstrate with an example`

[getETHPriceInUSD()](https://github.com/code-423n4/2024-02-wise-lending/blob/79186b243d8553e66358c05497e5ccfd9488b5e2/contracts/WiseOracleHub/OracleHelper.sol#L265) is an important function in OracleHelper.sol that is used to get price of ETH in dollars, which is used while various lending and borrowing operations
```
    function getETHPriceInUSD() public view returns (uint256)
    {
        if (_chainLinkIsDead(ETH_USD_PLACEHOLDER) == true) {
            revert OracleIsDead();
        }

        ...
    }
```
it triggers `_chainLinkIsDead(address)` with ETH_USD_PLACEHOLDER, which it self calls `getLatestRoundId(ETH_USD_PLACEHOLDER)`
```
function _chainLinkIsDead(address _tokenAddress) internal view returns (bool){
        
        ...

        uint80 latestRoundId = getLatestRoundId(
            _tokenAddress
        );
        
        ...
}
```
Finally, `