Upgradeable via delegatecall proxies

  1. A small proxy contract holds state; it delegatecalls into a separate implementation contract that holds code. This is implemented using delegatecall
  2. Upgrade ⇒ change the implementation address.
  3. Variants: Transparent Proxy, UUPS, Beacon
  4. Cons: Storage-layout discipline required, upgrade authority must be secure, testing discipline is non-negotiable.
  5. Modular routing (Diamond)

delegatecall & storage

EIP-1967 storage slots

2A) Transparent Proxy