This PR changes the order in which the EIP173Proxyconstructor invokes _setOwner and _setImplementation.
This PR wants to _setOwner before _setImplementation at Proxy constructor deployment initialization.
This is because many implementationinitializer function use cases require an access restriction modifier of onlyProxyAdmin .
The current flow prevents such useful and secure access restriction on implementation initializers as when the _setImplementation fn is called with data for a function call, the proxyAdmin value is still set to AddressZero .
This PR changes the order in which the
EIP173Proxy
constructor
invokes_setOwner
and_setImplementation
.This PR wants to
_setOwner
before_setImplementation
at Proxy constructor deployment initialization.This is because many
implementation
initializer
function use cases require anaccess restriction modifier
ofonlyProxyAdmin
.The current flow prevents such useful and secure access restriction on implementation
initializers
as when the_setImplementation
fn is called withdata
for a function call, theproxyAdmin
value is still set toAddressZero
.