Git Source

Inherits: Ownable2Step

Copy OpenZeppelin's ProxyAdmin that uses Ownable2Step instead of Ownable

This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}.

State Variables


The version of the upgrade interface of the contract. If this getter is missing, both upgrade(address) and upgradeAndCall(address,bytes) are present, and upgradeTo must be used if no function should be called, while upgradeAndCall will invoke the receive function if the second argument is the empty byte string. If the getter returns "5.0.0", only upgradeAndCall(address,bytes) is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the receive function during an upgrade.

string public constant UPGRADE_INTERFACE_VERSION = "5.0.0";



Sets the initial owner who can perform upgrades.

constructor(address initialOwner) Ownable(initialOwner);


*Upgrades proxy to implementation and calls a function on the new implementation. See TransparentUpgradeableProxy-_dispatchUpgradeToAndCall. Requirements:

  • This contract must be the admin of proxy.

  • If data is empty, msg.value must be zero.*

function upgradeAndCall(
    ITransparentUpgradeableProxy proxy,
    address implementation,
    bytes memory data