Skip to content

Overview of Standards for Smart Contract Upgrades

Here are the different standards that emerged for Smart Contract Upgrades:

  1. We're trying the Eternal Storage Pattern

    Actually it was initially proposed by Elena Dimitrova on this Blog

  2. We expand with Proxies where it all started (apparently):

    the upgradeable.sol gist from Nick Johnson, Lead developer of ENS & Ethereum Foundation alum.

  3. EIP-897: ERC DelegateProxy

    Created 2018-02-21 by Jorge Izquierdo and Manuel Araoz

  4. EIP-1822: Universal Upgradeable Proxy Standard (UUPS)

    Created 2019-03-04 by Gabriel Barros and Patrick Gallagher

  5. EIP-1967: Standard Proxy Storage Slots

    Created 2019-04-24 by Santiago Palladino That's OpenZeppelin is using.

  6. EIP-1538: Transparent Contract Standard Created 2018-10-31 by Nick Mudge

  7. EIP-2535: Diamond Standard Created 2020-02-22 by Nick Mudge

  8. 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.


Last update: April 17, 2021