The function graduateAndUpgrade(address _levelTwo, bytes memory)
includes a bytes memory
parameter that is neither named nor used. This introduces confusion and may be misunderstood as supporting upgrade-and-call functionality.
OpenZeppelin's upgradeToAndCall()
uses a similar signature, where the second bytes
parameter is used to perform a delegatecall after upgrading. However, in this contract:
The bytes
parameter is unused,
There is no delegatecall logic,
It may mislead future developers into thinking post-upgrade calls are supported.
This results in an inconsistent interface that doesn't match its actual behavior.
This is a code clarity issue rather than a functional bug, but can mislead users or integrators expecting upgrade-and-call behavior.
Manual inspection
If not needed, simplify the function to:
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.