How do I "renounce ownership" for the proxy admin?

It seems there’s no renounceOwnership function on proxy admin contract, so I tried to set the proxy admin address as null (address(0)), but it returns “Cannot change the admin of a proxy to the zero address”.

Is there a correct way to remove the admin for the proxy contract?

One more thing:
It seems “function admin() external ifAdmin returns (address)” -> this function is not a view function on current master branch (https://github.com/OpenZeppelin/openzeppelin-upgrades/blob/master/packages/core/contracts/proxy/AdminUpgradeabilityProxy.sol)
Is there a reason for that function not to be a view function?
(I tried to call this function on the mainnet, and it costs a lot of gas like $170 for some reason)

1 Like

There is no way in the plugin API to renounce ownership, but the contract itself does have the function. We have the following issue which I think would be the ideal way to expose this in our API.


Regarding admin(), the thing is because of the way the Transparent Proxy works, we can’t make it a view function. Unless the admin calls the function, admin() will be forwarded to the proxy implementation and that function is not necessarily view.

There are alternatives to the transparent proxy pattern such as UUPS proxies that do not have this issue, that we would like to offer as an alternative (or even the main proxy implementation) in the future.

1 Like