Pontos-chave
- O Foundry permite desenvolver e testar contratos com ferramentas centradas em Solidity.
- O fuzzing e os testes de invariantes exploram comportamentos além de exemplos isolados.
- Os resultados dependem das propriedades, cenários e limites definidos nos testes.
O que é o Foundry?
O Foundry reúne ferramentas para desenvolver, testar e operar contratos EVM. O Forge organiza compilação, testes e scripts; o Cast permite realizar consultas e interações; o Anvil fornece um nó local e o Chisel um ambiente de exploração de Solidity. As ferramentas se combinam conforme as necessidades do projeto.
Escrever testes em Solidity permite expressar chamadas e propriedades próximas à linguagem do contrato. O valor está em verificar regras do sistema e reproduzir falhas, não em presumir que uma ferramenta rápida torna correta qualquer suíte de testes.
Como funciona
Os testes unitários verificam cenários concretos. O fuzzing gera valores de entrada e os testes de invariantes exploram sequências de ações, verificando propriedades como conservação de saldos ou limites de emissão. Os handlers e as restrições determinam quais estados e participantes são realmente explorados.
Os cheatcodes permitem controlar condições do ambiente de teste. Um fork utiliza dados de uma rede em um bloco selecionado e precisa de acesso RPC adequado. Fixar bloco, compilador e dependências ajuda a reproduzir resultados; um teste contra um estado que muda pode falhar por razões alheias à alteração do código.
O que o Foundry oferece
Em um contrato de depósito, os testes podem comparar aportes, saques e saldo restante ao longo de sequências de usuários diferentes. Também se modelam contratos externos que revertem, retornam valores inesperados ou tentam reentrar. Esses testes fornecem evidência sobre o comportamento que importa para o produto.
Os scripts de implantação permitem preparar e simular ações antes de enviá-las. A entrega conserva parâmetros, artefatos e endereços verificados por rede. O Cast pode ajudar a inspecionar permissões ou estado durante um incidente, sempre distinguindo as consultas de leitura das operações que exigem assinatura.
Limitações e critérios de escolha
O fuzzing e as invariantes não equivalem a uma demonstração formal para todas as execuções possíveis. Sua eficácia depende das propriedades escritas, dos estados alcançados e do tempo de exploração. Uma cobertura alta de linhas tampouco comprova que os riscos relevantes foram testados.
O Foundry pode coexistir com o Hardhat se a equipe alinhar compiladores, caminhos e opções. A escolha deve considerar testes de integração, scripts e manutenção do conjunto. Para produção, acrescentam-se controles sobre chaves e permissões e verificações da rede de destino; a simulação local não elimina essas responsabilidades.
Também conhecido como
- Forge
- Cast
- Anvil
- Foundry-rs





