OperatorVCS
and OperatorVault
Contracts cannot be upgraded because a bad reinitializing number will revert the upgrade.
The OperatorVCS
and OperatorVault
are upgradeable Contracts that are meant to be upgrades for the current contracts deployed on-chain right now, these contracts implement the reinitializer
modifier from the Openzeppelin library because the current contracts on-chain were an upgrade for the first contracts deployed.
The current contracts under the audit set the reinitialized version on 3 meaning that these contracts will be the 3° upgrade in the system.
The reinitializer
modifier requires that the current _initializing
variable is false and the current _initialized
variable is less than the current version
being used in the contracts, if not it will revert the transaction.
As you can see in the current contracts under the audit they are using version number 3 in the OperatorVCS
and OperatorVault
contracts, but the current OperatorVCS
and OperatorVault
contracts deployed on-chain were already deployed using version number 3, as you can see here:
OperatorVCS:
https://etherscan.io/address/0x584338dabae9e5429c334fc1ad41c46ac007bc29#code
OperatorVault:
https://etherscan.io/address/0x73cf930cf4f86117c308907ce18f8e8f16710387#code
this will block the upgrade of the contracts because the reinitializer
modifier will revert the transaction.
High, because the OperatorVCS
and OperatorVault
contracts cannot be upgraded.
Manual Code Review
change the version number sent to the reinitializer
modifier in the initialize
functions of the OperatorVCS
and OperatorVault
contracts, the correct version should be number 4.
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.