Mutabilidade de Estado e Padrões de Armazenamento — Forge College

Seu contrato Solidity perde atualizações inesperadamente ou campos voltam a zero depois de uma chamada? Entender mutabilidade e onde o estado realmente vive é essencial para construir contratos seguros e previsíveis. O que você vai aprender: Nesta lição intermediária você vai identificar e corrigir bugs comuns em mapeamentos aninhados e structs que quebram a persistência do estado. Vamos cobrir a diferença entre storage e memory ao manipular mapping(address =⟩ mapping(uint256 =⟩ Item)) e como retornar ou copiar referências de forma segura. Você verá exemplos de contratos com bugs intencionais, entenderá por que cópias em memory somem ao fim da chamada, por que sombrear campos de struct pode zerar dados e como transformar essas cópias em referências storage. Também aprenderá padrões práticos de atribuição explícita, como escrever snippets corrigidos e como provar as correções com testes locais em Remix ou Hardhat (pragma solidity ⟩=0.8.0). Para quem é: Desenvolvedores Solidity em nível intermediário que já usam structs, mapeamentos e têm familiaridade básica com Remix ou Hardhat. Não é necessário conexão com redes externas — os exercícios rodam em VM local. Principais tópicos abordados: Diferença entre storage e memory em funções e retornos de struct Mapeamentos aninhados (mapping(address =⟩ mapping(uint256 =⟩ Item))) e padrões de referência Bugs típicos: retornos inseguros, cópias que não persistem, sombra de campos e zeramento Correções práticas: usar referências storage, atribuição explícita de campos e evitar retornos perigosos Laboratório de depuração: InventoryStore.sol com antes/depois e cenários de teste em Remix/Hardhat Pronto para consertar contratos frágilmente mutáveis e fortalecer seu gerenciamento de estado on-chain? Acesse material complementar e mais aulas em https://www.forge.college/