Diamond Standard (Multi-facet Proxies)
Explore the Diamond Standard (EIP-2535) for building highly modular and scalable upgradeable contracts with multiple facets.
Intro to Diamond Standard
Welcome to the final lesson on upgradeable contracts! We've explored UUPS, but what if your contract grows too big or needs extreme modularity?
The Diamond Standard (EIP-2535) is a powerful pattern that allows a single proxy contract to delegate calls to multiple implementation contracts, called facets.
Single Proxy Limitations
Traditional proxy patterns, like UUPS or Transparent proxies, typically delegate all calls to a single implementation contract.
While effective, this can lead to:
- Contract Size Limit: Ethereum contracts have a 24KB limit. A single, monolithic implementation can hit this quickly.
- Complexity: A single contract managing many features becomes hard to maintain and audit.
- Upgrade Costs: Upgrading means redeploying the entire large implementation contract, even if only a small part changed.
All lessons in this course
- Why Upgradeable Contracts?
- UUPS Proxy Pattern Implementation
- Diamond Standard (Multi-facet Proxies)
- Transparent Proxy Pattern and Storage Layout