articles, resource-center

Clear: Rahmenwerk zur formalen Verifizierung für Solidity-Smart-Contracts

October 28, 2025
8 Min
Artem Zaitsev
Architektur des formalen Verifizierungsframeworks, das die Integration des Lean-Proof-Assistenten in den Solidity-Smart-Contract-Verifizierungsprozess zeigt.

Einleitung

Die Blockchain-Entwickler-Community braucht schon lange starke Ansätze für die Sicherheit und Integrität von Smart Contracts.

## Einleitung und Zusammenfassung

Dieses neue formale Verifizierungssystem wird die Art und Weise verändern, wie Entwickler die Korrektheit ihrer Solidity-Smart-Contracts sicherstellen können. Es ist flexibler als andere herkömmliche automatisierte Methoden der Theorembeweisführung, da es besser vom Menschen programmierbar ist, bietet aber auch mehr Flexibilität bei der Darstellung und Demonstration von Korrektheitseigenschaften als bisher.

Das macht es Entwicklern einfacher, Beweise dafür zu erstellen, dass Spezifikationen aus der abstrakten Darstellung abgeleitet werden können.

Einführung in das Framework

Das Framework kompiliert computerüberprüfbare Beweise für die Korrektheit von Yul-Smart-Contracts in eine Unter-Sprache des Lean Proving Assistant und kann Spezifikationen kompilieren, um sie auf der EVM auszuführen, die mit Tests zur Überprüfung der Modellkorrektheit kompatibel ist.

Diese Methode nutzt die umfangreichen mathematischen Bibliotheken und die Automatisierung von Beweisen des Lean-Ökosystems und erfordert daher mehr manuelle Eingriffe als andere bekannte Automatisierungsmethoden, aber jedes auf Papier schreibbare Korrektheitsargument kann computergestützt bewiesen werden.

Das Framework greift auf leistungsfähige Bibliotheken zur mathematischen Formalisierung und domänenspezifische Automatisierungsoptionen zu. Dennoch wird es, wie viele grundlegende mathematische Theoreme zeigen, immer Aussagen geben, die in keinem nachgewiesenen System bewiesen werden können, das leistungsfähig genug ist, um sie zu beweisen.

Das sollte die Möglichkeit bieten, komplexe Eigenschaften der Korrektheit von Smart Contracts zu überprüfen. Das Framework eignet sich besonders gut, um seine Stärke zu zeigen, indem es komplexe Eigenschaften von numerischen Approximationsalgorithmen überprüft, die in dezentralen Finanzanwendungen und On-Chain-Zero-Knowledge-Verifizierern verwendet werden.

Technische Architektur und Funktionen

Um das Vertrauen so gut wie möglich zu stärken, wurde das Framework durch Fördermittel unterstützt, um die Semantik anhand von Ethereum-Konformitätstestsuiten zu testen und das Modell auf die neuesten Ethereum-Upgrade-Pläne auszuweiten. Dieses verbesserte Modell wird als öffentliches Gut veröffentlicht.

Das Framework hat einen Generator für Verifizierungsbedingungen, der Yul-Programme in den Lean-Beweisassistenten einlesen kann. Er zerlegt Programme nicht nur in überschaubare Blöcke, die leicht zu verstehen sind, sondern erstellt auch vereinfachte Beschreibungen der Semantik dieser Blöcke.

Das Framework hilft auch beim Schreiben von Beweisen, indem es eine Bibliothek mit Theoremen und Automatisierungstools bereitstellt. Die Beweise können dann mit dem LeanCompiler überprüft werden, dessen Kern etwas kleiner ist, aber derzeit als fehlerfrei gilt, was die Akzeptanz falscher Aussagen angeht.

