UcuProxy
UcuProxy
_IMPLEMENTATION_SLOT
bytes32 _IMPLEMENTATION_SLOT
Storage slot with the address of the current implementation. This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1
_ADMIN_SLOT
bytes32 _ADMIN_SLOT
_REPOSITORY_SLOT
bytes32 _REPOSITORY_SLOT
constructor
constructor(contract IImplementationRepository _repository, address _owner, uint256 _lineageId) public
Instantiate a proxy pointing to the current implementation in _repository
of lineage _lineageId
.
Reverts if either _repository
or _owner
is null
Double check your lineageId because it can't be changed. In most cases you'll want the repository's
currentLineageId
Parameters
Name | Type | Description |
---|---|---|
_repository | contract IImplementationRepository | repository used for sourcing upgrades |
_owner | address | owner of proxy |
_lineageId | uint256 | id of the lineage whose current implementation to set as the proxy's implementation. |
upgradeImplementation
function upgradeImplementation() external
upgrade the proxy implementation
reverts if the repository has not been initialized or if there is no following version
transferOwnership
function transferOwnership(address newOwner) external
Set the address of the new owner of the contract
Set _newOwner to address(0) to renounce any ownership.
Parameters
Name | Type | Description |
---|---|---|
newOwner | address |
owner
function owner() external view returns (address)
Get the address of the owner
Return Values
Name | Type | Description |
---|---|---|
[0] | address | The address of the owner. |
getRepository
function getRepository() external view returns (contract IImplementationRepository)
Returns the associated {Repo} contract used for fetching implementations to upgrade to
_upgradeImplementation
function _upgradeImplementation() internal
_implementation
function _implementation() internal view returns (address impl)
Returns the current implementation address.
_upgradeToAndCall
function _upgradeToAndCall(address newImplementation, bytes data) internal virtual
Emits an {Upgraded} event.
_setImplementationAndCall
function _setImplementationAndCall(address newImplementation, bytes data) internal
Stores a new address in the EIP1967 implementation slot.
_setRepository
function _setRepository(contract IImplementationRepository newRepository) internal
_getRepository
function _getRepository() internal view returns (contract IImplementationRepository repo)
_getOwner
function _getOwner() internal view returns (address adminAddress)
_setOwner
function _setOwner(address newOwner) internal
onlyOwner
modifier onlyOwner()
Upgraded
event Upgraded(address implementation)
Emitted when the implementation is upgraded.