I have been working with smart contracts and discovering architecture. What I don't fully understand yet is the need for an UUPS (Upgradeable) Implementation contract within a Beacon Proxy architecture.
Can't this be simplified, thus reduce the size of the implementation contract, by simply using a standard non-upgradeable implementation contract?
My line of thought here is that the corresponding beacon contract already keeps track of the latest implementation address. And I need to perform an upgradeTo any how when I update my implementation contract.
Besides, using UUPS basically means publish a new implementation contract is and update the implementation address in the proxy in front of it. But! The Beacon contract does the same right? Sounds like a duplicate action.
One thing I can image is the loss of data when not using UUPS within my implementation in combination with Beacon architecture. But when I understand things correctly, the beacon proxy contract (which is in front of the beacon) actually save contract data themselves so nothing should be lost when using this approach.
What am I missing here? Thoughts?