Erreichen Sie in nur 12 Wochen eine umfassende NIS2-Prüfungsbereitschaft.Erfahren Sie mehr über unsere NIS2-Compliance →
Setzen Sie KI in Ergebnisse umBauen Sie Ihre KI-orientierten Teams auf →

Smart Contracts in der Blockchain: Wie sie funktionieren, wofür sie genutzt werden können und wie man sie programmiert

Eine umfassende Einführung in Smart Contracts – die Bausteine, mit denen sich das volle Potenzial der Blockchain-Technologie entfalten lässt

Smart Contracts sind zu einem unverzichtbaren Bestandteil der vollen Funktionalität einer Blockchain geworden. Ähnlich wie bei einem herkömmlichen Vertrag legen sie eine Vereinbarung anhand von Wenn-Dann-Bedingungen fest. Der Unterschied besteht darin, dass die Bedingungen programmiert sind und die Ausführung automatisch erfolgt, sobald bestätigt wird, dass sie erfüllt sind.

Sie zeichnen sich durch vorteilhafte Eigenschaften wie hohe Effizienz und Rückverfolgbarkeit aus und benötigen keine zentrale Instanz zu ihrer Steuerung.

Smart Contracts funktionieren auf vordefinierte und unkomplizierte Weise und erfordern feste Eingaben in Form von erfüllten Bedingungen, um das gewünschte Ergebnis zu liefern.

Wenn Sie bereits mit Kryptowährungen gehandelt haben, werden die Bedingungen für diese Transaktionen in Smart Contracts festgelegt. Sobald der Verkäufer beispielsweise einen vordefinierten Betrag in Bitcoin auf das Treuhandkonto des Smart Contracts einzahlt und dieser mit dem vom Käufer eingezahlten Gegenwert in US-Dollar übereinstimmt, wird der Tausch automatisch durch den Smart Contract ausgeführt – da die „Wenn-Dann“-Bedingung erfüllt ist.

Smart Contracts kommen in dApp-Blockchain-Anwendungen zum Einsatz, die zunehmend eingesetzt werden, um Prozesse in verschiedenen Branchen wie dem Finanzwesen, der Immobilienbranche und dem Lieferkettenmanagement zu automatisieren.

Zur Entwicklung von Smart Contracts können verschiedene Programmiersprachen verwendet werden. Solidity ist die am häufigsten verwendete Sprache für die Programmierung von Smart Contracts und verfügt über das umfangreichste Ökosystem. Die Web3-native Sprache wird von großen Blockchain-Netzwerken wie Ethereum und der Binance Smart Chain unterstützt.

Dieser umfassende Einstieg bietet Ihnen einen aufschlussreichen Überblick darüber, was Smart Contracts sind, wie sie funktionieren, wie sie programmiert werden und welche Rolle sie in den Web3-Technologien spielen.

 

Was sind Smart Contracts?

Smart Contracts legen wie jeder andere Vertrag die Bedingungen einer Vereinbarung oder eines Geschäfts fest. Es handelt sich um programmierte Protokolle, die als digitale Vereinbarung dienen und auf einer Blockchain gehostet und ausgeführt werden. Die Vereinbarung zwischen zwei oder mehr Parteien wird in Code festgeschrieben.

Smart Contracts laufen auf einer dezentralen Blockchain und ermöglichen es mehreren Parteien, ein gewünschtes gemeinsames Ergebnis auf präzise, manipulationssichere und zeitnahe Weise zu erzielen.

Transaktionen, die über Smart Contracts abgewickelt werden, bieten im Vergleich zu herkömmlichen Transaktionen auf einem zentralisierten Server zahlreiche Vorteile. Im richtigen Kontext sind sie äußerst effizient, transparent, nachvollziehbar, unwiderruflich, kostengünstig und risikoarm.

 

Wie funktionieren Smart Contracts?

Smart Contracts werden durch die Programmierung eines Vertragscodes in einer bestimmten Sprache erstellt, beispielsweise Solidity auf der Ethereum-Blockchain. Weitere Sprachen, die zur Programmierung von Smart Contracts verwendet werden können, sind Rust, Go(lang) und Python.

