Fix revert when getting upgrade interface version with OpenZeppelin Contracts v4 #65
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When upgrading a proxy, we need to determine the upgrade interface version of the UUPS implementation or proxy admin. This is done by calling the
UPGRADE_INTERFACE_VERSION()
getter, which exists in OpenZeppelin Contracts v5, but does not exist in v4 and arevert
is expected in that case.We previously did this with a low-level
call
and checked whether the call was successful. However, even though we handle the error case for v4 (in which case we return an empty string), Foundry detects thisrevert
and fails the simulation prior to broadcasting.We can avoid this
revert
detection by converting this to usetry/catchstaticcall
instead.Fixes #64