Omniscia vfat Audit

Multicall Manual Review Findings

Multicall Manual Review Findings

MLL-01M: Non-Standard Initialization Disable Mechanism

Description:

The Multicall::constructor is meant to disable initializations of its parent implementation by invoking the Initializable::initializer modifier during its construction. This approach is not standard as the Initializable contains a versioning system that can be properly disabled via the dedicated Initializable::_disableInitializers function.

Example:

contracts/base/Multicall.sol
31/// @param registry_ Address of the SickleRegistry contract
32constructor(SickleRegistry registry_) initializer {
33 registry = registry_;
34}

Recommendation:

We advise this approach to be implemented, ensuring that initialization of the base implementation is properly prohibited.

Alleviation (6ab7af3bb495b817ffec469255ea679b1813eecb):

The Multicall contract no longer inherits from the SickleStorage implementation and does not need to disable any initializers, rendering this exhibit to be inapplicable.