In diesem Code sind „Wenn-Dann“-Bedingungen eingebettet, die bestimmte Aktionen auslösen, wenn bestimmte Voraussetzungen erfüllt sind.

 

Beispiel für eine Wenn-Dann-Bedingung – Treuhandvertrag

 

Infografik zur Veranschaulichung der Wenn-Dann-Logik von Smart Contracts

 

Wenn: Ein Verkäufer bis zu einem bestimmten Datum einen festgelegten Betrag an Kryptowährung auf das Treuhandkonto des Smart Contracts einzahlt und der Käufer dasselbe tut, je nach Vereinbarung in Kryptowährung oder Fiat-Währung.

Dann: Der Smart Contract überweist die vom Käufer eingezahlten Gelder automatisch auf das Konto des Verkäufers und die Kryptowährung in die Krypto-Wallet des Käufers.

In diesem Szenario fungiert der Smart Contract als automatisierter Treuhandservice. Die Bedingung ist die Einzahlung eines Betrags durch den Käufer, der dem mit dem Verkäufer vereinbarten Preis entspricht. Ist diese Bedingung erfüllt (der Käufer zahlt den Betrag ein), führt der Smart Contract die vordefinierte Aktion aus (er gibt den Betrag an den Verkäufer und die Kryptowährung an den Käufer frei).

Wird die Bedingung nicht erfüllt (der Käufer zahlt den Betrag nicht fristgerecht ein), führt der Smart Contract die Aktion nicht aus, und der Betrag könnte an den Käufer zurückerstattet werden oder so lange gesperrt bleiben, bis weitere Bedingungen erfüllt sind.

Dies ist ein sehr einfaches Beispiel – in der Regel bestehen Smart Contracts aus mehreren Wenn-Dann-Bedingungen.

Smart Contracts können auch zur Entwicklung von Blockchain-Anwendungen genutzt werden – dabei wird die Logik, die sonst im Backend einer Web2-Anwendung programmiert würde, auf die Blockchain verlagert.

Das angeführte Beispiel könnte ein Smart Contract sein, der Teil einer DeFi-App ist, wie sie das in den USA ansässige Web3-Startup Ajna nutzt, an deren Entwicklung ein Team von K&C mitgewirkt hat.

 

Smart Contracts werden in sechs Schritten erstellt und ausgeführt:

 

Infografik zur Erstellung und Umsetzung von Smart Contracts auf einer Blockchain oder als Teil einer dApp

 

1. Vereinbarungen treffen und Bedingungen festlegen

Die an der Transaktion oder dem Austausch beteiligten Parteien müssen sich darüber einigen, wie der Smart Contract auf bestimmte Eingabekriterien reagieren soll und welche Bedingungen erfüllt sein müssen, damit der Vertrag auf eine bestimmte Weise ausgeführt wird.

Beispiele für Bedingungen, die in Smart Contracts festgeschrieben werden, sind der Nachweis über Geldmittel, Geldtransfers, digitale Identitäten oder das Eigentum an Immobilien.

Es sollte auch geklärt werden, ob der Vertrag automatisch ausgeführt wird.

 

2. Erstellen des Smart Contracts

Sobald man sich auf die „Wenn-Dann“-Logik geeinigt hat, die ein Smart Contract umsetzen soll, sollte diese programmiert werden.

Zur Erstellung des Codes, der die Vertragsbedingungen enthält, wird eine geeignete Programmiersprache verwendet. Entwickler von Smart Contracts sollten die Logik zudem in einem ähnlichen Verfahren wie beim Testen der Backend-Logik auf mögliche Fehler überprüfen.

Es ist wichtig, dass Smart Contracts so programmiert werden, dass sie hohen Sicherheitsstandards entsprechen. In der Regel wird ein eigenes Team mit der Sicherheitsprüfung der Verträge beauftragt.

 

3. Bereitstellung auf einer Blockchain

Der Smart Contract wird anschließend auf einer Blockchain-Plattform oder einer anderen Distributed-Ledger-Infrastruktur bereitgestellt. Dabei wird die Gültigkeit des Vertrags bestätigt.

