advantage: immutable
disadvantage: cannot change the source code
Key concepts
fallback: to redirect calls to other contract implementations.
delegatecall: CRUD in Proxy Contract.
Proxy has upgrades.
1 proxy 1 logic
with role-based access
proxy selector clashing
UUPS(ERC-1822)
https://medium.com/@pearliboy1/how-to-implement-an-upgradeable-smart-contract-with-uups-242c57f671ee
Logic has upgrades.
1 proxy 1 logic
less expensive
https://www.rareskills.io/post/beacon-proxy
Beacon has upgrades.
1 proxy 1 beacon
How can a proxy contract with the previous state be updated? new proxy contract casting a new implementation.atAddress(existing proxy contract address casting an implementation).