DelegateCallProxyManager.sol
Contract that manages deployment and upgrades of delegatecall proxies. An implementation identifier can be created on the proxy manager which is used to specify the logic address for a particular contract type, and to upgrade the implementation as needed.
A many-to-one proxy is a single upgradeable implementation address that may be used by many proxy contracts.
The proxy manager has a single address as its owner. The owner is the sole account with the following permissions:
- Create new many-to-one implementations
- Create new one-to-one proxies
- Modify the implementation address of existing proxies
- Lock proxies
- Designate approved deployers
- Remove approved deployers
- Modify the owner address
Approved deployers may only deploy many-to-one proxies.
Proxies can be upgraded by the owner if they are not locked. Many-to-one proxy implementations are upgraded by calling the holder contract for the implementation ID being upgraded. One-to-one proxies are upgraded by calling the proxy contract directly. The owner can lock a one-to-one proxy or many-to-one implementation ID so that it becomes impossible to upgrade.