Omniscia vfat Audit
NonDelegateMulticall Manual Review Findings
NonDelegateMulticall Manual Review Findings
NDM-01M: Non-Standard Initialization Disable Mechanism
Type | Severity | Location |
---|---|---|
Standard Conformity | ![]() | NonDelegateMulticall.sol:L32 |
Description:
The NonDelegateMulticall::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/NonDelegateMulticall.sol
31/// @param registry_ Address of the SickleRegistry contract32constructor(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 NonDelegateMulticall
contract no longer inherits from the SickleStorage
implementation and does not need to disable any initializers, rendering this exhibit to be inapplicable.