Kernpunkte
- Foundry ermöglicht die Entwicklung und das Testen von Contracts mit auf Solidity ausgerichteten Werkzeugen.
- Fuzzing und Invariantentests erkunden Verhalten über isolierte Beispiele hinaus.
- Die Ergebnisse hängen von den Eigenschaften, Szenarien und Grenzen ab, die in den Tests definiert werden.
Was ist Foundry?
Foundry vereint Werkzeuge zum Entwickeln, Testen und Betreiben von EVM-Contracts. Forge organisiert Kompilierung, Tests und Skripte; Cast ermöglicht Abfragen und Interaktionen; Anvil stellt einen lokalen Node bereit und Chisel eine Umgebung zum Erkunden von Solidity. Die Werkzeuge werden je nach Projektbedarf kombiniert.
Tests in Solidity zu schreiben erlaubt es, Aufrufe und Eigenschaften nah an der Sprache des Contracts auszudrücken. Der Wert liegt darin, Systemregeln zu prüfen und Fehler zu reproduzieren, nicht in der Annahme, ein schnelles Werkzeug mache jede Testsuite korrekt.
So funktioniert es
Unit-Tests prüfen konkrete Szenarien. Fuzzing erzeugt Eingabewerte, und Invariantentests erkunden Aktionssequenzen und prüfen Eigenschaften wie die Erhaltung von Salden oder Emissionsgrenzen. Handler und Einschränkungen bestimmen, welche Zustände und Teilnehmer tatsächlich erkundet werden.
Cheatcodes erlauben es, die Bedingungen der Testumgebung zu steuern. Ein Fork nutzt Daten eines Netzwerks zu einem ausgewählten Block und benötigt geeigneten RPC-Zugang. Das Festlegen von Block, Compiler und Abhängigkeiten hilft, Ergebnisse zu reproduzieren; ein Test gegen veränderlichen Zustand kann aus Gründen fehlschlagen, die nichts mit der Codeänderung zu tun haben.
Was Foundry leistet
Bei einem Einzahlungs-Contract können die Tests Einzahlungen, Abhebungen und Restsaldo über Sequenzen verschiedener Nutzer hinweg vergleichen. Modelliert werden auch externe Contracts, die reverten, unerwartete Werte zurückgeben oder einen Reentrancy-Versuch unternehmen. Solche Tests liefern Belege für das Verhalten, das für das Produkt zählt.
Deployment-Skripte erlauben es, Aktionen vorzubereiten und zu simulieren, bevor sie gesendet werden. Die Übergabe bewahrt Parameter, Artefakte und pro Netzwerk verifizierte Adressen. Cast kann bei einem Vorfall helfen, Berechtigungen oder Zustand zu inspizieren, wobei Leseabfragen stets von Operationen unterschieden werden, die eine Signatur erfordern.
Grenzen und Auswahlkriterien
Fuzzing und Invarianten sind kein formaler Beweis für alle möglichen Ausführungen. Ihre Wirksamkeit hängt von den formulierten Eigenschaften, den erreichten Zuständen und der Explorationsdauer ab. Auch eine hohe Zeilenabdeckung belegt nicht, dass die relevanten Risiken getestet wurden.
Foundry kann neben Hardhat bestehen, wenn das Team Compiler, Pfade und Optionen abstimmt. Die Entscheidung sollte Integrationstests, Skripte und die Pflege des Gesamtsystems berücksichtigen. Für den Produktivbetrieb kommen Kontrollen über Schlüssel und Berechtigungen sowie Prüfungen des Zielnetzwerks hinzu; die lokale Simulation hebt diese Verantwortung nicht auf.
Auch bekannt als
- Forge
- Cast
- Anvil
- Foundry-rs





