Written by Pablo Gómez
Founder & CEO at Metlabs · Reviewed on October 11, 2026
ERC-1167 standardizes a runtime bytecode of just 45 bytes, with the implementation address embedded in the middle. On each call, the proxy copies the calldata, performs a DELEGATECALL to the implementation and returns or reverts with the result. State lives in the proxy's storage, while the code runs from the shared implementation. It is not upgradeable: the implementation address is immutable because it is fixed in the bytecode itself. Combined with CREATE2, it produces clones with a deterministic address, predictable even before deployment.
It matters for gas savings. Instead of redeploying a contract's full bytecode per instance, you deploy a tiny clone pointing to shared logic. It is the ideal pattern for factories that create many identical instances, such as vaults, tokens or tokenization pools, where the per-instance cost drops to a fraction.
The reference implementation is OpenZeppelin's `Clones` library, with its `clone` and `cloneDeterministic` functions. The pattern is common in protocol factories such as 0xSplits or Sound.xyz, which mint one contract per user or per asset. It should be distinguished from EIP-1967 upgradeable proxies: ERC-1167 does not use those slots because it is not upgradeable, since its implementation lives in bytecode rather than storage.
Also known as
- ERC1167
- Minimal Proxy Contract