Sobald ein Smart Contract auf einer Blockchain bereitgestellt wurde und live ist, ist er unumkehrbar. Es ist wichtig zu beachten, dass Blockchains unveränderlich sind – sobald Daten darin gespeichert wurden, können sie nie mehr geändert werden, außer durch eine Rücktransaktion, die ebenfalls dauerhaft gespeichert wird.

 

4. Suche nach Bedingungen für die Ausführung

Die Blockchain wird nun vom Smart Contract überwacht, der darauf achtet, dass die festgelegten Wenn-Dann-Bedingungen erfüllt werden.

Dies kann fast alles sein, was digital überprüft werden kann, oder es kann sich um eine bestimmte Handlung handeln, die von einer oder mehreren beteiligten Parteien ausgeführt wird.

 

5. Ausführung des Smart Contracts

Sobald alle beteiligten Parteien einen Konsens erzielt haben und die Auslösebedingungen erfüllt sind, wird der Smart Contract ausgeführt. Der Smart Contract wird automatisch durch die Blockchain aktiviert.

 

6. Die Blockchain wird mit den Vertragsdetails aktualisiert

Nachdem ein Smart Contract erfolgreich ausgeführt wurde, wird das Blockchain-Netzwerk aktualisiert, wobei alle Details der Transaktion, die gemäß den Vertragsbedingungen abgewickelt wurde, unveränderlich gespeichert werden.

Sobald ein Datensatz in der Blockchain gespeichert ist, kann er nicht mehr geändert oder gelöscht werden (das ist die Definition von „unveränderlich“) und ist für jeden sichtbar, der Zugriff auf die Blockchain hat.

 

Was sind die Eigenschaften und Vorteile von Smart Contracts?

Smart Contracts bieten gegenüber herkömmlichen Verträgen, die einen zentralen Vermittler (wie eine Bank oder einen Notar) erfordern, der eine asymmetrische Machtposition über die im Vertrag festgelegte Transaktion ausübt, mehrere Vorteile.

Die wesentlichen Eigenschaften und Vorteile von Smart Contracts sind:

 

Verteilungs-

Ein Blockchain-Netzwerk besteht aus verteilten Knoten, die alle eine vollständige oder teilweise Kopie der Blockchain-Historie enthalten. Diese Knoten aktualisieren ihre Datensätze ständig, um sie untereinander abzugleichen. Zu diesen Daten gehören auch auf einer Blockchain gehostete Smart Contracts sowie alle Aktionen und Transaktionen, die sich aus deren Ausführung ergeben. .

 

Deterministisch

Smart Contracts werden nur dann auf eine vorgegebene Weise ausgeführt, wenn die erforderlichen Bedingungen erfüllt sind. Der Code verleiht den Verträgen Unveränderlichkeit. Unabhängig davon, welche Partei sie ausführt, ist das Ergebnis immer dasselbe.

 

Autonom

Für den Betrieb von Smart Contracts ist keine zentrale Instanz erforderlich. Sobald sie auf einer Blockchain bereitgestellt wurden, laufen sie autonom ab. Sobald die Wenn-Dann-Bedingungen eines bestimmten Smart Contracts erfüllt sind, wird dieser automatisch ausgeführt. In der Regel verbleiben Smart Contracts auf einer Blockchain im Ruhezustand, solange niemand ihre Bedingungen auslöst.

 

Immutability

Sobald ein Smart Contract in einem Blockchain-Netzwerk bereitgestellt wurde, kann er nicht mehr geändert werden. Es besteht jedoch die Möglichkeit, eine „Selbstzerstörungsfunktion“ in den Code einzubauen, sodass die beteiligten Parteien einen Smart Contract löschen und durch einen neuen in der Blockchain ersetzen können. Die Entscheidung, ob eine solche Funktion integriert werden soll, muss bereits in der Programmierphase des Smart Contracts getroffen werden.

 

Mehr Vertrauen

