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
-
EIP-1822: Universal Upgradeable Proxy Standard (UUPS)
Created 2019-03-04 by Gabriel Barros and Patrick Gallagher
-
EIP-1967: Standard Proxy Storage Slots
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.
Simplified Contracts
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.