Kernpunkte
- Haskell nutzt funktionale Programmierung und ein ausdrucksstarkes Typsystem.
- Plinth, früher Plutus Tx, verbindet Haskell mit Validatoren auf Cardano.
- Die Strenge der Typen ergänzt die Tests; Fehler in der Geschäftslogik beseitigt sie nicht.
Was ist Haskell?
Haskell ist eine funktionale Programmiersprache mit statischer Typisierung, mit der sich Regeln über Funktionen und explizite Datenstrukturen ausdrücken lassen. Im Cardano-Ökosystem ist sie mit der Entwicklung des Protokolls und mit Plinth verbunden, der früher als Plutus Tx bezeichneten Sprache, die eine Teilmenge von Haskell nutzt, um Validatoren zu erstellen.
Ein Validator entscheidet, ob eine Transaktion bestimmte Bedingungen erfüllt. Die Anwendung, die diese Transaktion erstellt, übernimmt andere Aufgaben: Sie wählt Eingaben aus, berechnet Wechselgeld, fügt Daten hinzu und fordert Signaturen an. Wer beide Ebenen unterscheidet, vermeidet es, dem Smart Contract Verantwortlichkeiten zuzuschreiben, die zur Integration gehören.
So funktioniert es
In Cardano bildet das EUTXO-Modell den Zustand über Transaktionsausgaben ab, die verbraucht werden können, wenn ihre Bedingungen erfüllt sind. Ein Validator erhält relevante Informationen zur Transaktion sowie Daten wie Datum und Redeemer und prüft die Regeln für das Ausgeben. Seine Ausführung wird innerhalb eines Ressourcenbudgets ausgewertet.
Typen helfen dabei, Zustände und Übergänge explizit zu modellieren. Ein Vorgang kann zum Beispiel Eröffnung, Stornierung oder Abwicklung unter jeweils unterschiedlichen Bedingungen zulassen. Werden diese Alternativen entworfen, lässt sich das Verhalten diskutieren, bevor es an eine Wallet oder ein Zahlungssystem angebunden wird.
Was Haskell leistet
Haskell kann nützlich sein, wenn das Team mit komplexen Regeln arbeiten muss und über Erfahrung in funktionaler Programmierung verfügt. Bei einem Escrow-Smart-Contract kann ein Referenzmodell beschreiben, welche Beteiligten jeden Übergang autorisieren und wie die Beträge erhalten bleiben. Tests vergleichen die erstellten Transaktionen mit diesen Regeln und untersuchen Kombinationen von Eingaben.
Formale Verifikation erfordert eine Spezifikation und einen Beweis konkreter Eigenschaften. Haskell zu verwenden oder einen Validator zu kompilieren ist nicht gleichbedeutend damit, diesen Prozess abgeschlossen zu haben. Der Testumfang muss auch die Erstellung von Transaktionen, die Fehlerbehandlung und die Integration mit externen Komponenten umfassen.
Grenzen und Auswahlkriterien
Haskell ist nicht zwingend erforderlich, um ein Produkt auf Cardano zu entwickeln. Es gibt andere Sprachen und Werkzeuge wie Aiken, und das Frontend kann einen anderen Stack nutzen. Die Entscheidung hängt vom bestehenden Code, von der Unterstützung durch die Build-Umgebung und von der Fähigkeit des Teams ab, die Validatoren zu prüfen und zu pflegen.
Vor der Entscheidung sollte der anspruchsvollste Vorgang prototypisch umgesetzt werden: Transaktionsgröße, Ausführungsbudget und gleichzeitiger Zugriff auf den gemeinsamen Zustand. Ein elegantes Modell kann unpraktisch werden, wenn es alle Vorgänge in einer einzigen Ausgabe bündelt. Die Architektur des Produkts und die seiner Transaktionen müssen gemeinsam entworfen werden.
Auch bekannt als
- GHC
- Plutus
- functional Web3





