UUPS Upgradeable

An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing UUPSUpgradeable with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism. Available since v4.1.

Methods

upgradeTo

function upgradeTo(address newImplementation) external nonpayable

Upgrade the implementation of the proxy to newImplementation. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.

Parameters

NameTypeDescription

newImplementation

address

undefined

upgradeToAndCall

function upgradeToAndCall(address newImplementation, bytes data) external payable

Upgrade the implementation of the proxy to newImplementation, and subsequently execute the function call encoded in data. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.

Parameters

NameTypeDescription

newImplementation

address

undefined

data

bytes

undefined

Events

AdminChanged

event AdminChanged(address previousAdmin, address newAdmin)

Parameters

NameTypeDescription

previousAdmin

address

undefined

newAdmin

address

undefined

BeaconUpgraded

event BeaconUpgraded(address indexed beacon)

Parameters

NameTypeDescription

beacon indexed

address

undefined

Upgraded

event Upgraded(address indexed implementation)

Parameters

NameTypeDescription

implementation indexed

address

undefined

Last updated