Weiter zum Hauptinhalt

Einführung in Smart Contracts

Letzte Änderung: , Invalid DateTime

Was ist ein Smart Contract?

Ein "Smart Contract" oder intelligenter Vertrag ist einfach ein Programm, das auf der Ethereum-Blockchain läuft. Es ist eine Sammlung von Anweisungen (seinen Funktionen) und Daten (seinem Zustand), die sich an einer bestimmten Adresse in der Ethereum-Blockchain befindet.

Smart Contracts sind eine Art Ethereum-Konto. Sie können also ein Guthaben aufweisen und Transaktionen über das Netzwerk senden. Allerdings werden sie nicht von einem Benutzer gesteuert, sondern im Netzwerk bereitgestellt und wie programmiert ausgeführt. Benutzerkonten können dann mit einem Smart Contract interagieren, indem sie Transaktionen übermitteln, die eine im Smart Contract definierte Funktion ausführt. Smart Contracts können, wie auch herkömmliche Verträge, Regeln definieren und diese mittels Programmierung automatisch durchsetzen. Standardmäßig können Smart Contracts nicht gelöscht werden und Interaktionen mit ihnen sind irreversibel.

Voraussetzungen

Wenn Sie gerade erst anfangen, sich mit dem Thema zu beschäftigen, oder auf der Suche nach einer weniger technischen Einführung sind, empfehlen wir Ihnen unsere Einführung in Smart Contracts.

Machen Sie sich mit Konten, Transaktionen und der Ethereum-Virtual Machine vertraut, bevor Sie in die Welt der Smart Contracts einsteigen.

Ein digitaler Verkaufsautomat

Die vielleicht beste Metapher für einen Smart Contract ist ein Verkaufsautomat, wie von Nick Szabo(opens in a new tab) beschrieben. Mit den richtigen Eingaben ist eine bestimmte Ausgabe garantiert.

So bekommen Sie einen Schokoriegel aus einem Verkaufsautomaten:

1Geld + Produktauswahl = ausgeworfener Riegel
2

Diese Logik ist in den Automaten einprogrammiert.

Einem Smart Contract wurde, wie auch einem Verkaufsautomaten, eine Logik einprogrammiert. Hier ist ein einfaches Beispiel dafür, wie ein solcher Verkaufsautomat als Smart Contract aussehen könnte:

1pragma solidity 0.8.7;
2
3contract Verkaufsautomat {
4
5 // Deklariere Zustandsvariablen des Vertrags
6 address public owner;
7 mapping (address => uint) public toertchenBestand;
8
9 // Wenn der 'Verkaufsautomat'-Vertrag bereitgestellt wird:
10 // 1. Setze die Bereitstellungsadresse als Eigentümer des Vertrags
11 // 2. set the deployed smart contract's cupcake balance to 100
12 constructor() {
13 owner = msg.sender;
14 cupcakeBalances[address(this)] = 100;
15 }
16
17 // Allow the owner to increase the smart contract's cupcake balance
18 function refill(uint amount) public {
19 require(msg.sender == owner, "Only the owner can refill.");
20 cupcakeBalances[address(this)] += amount;
21 }
22
23 // Allow anyone to purchase cupcakes
24 function purchase(uint amount) public payable {
25 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
26 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
27 cupcakeBalances[address(this)] -= amount;
28 cupcakeBalances[msg.sender] += amount;
29 }
30}
31
Alles anzeigen
📋 Kopieren

Wenn ein Verkaufsautomat vorhanden ist, benötigt man keinen Verkäufer mehr. Genau so können Smart Contracts in vielen Branchen Vermittler ersetzen.

Genehmigungsfrei

Jeder kann einen Smart Contract erstellen und ihn im Netzwerk bereitstellen. Sie müssen nur lernen, wie Sie in einer intelligenten Vertragssprache codieren. Zudem benötigen Sie ausreichend ETH, um Ihren Vertrag bereitzustellen. Die Bereitstellung eines Smart Contracts ist technisch betrachtet eine Transaktion. Daher müssen Sie Ihre Ressourcen genauso bezahlen wie Sie es für einen einfachen ETH-Transfer tun. Die Ressourcenkosten für die Vertragsbereitstellung sind jedoch weitaus höher.

Ethereum bietet entwicklerfreundliche Sprachen zum Schreiben von Smart Contracts:

  • Solidity
  • Vyper

Mehr zu den Sprachen

Allerdings müssen sie kompiliert werden, bevor sie bereitgestellt werden können, damit die Ethereum-Virtual Machine den Vertrag interpretieren und speichern kann. Mehr zum Kompilieren

Komposition

Smart Contracts sind auf Ethereum öffentlich. Sie können sie sich als offene APIs vorstellen. Das bedeutet, Sie können andere Smart Contracts in Ihrem eigenen Smart Contract aufrufen, um die Möglichkeiten erheblich zu erweitern. Verträge können sogar andere Verträge bereitstellen.

Erfahren Sie mehr über die Kombinierbarkeit von Smart Contracts.

Einschränkungen

Smart Contracts können alleine keine Informationen über Ereignisse der "echten Welt" erhalten, weil sie keine HTTP-Anfragen stellen können. Das ist beabsichtigt. Sich auf externe Informationen zu verlassen, könnte den für Sicherheit und Dezentralisierung wichtigen Konsens gefährden.

Es gibt Möglichkeiten, das mittels Orakel zu umgehen.

Eine weitere Einschränkung von Smart Contracts ist die maximale Vertragsgröße. Ein Smart Contract kann maximal 24 KB groß sein, sonst gehen ihm die Ressourcen aus. Das kann mit The Diamond Pattern(opens in a new tab) behoben werden.

Ressourcen für Smart Contracts

OpenZeppelin Contracts – Bibliothek für die sichere Entwicklung von Smart Contracts

DappSys – Sichere, einfache, flexible Bausteine für Smart Contracts

Weiterführende Informationen

War dieser Artikel hilfreich?