Dieser Ansatz hat den Vorteil, dass man jede Eigenschaft schreiben kann, die man auf Papier schreiben und formal beweisen kann, und sie mit dem LeanCompiler überprüfen kann, der einen relativ kleinen Kernel zur Überprüfung von Beweisen hat und derzeit als fehlerfrei gilt, was die Akzeptanz von Beweisen für falsche Aussagen angeht. Diese Flexibilität ist größer als bei den meisten automatisierten Methoden, die durch die integrierten Schlussfolgerungen der Methoden eingeschränkt sind.

Kompositionalität und Abstraktion

Die Eigenschaften der Kompositionalität und Abstraktion bedeuten, dass bewährte Code-Komponenten durch ihre Verwendung in neuen Situationen erhalten bleiben. Dadurch können große Teile des komplexen Codes durch einfache Anweisungen ihrer Aktionen ersetzt werden.

Es kann sogar die sichere Ersetzung von Code-Implementierungen durch alternative, aber semantisch gleichwertige Implementierungen unterstützen, z. B. durch die Optimierung von Algorithmen und die Aufrechterhaltung von Korrektheitsgarantien.

Das Framework bietet erweiterbare, kontrollierte Automatisierung durch benutzerdefinierte Verfahren, die vom zugrunde liegenden System verifizierte Nachweise liefern. Das reduziert den manuellen Aufwand erheblich, und die Verifizierungsgarantien bleiben erhalten.

Systemkomponenten und Arbeitsablauf

Das Framework hat drei Hauptkomponenten, die zusammen für eine umfassende Verifizierungsleistung sorgen:

  • Modell des Yul-EVM-Dialekts, das die Semantik des Yul-Codes in der Proof-Assistent-Umgebung erklärt. Das ist es, was der Argumentation über das Verhalten von Programmen ihre zugrunde liegende Semantik verleiht.
  • Sammlung von benutzerdefinierten Taktiken und Theoremen, die speziell entwickelt wurden, um das Schreiben von Beweisen für Yul-Programme zu vereinfachen. Diese Tools verarbeiten gängige Muster und Operationen, die häufig bei der Verifizierung von Smart Contracts vorkommen
  • der Verifizierungsbedingungengenerator erstellt Beweisvorlagen mit einer übergeordneten Struktur und erzeugt automatisch Beweise, die Yul-Programme auf kanonische Formen vereinfachen. Diese Verifizierungsbedingungen werden nicht mehr in der Sprache Yul angegeben, sondern auf eine verständlichere Art und Weise

Die Verifizierung ist ein strukturierter Prozess. Die Benutzer starten mit einem Yul-Programm und kompilieren es mit speziellen Compiler-Optionen, um einen Code zu erstellen, der den strukturellen Annahmen des Frameworks entspricht. Dieser Code wird dann vom Verifizierungsbedingungen-Generator verarbeitet, um die erforderliche Infrastruktur für den Nachweis zu generieren.

Fang noch heute mit der Überprüfung deiner Smart Contracts an.

Mach deine Solidity-Entwicklung mit formaler Verifizierung noch besser. Leg gleich los.

Anforderungen an die Vertragszusammenstellung

Das Framework geht von einer bestimmten Struktur der Yul-Codes aus.

Praktische Umsetzung: Multiplikationsfunktion

Um eine Multiplikationsfunktion zu implementieren, musst du die folgenden strukturellen Anforderungen erfüllen, indem du den folgenden Code mit bestimmten Compiler-Flags kompilierst. Dieses Beispiel zeigt, wie das Framework benutzerdefinierte Funktionen und beliebige Kontrollflussstrukturen verwalten kann.

Der Multiplikationsprozess hat zwei Eingaben und führt eine Multiplikation durch, indem ein Wert so oft wie nötig zu einem Akkumulator hinzugefügt wird.

Bedingte Unterbrechungen werden in Schleifen anstelle von Standard-Schleifenbedingungen verwendet, um zu zeigen, dass das Framework auch mit komplexen Kontrollflussszenarien klarkommt.

Generator für Verifizierungsbedingungen

