Context

Immutable contracts

Upgradability in Ethereum Contracts

Naive approaches

delegateCall

Example contract using delegateCall

Proxy Pattern

Adding onlyOwner to it

Storage layout

Solution

Problem with current proxy

fallback Function

Simple proxy

ERC-1967 contract

Common Proxy patterns

Transparent proxy

UUPS

Beacon proxy