Upgradeable vs non-upgradeable contracts

Hi, I would like some help in understanding proxied and upgradeable contracts. If the implementation contract has a proxy (let's say it's using the UUPS proxy pattern), what would be the difference between using the @openzeppelin/contracts and the @openzeppelin/contracts-upgradeable libraries? Isn't the proxy used to delegate calls to the implementation contract, which should allow the implementation contract to be changed/upgraded?

I believe the main difference is handling how the contracts are deployed. In upgradable contracts, you have to shift from the constructor to the initialize function. Read more:

1 Like