Wenn du den Verifizierungsbedingung-Generator für ein Programm läufst, wird eine strukturierte Dateihierarchie mit den generierten Dateien erstellt. Die allgemeine Struktur besteht aus:

  • Erstellte Dateien in Bezug auf jede Yul-Datei und einen Vertrag
  • Andere gängige Unterordner von abstrahierten Codeblöcken

Das Framework zerlegt Programme automatisch in Einheiten und erstellt Integrationslogik, um sicherzustellen, dass die zusammengesetzten Einheiten dem ursprünglichen Programm entsprechen. Jeder elementare Codeblock erzeugt drei Arten von Dateien, die leicht verständlich sind, wiederverwendbare Komponenten darstellen und eine bessere Leistung und Skalierbarkeit bieten.

Der Yul-Programmcode und die frameworkspezifischen Überlegungen umfassen Verifizierungsbedingungen und Nachweise, dass die Ausführung eines Codeblocks zu einer Verifizierungsbedingung führt, die in den generierten Familiendateien dargestellt wird. Diese Dateien schlagen eine Brücke zwischen Spezifikation/Erfüllung und Codeausführung. Besondere Sorgfalt ist bei Benutzerfamiliendateien geboten, da es sich hierbei um vom Framework generierte Dateien handelt, die die Verifizierungslogik enthalten, die der Benutzer vervollständigen muss.

Um logische Lücken zu füllen, muss das System bedingte Verhaltensspezifikationen vorgeben. Um die Semantik der Schleifensteuerung auszudrücken, bietet das System Hilfsprogramme für Routineoperationen wie das Verlassen von Schleifen und den Zugriff auf Variablen in Programmzuständen.

Spezifikationen müssen nicht unbedingt falsch sein, aber sie können das beabsichtigte Verhalten möglicherweise nicht ohne Weiteres widerspiegeln, wenn wichtige Punkte nicht ausreichend spezifiziert sind. Spezifikationsprobleme sind in der Regel der schwierigste Teil der formalen Verifizierung, manchmal sogar schwieriger als das eigentliche Verfassen der Beweise.

Herausforderungen bei der Schleifenüberprüfung

Schleifen sind mit einem Verifizierungssystem echt schwer zu überprüfen, was zum Teil an der induktiven Argumentation liegt, die oft für so ein System nötig ist. Das Framework geht damit um, indem es systematische Spezifikationen für Schleifenkomponenten gibt.

Der Benutzer muss Folgendes angeben:

  • Kündigungsbedingungen
  • Verhalten nach der Iteration
  • Verhalten des Schleifenkörpers
  • Schleifeninvarianten im Allgemeinen

Das Framework unterstützt die Beschreibung der Schleifensemantik einfacher Variablenaktualisierungen, um bedingte Logik auszuarbeiten. Auch wenn diese technische Feinheit auf den ersten Blick vielleicht nicht sehr transparent erscheint, stellt sie doch sicher, dass alle Ausführungsmöglichkeiten abgedeckt sind.

Korrekturlesen und Automatisierung

Nachdem die Spezifikationen festgelegt sind, muss ein Benutzer zeigen, dass die Verifizierungsbedingungen die festgelegten Spezifikationen bestätigen können. Das Framework bietet umfangreiche Automatisierungsfunktionen zur Verarbeitung typischer Nachweismuster.

Benutzerdefinierte Taktiken werden verwendet, um Folgendes zu verarbeiten:

  • Speichere Manipulationen in Variablen
  • Kontrollfluss-Argumentation
  • Andere häufige Probleme bei der Überprüfung

Diese automatisierten Methoden tragen erheblich dazu bei, den manuellen Aufwand für die Durchführung der Korrekturlesungen zu reduzieren und dennoch ein extrem hohes Maß an Verifizierung zu gewährleisten.

