Written by Pablo Gómez
Founder & CEO at Metlabs · Reviewed on October 11, 2026
ERC-2535, officially titled "Diamonds, Multi-Facet Proxy", is a design pattern for building large, modular, upgradeable smart contracts. The Diamond contract acts as a proxy that, via delegatecall, routes each function selector to the facet that implements it. This spreads logic across several contracts and resolves Ethereum's 24 KB contract size limit, which would otherwise force teams to fragment or trim their code. Storage is typically managed with Diamond Storage or AppStorage patterns to avoid slot collisions between facets.
The central piece is the diamondCut function, which adds, replaces or removes any number of functions from any number of facets in a single transaction, avoiding the data corruption that could arise if an upgrade were split across several transactions. Each change emits the DiamondCut event, keeping upgrades transparent and auditable on-chain. The outcome is surgical per-function upgrades, instead of redeploying the whole contract, plus code organized by domain, which is useful in complex systems.
It was published in February 2020 by Nick Mudge and reached Final status in October 2022. It ships with reference implementations from the author, and pattern development guides documented by teams such as ChainScore Labs and BitsByBlocks. For tokenization, it fits as an architecture for modular systems: an issuer can update compliance modules without redeploying the whole system, which makes it complementary to compliance standards like ERC-3643. This is a conceptual link, not a technical dependency.
Also known as
- ERC2535
- Diamonds, Multi-Facet Proxy