Wenn eine Partei über einen Smart Contract auf einer Blockchain mit einer anderen Partei interagiert, muss sie nicht wissen, mit wem sie es zu tun hat. Die Parteien müssen sich nicht einmal gegenseitig vertrauen. Die in den Code eines Smart Contracts eingebetteten Eigenschaften stellen sicher, dass die Interaktion gemäß den Vertragsbedingungen erfolgt, ohne dass ein Dritter erforderlich ist.

 

Transparency

Da die Blockchain öffentlich zugänglich ist (ebenso wie die darauf befindlichen Smart Contracts), kann jeder, der Zugriff auf die Blockchain hat, diese einsehen und die Eigenschaften sowie die Transaktionsdetails überprüfen. Dies erhöht die Sicherheit.

 

Security

Durch Smart Contracts entfällt die Notwendigkeit einer zentralen Instanz, die Verträge ausstellt und kontrolliert. Da sie auf einer dezentralen Blockchain basieren, weisen Smart Contracts weder einen zentralen Schwachpunkt auf, der für Angriffe anfällig ist, noch gibt es einen zentralen Vermittler, mit dem verhandelt werden muss. Außerdem ist es keiner der beteiligten Parteien und auch keiner zentralen Instanz möglich, das Ergebnis des Vertrags zu manipulieren.

Um die Konsistenz und Genauigkeit des Codes in Smart Contracts zu gewährleisten, was sich auf die Sicherheit des Codes auswirkt, sind in der Regel Tests erforderlich. Laut Tim Reznichenko, einem leitenden Web3-Entwickler bei K&C, entwickeln sich die Tools für das Testen von Smart Contracts derzeit rasant weiter.

Es stehen bereits zunehmend Tools zur Verfügung, darunter Testsuiten für seltene Fälle wie„Schnelltests“. Laut Tim sind Smart Contracts, die in der Programmiersprache Rust geschrieben sind, von Natur aus sicherer und erfordern weniger Tests als Verträge, die in Solidity geschrieben sind.

 

Effizienz

Die Programmierung eines Smart Contracts nimmt nicht viel Zeit in Anspruch, und seine Verarbeitung und Ausführung auf einer Blockchain erfolgt selbstständig. Herkömmliche Verträge sind mit bürokratischem Aufwand verbunden und fehleranfällig. Durch den automatisierten Charakter von Smart Contracts lassen sich Zeit und Geld sparen. Ihre korrekte Durchsetzung ist zudem weder von menschlichen Fehlern noch von der Verfügbarkeit von Ressourcen abhängig.

 

Niedrige Kosten

Durch den Einsatz von Smart Contracts entfallen Zwischenhändler (wie Banken und Makler), was zu geringeren Transaktionskosten führt.

 

Anwendungen und Anwendungsfälle von Smart Contracts

Die Blockchain-Technologie hat sich generell in vielen Branchen als nützlich erwiesen, wie Sie in unserem Blogbeitrag über Anwendungsfälle der Blockchain-Entwicklung nachlesen können.

Zu den Branchen, die frühzeitig mit Blockchain-Anwendungen auf Basis von Smart Contracts innovativ geworden sind, gehören:

 

Finanzsektor

Smart Contracts können für die Bereitstellung und Ausführung verschiedener Finanzdienstleistungen und -produkte wie automatisierte Zahlungen, Tokenisierung, Vermögensverwaltung und dezentrale Finanzanwendungen (DeFi) genutzt werden.

 

Real Estate

Das Eigentumsrecht an Immobilien kann mithilfe von Smart Contracts geregelt und übertragen werden. Smart Contracts stellen sicher, dass alle in den Vertragsbedingungen festgelegten Voraussetzungen erfüllt sind, bevor eine Immobilie übergeben wird.

Mietverträge können auch mithilfe von Smart Contracts verwaltet werden, einschließlich der automatischen Anpassung des Mietpreises auf der Grundlage der Marktbedingungen oder anderer Faktoren.

 

Versicherung

Mithilfe von Smart Contracts können Versicherungsgesellschaften Schadensfälle automatisch bearbeiten und die Kosten erheblich senken. Relevante Informationen zu einem bestimmten Versicherungsfall können unwiderruflich und transparent in der zugrunde liegenden Blockchain gespeichert werden.

