Escrito por Pablo Gómez
Founder & CEO da Metlabs · Revisado em 11 de outubro de 2026
A ERC-7201, com título oficial Namespaced Storage Layout, foi criada em 20 de junho de 2023 e tem status Final. Sua fórmula calcula o slot raiz de cada namespace como keccak256(keccak256(id) menos 1) com o último byte zerado. Em Solidity, expressa-se como keccak256(abi.encode(uint256(keccak256(bytes(id))) menos 1)) e uma máscara que zera o último byte. Cada passo tem razão de ser: subtrair 1 após o primeiro keccak torna desconhecida a pré-imagem do hash, o segundo keccak evita colisões com os slots que o Solidity gera para variáveis dinâmicas, e zerar o último byte deixa 256 slots contíguos livres para o struct crescer.
Cada grupo de variáveis é colocado em um struct ancorado nesse slot raiz, anotado com a etiqueta NatSpec custom:storage-location erc7201 seguida do identificador do namespace. O exemplo canônico da especificação usa o identificador foobar ancorado em erc7201 de foobar.
Em proxies atualizáveis, o maior risco é a colisão de storage entre versões ou entre módulos. Atribuir a cada componente lógico seu próprio namespace determinístico e documentado reduz esse risco nas condições do esquema e facilita os upgrades e o design modular. É complementar a padrões como UUPS e o transparent proxy, definidos pelo ERC-1822 e pelo EIP-1967. A biblioteca upgradeable da OpenZeppelin adotou esse padrão, com vários de seus autores na equipe, e seu uso é típico em smart accounts modulares ERC-7579 e em arquiteturas de diamonds e módulos em que vários componentes compartilham o mesmo espaço de storage.
A separação por namespaces reduz riscos de colisão se o esquema for respeitado. Não elimina mudanças incompatíveis dentro de um struct nem erros na lógica de atualização.
Também conhecido como
- ERC7201
- Namespaced Storage Layout





