Escrito por Pablo Gómez
Founder & CEO de Metlabs · Revisado el 11 de octubre de 2026
ERC-7201, con título oficial Namespaced Storage Layout, fue creada el 20 de junio de 2023 y tiene estado Final. Su fórmula calcula el slot raíz de cada namespace como keccak256(keccak256(id) menos 1) con el último byte puesto a cero. En Solidity se expresa como keccak256(abi.encode(uint256(keccak256(bytes(id))) menos 1)) y una máscara que pone a cero el último byte. Cada paso tiene razón de ser: restar 1 tras el primer keccak hace desconocida la preimagen del hash, el segundo keccak evita choques con los slots que Solidity genera para variables dinámicas, y poner a cero el último byte deja 256 slots contiguos libres para crecer el struct.
Cada grupo de variables se mete en un struct anclado en ese slot raíz, anotado con la etiqueta NatSpec custom:storage-location erc7201 seguida del identificador del namespace. El ejemplo canónico de la especificación usa el identificador foobar anclado en erc7201 de foobar.
En proxies actualizables el mayor riesgo es la colisión de storage entre versiones o entre módulos. Asignar a cada componente lógico su propio namespace determinista y documentado reduce ese riesgo bajo las condiciones del esquema y facilita los upgrades y el diseño modular. Es complementario a patrones como UUPS y el transparent proxy, definidos por ERC-1822 y EIP-1967. La librería upgradeable de OpenZeppelin adoptó este patrón, con varios de sus autores en el equipo, y su uso es típico en smart accounts modulares ERC-7579 y en arquitecturas de diamantes y módulos donde varios componentes comparten el mismo espacio de storage.
La separación por namespaces reduce riesgos de colisión si se respeta el esquema. No elimina cambios incompatibles dentro de un struct ni errores en la lógica de actualización.
También conocido como
- ERC7201
- Namespaced Storage Layout