Betrachten wir ein Beispiel aus dem Bereich der Reiseversicherung. Ein Smart Contract kann so programmiert werden, dass er Flugdaten überwacht. Wenn der Abflug eine festgelegte Verspätung überschreitet, kann der Smart Contract automatisch eine Entschädigung an den Versicherten auszahlen.

Ein weiteres Beispiel wäre die Ernteversicherung. Ein Smart Contract könnte so programmiert werden, dass er die Niederschlagsdaten in einem bestimmten Gebiet überwacht. Wenn die Niederschlagsmenge einen bestimmten Schwellenwert über- oder unterschreitet (je nach den im Vertrag festgelegten Bedingungen), wird eine Entschädigung ausgezahlt.

 

Supply Chain Management

Mithilfe von Smart Contracts lassen sich alle Schritte einer Lieferkette – von der Bestellung bis zur Lieferung – automatisch programmieren und ausführen. Sie können Liefertermine und andere Lieferbedingungen automatisch überwachen, um ein reibungsloses und transparentes Lieferkettenmanagement zu gewährleisten. Auch Zahlungen können bei Lieferung der Waren über den Vertrag geregelt werden.

 

Gaming, Kryptowährungen und NFTs

Es gibt Videospiele, die auf Blockchains laufen. Smart Contracts legen Aktionen in einem Spiel fest, wenn bestimmte Wenn-Dann-Bedingungen erfüllt sind.

Kryptowährungstransaktionen basieren häufig auf Bedingungen, die in Smart Contracts festgelegt sind. Für die Abwicklung von Kryptowährungstransaktionen werden Regeln festgelegt. Dies gewährleistet ein hohes Maß an Transparenz und Sicherheit bei den Transaktionen. Dasselbe gilt für den Handel mit NFTs.

 

In welchen Sprachen werden Smart Contracts programmiert?

Smart Contracts werden in verschiedenen Sprachen programmiert. Es gibt keine Einheitslösung, da verschiedene Blockchains unterschiedliche Sprachen unterstützen. Die Wahl der Blockchain kann teilweise von der bevorzugten Sprache für die Programmierung von Smart Contracts beeinflusst werden. Wenn eine Blockchain Smart Contracts in verschiedenen Sprachen unterstützt, entscheiden technische und wirtschaftliche Überlegungen über die Wahl. Weitere Informationen darüber, welche Blockchains Smart Contracts unterstützen und welche Vor- und Nachteile sie bieten, finden Sie in unserem Blogbeitrag über Blockchain-Plattformen für die Entwicklung von Smart Contracts.

Für Entwickler, die in den Web3-Bereich einsteigen möchten, sind die Sprachen Solidity und Vyper eine gute Wahl, um sich mit der Programmierung von Smart Contracts vertraut zu machen, da sie relativ leicht zu erlernen sind und den gängigen Web2-Sprachen wie JavaScript und Python ähneln.

Hier finden Sie eine Liste der Sprachen und der damit kompatiblen Blockchain-Netzwerke als übersichtliche Zusammenfassung:

Tabelle – Programmiersprachen für Smart Contracts nach Blockchain-Plattform

 

Es gibt noch viele weitere Sprachen, mit denen sich Smart Contracts programmieren lassen. Eine vollständige Liste würde den Rahmen dieses Blogbeitrags jedoch sprengen. In den folgenden Unterabschnitten gehen wir näher auf die fünf beliebtesten Sprachen ein.

 

Solidity

Solidity ist derzeit die am häufigsten verwendete Programmiersprache für Smart Contracts. Laut Tim Reznichenko von K&C weist sie viele Gemeinsamkeiten mit JavaScript und TypeScript auf und ist daher für Entwickler mit Vorkenntnissen in diesen Sprachen relativ leicht zugänglich. Diese objektorientierte und statisch typisierte Sprache profitiert zudem vom umfangreichsten und am weitesten entwickelten Ökosystem unter den Web3-nativen Sprachen.

