Skip to main content
Utilities for calculating collision-resistant storage slots in upgradeable and modular smart contracts.
Implements ERC-7201 (Namespaced Storage Layout) and ERC-8042 (Diamond Storage).

Overview

Storage collisions are a critical issue in upgradeable proxies, libraries, and diamond patterns. When multiple contracts or versions share storage, overlapping slots cause data corruption. ERC-7201 and ERC-8042 solve this by deterministically calculating storage slots from namespace identifiers, ensuring each module has isolated storage regions.

Quick Start

When to Use Each Standard

ERC-7201 (Namespaced Storage Layout):
  • General purpose upgradeable contracts
  • UUPS proxies
  • Transparent proxies
  • Modular contract architectures
  • Extra collision resistance (last byte cleared)
ERC-8042 (Diamond Storage):
  • EIP-2535 Diamond Standard contracts
  • Multi-facet proxy patterns
  • Legacy diamond implementations
  • Simpler formula when compatibility required

API Documentation

calculateErc7201

Calculate ERC-7201 namespaced storage slot

calculateErc8042

Calculate ERC-8042 diamond storage slot

Storage Collision Prevention

Without Namespaced Storage

With ERC-7201

Specification References

  • Storage (Effect) - Effect.ts integration with Schema validation
  • Proxy - Proxy patterns using namespaced storage
  • Keccak256 - Hash function for slot calculation
  • Bytes - Storage slot byte manipulation