Advantage of shifting Upgrade function to Implementation under UUPS?

Hi All,

I am trying to understand the advantage of shifting the upgrade functionality from Proxy smart contract to implementation(Logic) smart contract under UUPS.

Could someone give answer?

Originally the main advantage was that the UUPS proxy was much cheaper because it did one less storage access. In OpenZeppelin Contracts 5.0 the transparent proxy has been optimized by using an immutable variable and this will put the two patterns on par in terms of runtime gas overhead, so this advantage is less clear.

The UUPS proxy is simpler though and will be cheaper to deploy. Another benefit of UUPS is that you can easily use alternative access control schemes like roles to manage upgrades instead of Ownable, it's more flexible.

Some of this is described in this talk, but to be honest advantages are disadvantages are not discussed in depth.