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 updated on