Der Nachweisprozess beginnt normalerweise mit der Entfaltung der entsprechenden Abstraktionen, da diese Nachweise direkt mit den benutzerdefinierten Eigenschaften zusammenhängen. Er nutzt das Framework, um viele Verifizierungsbedingungen mit allgemeinen Bereinigungstaktiken zu automatisieren, die zur Verwaltung technischer Details wie Variablenspeicheroperationen und Zustandsübergänge verwendet werden.

Erweiterte Funktionen und zukünftige Entwicklungen

Das Framework ist ein komplexes Tool, mit dem jedes Yul-Programm in eine Reihe von Anweisungen umgewandelt werden kann, die beschreiben, was das Programm tun soll, und die zeigen, dass der Code den Erwartungen entspricht. Programme werden zunächst in Programme mit Konsistenzbeweisen in einer abstrakten Darstellung übersetzt, was vereinfachte Ausgangspunkte für weitere Spezifikationsbeweise bietet.

Muster in der Yul-Programmlogik, wie Operationen auf einem Variablenspeicher, werden durch benutzerdefinierte Automatisierungsprozeduren verarbeitet.

Weiterentwicklung

Die Weiterentwicklung hat ein paar wichtige Verbesserungen gebracht:

  • Das zuverlässige Hash-Modell hat die richtige kryptografische Funktionsweise.
  • Die Modellierung von vertragsübergreifenden Aufrufen ermöglicht die Analyse komplexer Interaktionsmuster
  • Die semantische Genauigkeit wird durch Gasmodellierung unter Berücksichtigung der Ausführungskosten überprüft.
  • Wenn du dich an die neuesten Änderungen der Ethereum-Upgrade-Pläne hältst, wird es mit dem bestehenden Netzwerkverhalten kompatibel sein
  • Verbesserung der Benutzerfreundlichkeit, damit die Leute das Ding im Alltag effizienter und einfacher nutzen können

Weiter kann daran gearbeitet werden, [Ethereum-Ausführungs-]Clients aus den Spezifikationen zu extrahieren und formal verifizierte Yul-zu-EVM-Bytecode-Compiler zu erstellen.

Integration mit mathematischen Bibliotheken

Das Framework baut in seinem zugrunde liegenden Beweissystem auf einer Vielzahl von Mathematik- und Informatikbibliotheken auf. Diese Bibliotheken bieten formalisierte Konzepte, die häufig bei der Argumentation über Programme vorkommen und den Aufwand für komplexe Beweise erheblich vereinfachen.

Benutzerdefinierte Taktiken basieren auf einer starken Metaprogrammierumgebung, ohne Kompromisse bei der Verifizierung einzugehen. Die Kombinierbarkeit der Automatisierung, die auf beobachteten Nutzungsmustern basiert, sorgt dafür, dass sich die Benutzerfreundlichkeit im Laufe der Zeit immer weiter verbessert.

Die Architektur, um Yul direkt in der Proof-Umgebung zu kodieren, macht die Schnittstelle für Entwickler, die mit der Sprache vertraut sind, transparent und natürlich und bietet Funktionen, die es bei der automatisierten Verifizierung noch nie gab, um sicherzustellen, dass der Code korrekt ist.

FAQ

##formale_berpr_fung
##solidity_smart_contracts
##lean_proof_assistant
##blockchain_sicherheit
##pr_fung_von_smart_contracts
BDS

Wir sind Vorreiter für die Zukunft der Blockchain-Technologie mit innovativen Lösungen, die Unternehmen und Einzelpersonen weltweit unterstützen.

+1 929 560 3730 (USA)
+44 2045 771515 (Großbritannien)
+372 603 92 65 (Estland)
Harju maakond, Tallinn, Lasnamäe linnaosa, Katusepapi tn 6-502, 11412, Estland

Bleiben Sie auf dem Laufenden

Erhalten Sie die neuesten Blockchain-Nachrichten und -Updates direkt in Ihren Posteingang.

© {{Jahr}} BDS, Teil der Idealogic Group. Alle Rechte vorbehalten.