Wenn Smart Contracts und die dazugehörigen dApps auf der Ethereum-Blockchain oder auf EVM-kompatiblen Blockchains (Ethereum Virtual Machine) entwickelt werden, ist Solidity die Sprache der Wahl – es sei denn, es gibt einen triftigen Grund für eine andere Sprache.

 

Vyper

Vyper ist eine vertragsorientierte Programmiersprache, die auf der EVM läuft. Sie ähnelt am ehesten Python. Vyper wurde entwickelt, um Sicherheitsprobleme zu beheben, die in Solidity bestehen. Aus diesem Grund verfügt Vyper über weniger Funktionen als Solidity, um Smart Contracts sicherer und einfacher zu programmieren zu machen.

 

Rust

Rust ist eine „Low-Level“- oder Systemprogrammiersprache. Das bedeutet, dass sie eng mit der Hardware interagieren kann, ohne dass eine Zwischenschicht erforderlich ist. Diese Sprache ist nicht ausschließlich eine Smart-Contract-Sprache; sie wird auch im Web2 verwendet. Eigenschaften wie die „starke Typisierung“ machen es für Anfänger relativ schwierig, sie zu erlernen, und erschweren auch erfahrenen Entwicklern, die mit anderen Sprachen vertraut sind, den Umstieg.

Mehrere Blockchains wie Solana, Polkadot oder Hyperledger Fabric unterstützen diese Sprache. Wenn die Wahl auf Solana fällt, müssen Smart Contracts in Rust geschrieben werden, da keine Kompatibilität mit anderen Sprachen besteht.

Mit Rust programmierte Smart Contracts sind in der Regel sicherer. Das liegt daran, dass die Sprache von Natur aus technisch korrekt programmiert ist; enthält der Code Fehler, lässt er sich einfach nicht kompilieren.

Weitere Informationen zu dieser Programmiersprache finden Sie in unserem speziellen Blogbeitrag über Rust.

 

JavaScript

JavaScript ist eine klassische Programmiersprache, die auch in der Web3-Programmierung Einzug gehalten hat. Da es sich um eine Einsteigersprache handelt, erstellen die meisten Blockchains Bibliotheken auf JavaScript-Basis, damit sich Entwickler leicht in das Ökosystem einfinden und ohne lange Einarbeitungszeit mit der Entwicklung von Produkten beginnen können.

So ist beispielsweise Hyperledger Fabric eine Blockchain, die es ermöglicht, Smart Contracts mithilfe von JavaScript bzw. dessen Laufzeitumgebung Node.js zu erstellen.

JavaScript wird in verschiedenen Bereichen der Blockchain-Entwicklung eingesetzt. Aufgrund seiner schwachen Typprüfung wird es jedoch nicht zur Entwicklung des Kerns von Blockchains verwendet.

 

Yul

Yul ist eine Programmiersprache für Fortgeschrittene, die Solidity am ähnlichsten ist. Diese Sprache wird in Bytecode kompiliert, was den Einsatz verschiedener Backends ermöglicht.

Yul kann als eigenständige Sprache oder für Inline-Assembler innerhalb von Solidity-Projekten verwendet werden.

 

Dienstleistungen im Bereich der Entwicklung von Smart Contracts und Blockchain

Wenn Sie einen erfahrenen technischen Partner für Ihr nächstes Blockchain-Projekt suchen, würden wir uns sehr über ein Gespräch freuen.

Das Münchner Unternehmen K&C verfügt über fast 25 Jahre Erfahrung in der Softwareentwicklung und im IT-Outsourcing und kann auf ein Portfolio an Projekten zurückblicken, die Blockchain-Technologie und die Entwicklung von Smart Contracts umfassen.

K&C-Dienstleistungen im Bereich Blockchain-Entwicklung

Profitieren Sie von den geringeren Kosten, der größeren Flexibilität und den hochqualifizierten IT-Fachkräften aus den Nearshore-Märkten Osteuropas, zu denen Sie durch IT-Outsourcing über einen etablierten Partner Zugang erhalten.

Entdecken Sie hier unsere flexiblen Kooperationsmodelle.

Empfohlene Blog-Beiträge