Ist es möglich, ein Tool zu erstellen, das Smart Contracts liest und überprüft, ob es sicher ist?

Ich brauche dringend Hilfe bei meinem Diplomarbeitsprojekt. Ich finde gerade die Lücke, nach der mein Berater fragt, und ich scheine mich damit schwer zu tun. Ich könnte mir vorstellen, tatsächlich ein Tool zu erstellen, das Smart Contracts liest und die Fehler und Schwachstellen des codierten Smart Contracts erkennt. Könnte mir jemand erklären, ob dies möglich ist und ob es Referenzen gibt, die Sie teilen möchten, oder auch einige Ideen für mein Diplomarbeitsprojekt. Nebenbei studiere ich gerade Informatik! Vielen Dank im Voraus!

Es gibt einen von den Truffle-Jungs erstellten Debugger, den Sie ausprobieren können
Ich denke, Sie fragen nach formalen Verifizierungstools: Schauen Sie sich ethereum.stackexchange.com/questions/11092/… an.
Ich hingegen denke, dass sich die "Fehler und Schwachstellen" auf bekannte Exploits und häufige Vertragsfehler beziehen. Ich denke, es ist kein geeignetes Thema für eine Abschlussarbeit, da a) es einige Erfahrung mit Smart Contracts erfordert und b) neue Exploits entstehen
Auch nach formaler Überprüfung beweist dies nur, dass der Code das tut, was die Spezifikation vorschreibt. Dies beweist nicht, dass die Spezifikation keine unbeabsichtigten Folgen hat. Es ist wahrscheinlich unmöglich zu beweisen, dass ein Programm, das in der realen Welt eingesetzt wird, keine unbeabsichtigten Folgen hat. Wir können nicht einmal Gesetze richtig schreiben lassen, und wir haben Jahrtausende lang versucht, das richtig zu machen. (Töten = schlecht. Außer Selbstverteidigung. Außer Selbstverteidigung mit übermäßiger Gewalt. Außer Selbstverteidigung mit übermäßiger Gewalt in der Hitze des Augenblicks, Nebel des Krieges/Stress. Etc.)

Antworten (2)

Im ganz allgemeinen Fall ist dies logisch unmöglich, weil es auf die Lösung des "Halteproblems" reduziert wird. (Auf welchem ​​Bildungsniveau befindet sich diese "Thesis"? Ich würde erwarten, dass jeder Informatikforscher mit diesem grundlegenden Prinzip der Berechenbarkeit vertraut ist.)

Sie /können/ Bytecode nach bestimmten Verhaltensweisen, Funktionsaufrufen und so weiter scannen, aber sobald irgendeine Art von Indirektion oder Benutzereingaben erlaubt sind, werden diese Scans zu Heuristiken und nicht zu eisernen Beweisen.

Eine andere Möglichkeit, dies zu formulieren: Es ist durchaus möglich, ein Programm vollständig zu verifizieren, wenn alle Eingaben bekannt sind und das Programm nicht im Ausführungsstrom rückwärts verzweigen oder nicht-inlinierbare Funktionsaufrufe verwenden darf (also keine Möglichkeit einer Rekursion). Dies , wiederum hängt vage damit zusammen, warum FORTRAN-Compiler so gut in der Optimierung waren. Sobald Sie sich mit diesem Thema wirklich beschäftigt haben, werden Sie eine Fülle interessanter Ergebnisse finden, die bis in die Anfänge der von Neuman-Rechnung zurückreichen!

Das Eintauchen in den Bereich "Statische Programmanalyse" wird wahrscheinlich fruchtbar sein. Es gibt viele sowohl theoretische als auch praktische Ergebnisse auf diesem Gebiet, obwohl mehr davon darauf abzielen, Pufferüberläufe in C-Code zu finden, als zu versuchen, herauszufinden, ob ein Programm "schlecht" ist.

Die andere Frage ist, wie Sie "schlecht" definieren - mir ist nicht klar, ob Sie überhaupt eine strenge formale Definition dessen finden können, was ein "schlechtes" Programm ist, das sowohl nützlich als auch nicht trivial wäre.

Worauf Sie anspielen, ist die statische Programmanalyse. Im Allgemeinen ist es nicht möglich, ein vollständig automatisiertes Tool zu erstellen, das alle Schwachstellen mit perfekter Erinnerung und Präzision überprüfen kann.

Es gibt gute Tools, um das Vorhandensein von Schwachstellen zu überprüfen. Beispielsweise führt https://contract-library.com Sicherheitsanalysen für alle Smart Contracts im Ethereum-Mainnet und den Testnets durch. Hier ist ein Beispiel für einen anfälligen Vertrag: https://contract-library.com/contracts/Ethereum/0xb91824d10079a44864a9bec11b4ae022d7732e05

Einige der Schwachstellen, die es abfangen kann, beziehen sich auf Gas. Hier ist unser Papier, das einige dieser Analysen beschreibt, wenn Sie daran interessiert sind, unsere Ergebnisse zu replizieren/verbessern: https://www.nevillegrech.com/assets/pdf/madmax-oopsla18.pdf