Overview of Standards for Smart Contract Upgrades¶
Here are the different standards that emerged for Smart Contract Upgrades:
We're trying the Eternal Storage Pattern
Actually it was initially proposed by Elena Dimitrova on this Blog
We expand with Proxies where it all started (apparently):
the upgradeable.sol gist from Nick Johnson, Lead developer of ENS & Ethereum Foundation alum.
Created 2018-02-21 by Jorge Izquierdo and Manuel Araoz
Created 2019-03-04 by Gabriel Barros and Patrick Gallagher
Created 2019-04-24 by Santiago Palladino That's OpenZeppelin is using.
EIP-1538: Transparent Contract Standard Created 2018-10-31 by Nick Mudge
EIP-2535: Diamond Standard Created 2020-02-22 by Nick Mudge
Not really a standard, but I think Metamorphic Smart Contracts should be covered as well. Those are Smart Contracts that get re-deployed to the same address with different logic using EIP-1014 CREATE2. It's said to be wild magic in Ethereum.
For me it is important to understand the essence of what's going on under the hood. I will therefore reduce the Smart Contract examples to its absolute necessity for the architectural explanation.
There is no ownership, no control, no governance, just barebones the theory behind the Storage Patterns.
If you need a full blown solution that works out of the box, checkout OpenZeppelin.