Was ist ein Smart Contract?
Ein Smart Contract ist ein Programm auf einer Blockchain, das eine Vereinbarung ohne Mittelsmann durchsetzt. Das klassische Bild ist ein Snackautomat: Du wirfst Münzen ein, wählst ein Produkt, und der Automat gibt es heraus. Niemand hinter einer Theke entscheidet, ob du den Snack verdienst. Die Regeln sind in den Automaten eingebaut und gelten für alle gleich.
Nimm einen Käufer und einen Verkäufer, die sich nicht kennen. Ohne Contract müssen sie einander vertrauen oder einen Treuhänder bezahlen. Mit einem Contract liegt die Zahlung in einem Skript, das sie erst freigibt, wenn die vereinbarte Bedingung erfasst ist. Ob eine Seite stornieren kann, ob eine Gebühr anfällt und wer die Bedingungen ändern darf, legen die Regeln des Skripts fest, nicht ein Vermittler.
Ein Contract sieht nur, was in der Transaktion steht, die ihn aufruft, und was bereits auf der Chain liegt. Fakten aus der Außenwelt, etwa ein Rennergebnis oder ein Wechselkurs, muss ein Dienst namens Oracle auf die Chain bringen, und der Contract ist nur so zuverlässig wie diese Datenquelle.
Wie führt Cardano Smart Contracts aus?
Auf Cardano ist ein Contract ein Validator: ein Skript, dessen Bedingungen eine Transaktion erfüllen muss. Die meisten Validatoren hängen an Guthaben im Ledger, und ein Skript kann auch Minting, das Abheben von Belohnungen, Zertifikate und Governance-Stimmen autorisieren. Daraus folgen drei Dinge.
Das Skript bewacht das Guthaben
Wenn jemand Ada oder Token an einen Contract sendet, liegt das Guthaben in einem Output, einem Wertbetrag im Ledger, gesperrt durch das Skript statt durch einen Key. Der Output kann ein Datenstück tragen, das Datum, das den Stand der Vereinbarung festhält, zum Beispiel wer wem was schuldet. Um diesen Output auszugeben, legt eine Transaktion ein Argument vor, den Redeemer, und das Skript prüft, ob die Transaktion zulässig ist.
Die Transaktion wird vor ihrer Ausführung erstellt
Deine Wallet oder die App baut zuerst die vollständige Transaktion, mit allen Inputs, Outputs und Daten, die das Skript braucht, und kann das Skript auswerten, bevor sie dich um die Signatur bittet. Das Netzwerk führt danach dieselbe Prüfung mit denselben Inputs aus und kommt zum selben Ergebnis. Die Transaktion kann trotzdem abgelehnt werden, wenn einer ihrer Inputs inzwischen ausgegeben wurde. Dann passiert gar nichts.
Die Kosten stehen fest, bevor du signierst
Die Skriptausführung wird über ein Budget aus Speicher und Rechenschritten bezahlt, dessen Preis Protokollparameter festlegen. Die Gebühr steht also beim Bauen der Transaktion fest und zeigt sich nicht erst hinterher. Scheitert ein Skript trotzdem On-Chain, was durch die Auswertung vor dem Signieren selten ist, deckt ein Collateral den Aufwand des Netzwerks. Sein Minimum ist ein Anteil an der Gebühr, den ein Protokollparameter festlegt, derzeit das Eineinhalbfache der Gebühr. Wallets, die sich mit DApps verbinden, legen dafür etwas Ada zurück.
Die ganze Mechanik, von Slots bis zum Ledger, findest du auf der Seite So funktioniert Cardano.
Welche Sprachen nutzen Entwickler?
Contracts werden in einer Hochsprache geschrieben und zu Plutus Core kompiliert, der kleinen Sprache, die der Cardano-Node ausführt. Plinth, früher Plutus Tx genannt, ist in Haskell eingebettet. Es war die erste dieser Sprachen und wird noch von Teams genutzt, die die volle Stärke von Haskells Typsystem wollen. Aiken ist eine neuere Sprache nur für Cardano, mit einfacherer Syntax und Tooling, die inzwischen die meisten neuen Projekte wählen. Plutarch, eine Haskell-Bibliothek nah am kompilierten Code, kommt zum Zug, wenn die Ausführungskosten am wichtigsten sind. Alle erzeugen dieselbe Art von On-Chain-Skript.
Nicht alles braucht einen vollständigen Contract. Native Scripts decken häufige Fälle wie Multi-Signatur-Wallets und Zeitsperren ganz ohne Plutus-Code ab, und auch Native Tokens lassen sich unter einem solchen Skript minten.
Was ist eine DApp?
Eine dezentrale Anwendung, kurz DApp, ist eine Website oder App, deren wichtige Aktionen über Smart Contracts laufen statt über die Datenbank eines Unternehmens. Eine dezentrale Börse zum Beispiel besteht aus einem Frontend, das Swap-Transaktionen für dich baut, und den Skripten auf der Chain, die die Liquidität halten und die Preise durchsetzen.
Du nutzt eine DApp mit deiner eigenen Wallet. Wenn du sie verbindest, kann die App deine Adressen und dein Guthaben sehen und dich bitten, Transaktionen zu signieren. Sie hält nie deine Keys und kann ohne deine Signatur in der Wallet kein Guthaben bewegen. Diese Verbindung folgt einem Standard, CIP-30. Deshalb funktioniert eine Wallet mit vielen Apps.
Wie nutze ich eine DApp sicher?
Lies, was du gleich signierst. Die meisten Cardano-Wallets zeigen die Outputs einer Transaktion, also wohin Ada und Token gehen. Ein Swap, der plötzlich dein gesamtes Guthaben an eine unbekannte Adresse schickt, ist so vor dem Bestätigen sichtbar. Mit deiner Signatur legst du dich auf genau diese Transaktion fest, prüfe also Inputs, Outputs und alle Warnungen deiner Wallet. Unbegrenzte Token-Freigaben gibt es auf Cardano nicht: Eine DApp kann nur ausgeben, was die von dir signierte Transaktion ausgibt, und später gibt es nichts zu widerrufen. Was du an einen Contract sendest, unterliegt allerdings dessen Regeln, bis diese Regeln es freigeben.
Darüber hinaus gelten die üblichen Regeln. Ruf die App über ein Lesezeichen oder den Link auf ihren offiziellen Kanälen auf, nicht über eine Suchanzeige oder eine Nachricht. Bevorzuge Apps, deren Contracts auditiert wurden und deren Code öffentlich ist. Probier es erst mit einem kleinen Betrag. Und behandle jede Aufforderung, deine Wiederherstellungsphrase einzugeben, als Angriff. Keine DApp braucht sie.
Was läuft heute auf Cardano-Smart-Contracts?
Handel, Kredite, Stablecoins, Marktplätze und Spiele laufen alle auf Contracts, und auch Identitätsprojekte nutzen sie. Hier ein paar Beispiele aus dem App-Showcase, sortiert nach On-Chain-Aktivität, wo diese Daten vorliegen.
Lending
Alle ansehenMarketplace
Alle ansehenGame
Alle ansehenIdentity
Alle ansehen
Stablecoins und DeFi haben eigene Seiten, und der Showcase listet mehr als hundert Apps aus allen Kategorien.
Alle Apps entdeckenWie baue ich einen?
Das Developer-Portal führt dich von der ersten Transaktion bis zum fertig deployten Contract, mit Tutorials für Aiken und Plutus, Testnetzen zum gefahrlosen Ausprobieren und den Tools, die die meisten Teams nutzen. Ein Contract kommt als Teil einer Transaktion auf die Chain: Entweder hängt er an der Transaktion, die ihn nutzt, oder er wird einmal in einem Output veröffentlicht, auf den spätere Transaktionen verweisen. Ein globales Contract-Register gibt es nicht.
FAQ
Sie lösen dasselbe Problem, funktionieren aber anders. Auf Ethereum ist ein Contract ein Konto mit eigenem Zustand, das bei einem Aufruf ausgeführt wird. Auf Cardano ist ein Contract ein Validator, der eine Transaktion genehmigt oder ablehnt, meist eine, die vom Skript bewachte Outputs ausgibt. Beim Cardano-Modell kennst du das Ergebnis des Skripts und die Kosten, bevor du signierst. Die Transaktion kann trotzdem abgelehnt werden, wenn ein benötigter Input vorher schon ausgegeben wurde. Der Preis dafür: Du musst deine Anwendung auf Outputs statt auf einen gemeinsamen Zustand ausrichten.
Nein. Ein Skript kontrolliert nur Mittel, die ihm in einer von jemandem signierten Transaktion geschickt wurden, und es kann sie nur in Transaktionen ausgeben, die seine Regeln erfüllen. Die Mittel in deiner eigenen Wallet bewegen sich nur mit deiner Signatur.
Die App oder Wallet prüft das Skript normalerweise, bevor du signierst. Eine fehlschlagende Transaktion wird deshalb selten gesendet. Wird eine Transaktion doch eingereicht und ihr Skript scheitert on-chain, deckt die von deiner Wallet hinterlegte Sicherheit (Collateral) die Arbeit des Netzwerks ab, und der Rest der Transaktion wird nicht ausgeführt.
Nein. Cardano hat kein Allowance-System. Deine Signatur gilt genau für die Transaktion, die du signierst, und für nichts sonst. Prüf also die Inputs, Outputs und Warnungen, die deine Wallet anzeigt. Eine DApp kann danach nichts weiter aus deiner Wallet ausgeben.
Ein Skript wird über den Hash seines Codes identifiziert, der Code selbst kann sich also nicht ändern. Projekte führen Upgrades durch, indem sie eine neue Version deployen und Mittel nach den Regeln verschieben, die das alte Skript erlaubt, manchmal gesteuert über einen Governance-Token oder einen Multisignatur-Schlüssel. Prüf, wie ein Projekt mit Upgrades umgeht, bevor du ihm größere Beträge anvertraust.
Aiken ist für die meisten Entwickler der schnellste Einstieg, mit vertrauter Syntax und gutem Tooling. Plinth, früher Plutus Tx, ist die Wahl, wenn du schon Haskell kannst, und Plutarch, wenn du die Ausführungskosten genau steuern willst. Alle kompilieren in dieselbe On-Chain-Sprache.