Web3 Dictionary Logo
Web3 Dictionary
Contribute

Categories

AllBlockchainDappsDAOsDeFiNFTsRegulationSecuritySmart ContractsTokenomicsWalletsWeb3 GamingOthers
  1. Web3 Dictionary
  2. Smart Contracts
  3. ERC-1967
Smart Contracts

ERC-1967

A standard for upgradeable smart contracts using proxy patterns and transparent storage slots.

Last Updated

2026-03-29

Related Concepts

Smart ContractContract Deployment
Web3-Explorer Logo

Scale Blockchain Infra

AD

Smart contracts, protocol integrations, and scalable architecture for high-performance Web3 products.

See Blockchain Services

What is ERC-1967?

ERC-1967 is a standard for "upgradeable" smart contracts that uses a proxy pattern. It provides a structured way to separate a contract's storage from its logic, allowing developers to update a contract's code without changing its address or losing its data.

How does ERC-1967 work?

  1. A "Proxy" contract is deployed to hold the project's data and state.
  2. An "Implementation" contract is deployed to hold the logic/code.
  3. The Proxy uses delegatecall to forward all user interactions to the Implementation.
  4. ERC-1967 specifies exact storage slots to store the Implementation's address, preventing "storage collisions."
  5. To upgrade, the administrator simply updates the Implementation address stored in the Proxy's designated slot.

Why does ERC-1967 matter?

Standard smart contracts are immutable and cannot be changed after deployment. ERC-1967 allows projects to fix critical bugs or add new features while maintaining the same contract address for users and external integrations, significantly improving the maintainability of complex dApps.

Key features of ERC-1967

  • Enables code upgrades on immutable blockchains
  • Prevents storage collisions via standardized slots
  • Maintains a constant contract address
  • Separates logic (code) from state (data)
  • Foundation for "Transparent" and "UUPS" proxy patterns

Examples of ERC-1967

Many major DeFi protocols like Aave and Uniswap use upgradeable proxy patterns. OpenZeppelin provides standard libraries that implement ERC-1967 to ensure developers can upgrade their contracts safely and reliably.

External References

  • ERC-1967 Standard
  • Upgradeable Contracts