Upgradeable smart contracts are described as the contracts on the blockchain that can be modified after their initial launch without changing the address of the contract users interact with. In contrast to regular
smart contracts, which are forever locked in place after being deployed, upgradeable contracts utilize a proxy and an implementation contract approach. This allows developers to use the proxy contract to create an interface that users will interact with. In this way, when an implementation contract needs to be upgraded, the developers will simply update the implementation contract but will keep the address of the proxy contract the same. Because of this, users will never know an upgrade has occurred.
Using an upgradeable contract system helps developers fix bugs, enhance functionality, and protect against security issues without needing to move users to a new contract. The downsides of an upgradeable contract system are significant; by adding the ability to upgrade the contract, there is a relationship of centrality between the developer and the protocol. In the case of DeFi protocols, this means adding a trust relationship, which is not present with pure immutability.
Transparent Proxy and UUPS patterns developed by OpenZeppelin are leading frameworks for developing upgradeable contracts, both of which have been heavily tested and adopted in the Ethereum ecosystem.