The SmartVaultManagerV5 contract inherit ERC721Upgradeable and OwnableUpgradeable upgradeable contracts but are not initialised.
The SmartVaultManagerV5 contract does not invoke ERC721Upgradeable and OwnableUpgradeable initializer during its own initialization. Due to which the state of these upgradeable contracts remain uninitialized.
The issue lies in deviating from correct implementation of upgradeable contracts, refers to OZ’s docs.
Proper implementation of upgradeable contracts is possible only by using initialize function which in turn will call the inherited contract's initializer.
The absence of initialization call will result in inability to call the initialise functions that are the main logic in the Upgradeable contract.
The result will be owner address will always remain address(0) and use of all onlyOwner based functions will always revert due to lack of owner based role.
This will also impact the ERC721Upgradeable contract based methods _safeMint and tokenURI as they will remain uncallable and will render all functions related to them useless and impacting overall protocol working.
The impact also will impact the contract as it will remain un-upgradeable. Whenever any functionality will be required to upgraded, it would not be possible due to lack of any owner.
Manual code Review
Implement initialize function in the SmartVaultManagerV5.sol as guided in OZ’s docs.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.