RocketPoolMinipool - should check for address(0x0)
The two implementations for `getContractAddress()` in `Minipool/Delegate` are not checking whether the requested contract's address was ever set before. If it were never set, the method would return `address(0x0)`, which would silently make all delegatecalls succeed without executing any code. In contrast, `RocketBase.getContractAddress()` fails if the requested contract is not known.\\nIt should be noted that this can happen if `rocketMinipoolDelegate` is not set in global storage, or it was cleared afterward, or if `_rocketStorageAddress` points to a contract that implements a non-throwing fallback function (may not even be storage at all).\\nMissing checks\\n```\\nfunction getContractAddress(string memory \\_contractName) private view returns (address) {\\n    return rocketStorage.getAddress(keccak256(abi.encodePacked("contract.address", \\_contractName)));\\n}\\n```\\n\\n```\\nfunction getContractAddress(string memory \\_contractName) private view returns (address) {\\n    return rocketStorage.getAddress(keccak256(abi.encodePacked("contract.address", \\_contractName)));\\n}\\n```\\n\\nChecks implemented\\n```\\nfunction getContractAddress(string memory \\_contractName) internal view returns (address) {\\n    // Get the current contract address\\n    address contractAddress = getAddress(keccak256(abi.encodePacked("contract.address", \\_contractName)));\\n    // Check it\\n    require(contractAddress != address(0x0), "Contract not found");\\n    // Return\\n    return contractAddress;\\n}\\n```\\n
Resolution\\nAddressed in branch `rp3.0-updates` (rocket-pool/[email protected]b424ca1) by changing requiring that the contract address is not `0x0`.\\nSimilar to `RocketBase.getContractAddress()` require that the contract is set.
```\\nfunction getContractAddress(string memory \\_contractName) private view returns (address) {\\n    return rocketStorage.getAddress(keccak256(abi.encodePacked("contract.address", \\_contractName)));\\n}\\n```\\n