Couple of things that I think should be thought of for OZ's major 5.x
upgrades.
The belows are for 4.x
versions.
-
Why is upgradeToAndCall external ? Sometimes I want to override it, do my stuff and then call super.upgradeToAndCall, but because of external, it’s impossible.
-
Why not make modifier reinitializer virtual ? And whatever is inside it put in the internal virtual function ? Sometimes it's needed to override it, do my stuff !
-
If implementation passed to upgradeTo is the same as the currently set one, why do you still emit the event ?
-
are you planning on changing
reinitializer
which acceptsuint256
instead ofuint8
? I understand why you diduint8
, but since it's gonna be major, I'd change it to uint256