Einführung in Ethereum. Smart Contracts
Ethereum ist zu einem Proof of Concept für die Zukunft der Webkommunikation geworden, hauptsächlich aufgrund seiner Hauptfunktion, dem Smart Contract. Erklärung, wie es funktioniert.
Was ist Ethereum?
In erster Linie ist Ethereum eine Plattform zur Erstellung dezentraler Online-Dienste, die auf der Blockchain-Technologie basieren. Erst in zweiter Linie ist es eine Kryptowährung. Der Hauptunterschied zwischen Ethereum und beispielsweise Bitcoin sind die Smart Contracts. Sie ermöglichen das Programmieren innerhalb der Blockchain. Dies erlaubt die Integration komplexerer Mechanismen in Ethereum, wie zum Beispiel NFTs.
Dank Smart Contracts können wir neue Wege des Geschäftsverkehrs, transparente Finanzinstitutionen, transparente Patentierungen, transparente Abstimmungen und die Erstellung transparenter Verträge erkunden. Tatsächlich ist der Anwendungsbereich von Smart Contracts außerordentlich breit, und täglich entstehen neue Ideen.
Smart Contracts
Im Wesentlichen ist ein Vertrag eine Textdatei mit Code, der in der Programmiersprache Solidity geschrieben ist. Er bietet eine bestimmte API in Form von Funktionen und Triggern, die innerhalb des Smart Contracts verwendet werden können.
Die Logik der Ausführung von Smart Contracts in Ethereum
Die Ausführung eines Vertrags in Ethereum erfolgt in mehreren Schritten:
-
Erstellen einer Transaktion
Es beginnt alles mit der Erstellung und dem Versand einer Transaktion durch den Benutzer. Diese Transaktion enthält Anweisungen zum Aufrufen der Funktionen des Smart Contracts und kann auch Daten und ETH für die Übertragung an den Vertrag enthalten.
-
Verbreitung der Transaktion
Die gesendete Transaktion wird über das Ethereum-Netzwerk von Knoten verbreitet. Sie wartet im Transaktionspool, bis ein Miner (oder Validator in PoS) sie zur Aufnahme in einen neuen Block auswählt.
-
Verarbeitung der Transaktion durch Miner
Der Miner wählt die Transaktion aus dem Pool und beginnt mit der Verarbeitung. Dies beinhaltet die Überprüfung der Authentizität der Transaktion (Signatur) und der ausreichenden Mittel zur Bezahlung des Gases.
-
Ausführung des Vertrags
Nach der Verifizierung führt der Miner (oder Validator) den Smart-Contract-Code aus. Diese Ausführung erfolgt in der Ethereum Virtual Machine (EVM) – einer isolierten Umgebung, in der jede Operation eine bestimmte Menge Gas kostet.
-
Zustandsänderung
Als Ergebnis der Vertragsexekution kann eine Änderung des Blockchain-Zustands auftreten. Zum Beispiel könnte dies die Übertragung von Tokens oder das Ändern von Daten im Vertrag sein.
-
Blockbestätigung
Nachdem der Miner die Bildung des Blocks mit Transaktionen abgeschlossen hat, verbreitet er diesen Block über das Netzwerk. Andere Knoten überprüfen den Block und fügen ihn bei erfolgreicher Verifizierung ihrer Kopie der Blockchain hinzu.
-
Gaszahlung
Der Benutzer, der die Transaktion gesendet hat, zahlt eine Gasgebühr in ETH. Diese Gebühr geht an den Miner (oder Validator) als Belohnung für die Verarbeitung der Transaktion und die Unterstützung des Netzwerks.
-
Finalisierung
Nach der Bestätigung des Blocks gelten die Transaktion und alle ihre Ergebnisse (einschließlich der Vertragsexekution) als endgültig und unwiderruflich.
Wer bezahlt für die Berechnungen von Smart Contracts
Die Berechnungen, die mit der Ausführung von Smart Contracts im Ethereum-Netzwerk verbunden sind, werden von den Benutzern bezahlt, die Transaktionen senden. Diese Benutzer zahlen eine Gasgebühr, die die für die Verarbeitung von Transaktionen und die Ausführung von Smart Contracts benötigten Ressourcen kompensiert.
Was beeinflusst die Gasgebühr?
Die Gasgebühr hängt von mehreren Faktoren ab:
-
Rechnerische Komplexität
Komplexere Operationen erfordern mehr Rechenressourcen und sind daher teurer.
-
Netzwerkauslastung
In Zeiten hoher Netzwerkauslastung kann der Gaspreis steigen, da Benutzer konkurrieren, damit ihre Transaktionen schnell in einen Block aufgenommen werden.
-
Gaslimit
Der Benutzer legt die maximale Menge an Gas fest, die er bereit ist, für die Ausführung der Transaktion zu verwenden. Wenn das Limit zu niedrig ist, kann die Transaktion nicht ausgeführt werden.
Miner oder Validatoren (abhängig davon, ob das Netzwerk Proof of Work oder Proof of Stake verwendet) wählen Transaktionen mit höheren Gasgebühren aus, da dies ihr Einkommen erhöht. Diese Gebühren dienen als Anreiz für die Aufrechterhaltung des Betriebs des Ethereum-Netzwerks.
Welche Funktionspalette steht in einem Vertrag zur Verfügung
Smart Contracts in Ethereum können eine breite Palette von Berechnungen durchführen, aber es gibt bestimmte Einschränkungen und Besonderheiten zu beachten:
-
Turing-Vollständigkeit
Programmiersprachen für Smart Contracts wie Solidity und Vyper sind Turing-vollständig und erlauben theoretisch, jede Berechnung durchzuführen, ähnlich wie herkömmliche Programmiersprachen.
-
Begrenzte Ressourcen
Jede Operation in einem Vertrag kostet eine bestimmte Menge Gas, und die Menge an Gas, die in einer einzigen Transaktion verwendet werden kann, ist begrenzt. Dies bedeutet, dass sehr komplexe oder ressourcenintensive Berechnungen aufgrund hoher Gaskosten oder Blocklimits unpraktisch sein können.
-
Determinismus
Berechnungen in Smart Contracts müssen deterministisch sein, was bedeutet, dass sie bei gleichen Eingaben immer die gleichen Ausgaben liefern müssen. Dies ist notwendig, um die Konsistenz des Blockchain-Zustands aufrechtzuerhalten.
-
Keine externen Netzwerkzugriffe
Smart Contracts können nicht direkt Anfragen an externe Server oder APIs stellen. Oracles werden verwendet, um externe Daten zu erhalten.
-
Datenspeicherung
Verträge können Daten in ihrem Zustand speichern, aber aufgrund der Gaskosten kann das Speichern großer Datenmengen teuer sein.
-
Mathematische und logische Operationen
Verträge können verschiedene mathematische und logische Operationen ausführen, den Ausführungsfluss verwalten (Schleifen, bedingte Strukturen), andere Verträge erstellen und mit ihnen interagieren.
-
Verarbeitung kryptografischer Funktionen
Ethereum unterstützt bestimmte kryptografische Funktionen wie Hashing und Verifizierung digitaler Signaturen.
-
Einschränkungen der Ausführungszeit
Aufgrund des Gaslimits für jede Transaktion sind Smart Contracts nicht für Berechnungen geeignet, die lange Ausführungszeiten erfordern.
Diese Einschränkungen und Fähigkeiten definieren, welche Arten von Anwendungen und Berechnungen effektiv mit Smart Contracts in Ethereum implementiert werden können.
Zugriff auf externe Ressourcen aus der Blockchain, wie z. B. die API einer Website
Direkt im Code von Ethereum Smart Contracts ist es nicht möglich, eine Anfrage an eine externe Website zu stellen oder eine externe API aufzurufen. Für die Interaktion mit externen Daten und APIs in Ethereum Smart Contracts werden jedoch Oracles verwendet. Oracles sind Drittanbieter-Dienste, die Daten aus der Außenwelt an die Blockchain liefern. Sie agieren als Vermittler, sammeln die von Smart Contracts benötigten Daten und stellen sie der Blockchain in zuverlässiger und verifizierter Form zur Verfügung.
Beispiele für die Verwendung von Oracles umfassen das Abrufen von Informationen über Asset-Preise, Wetterdaten, Ergebnisse von Sportveranstaltungen und vieles mehr. Die Verwendung von Oracles erfordert jedoch Vertrauen in den Datenanbieter und eine angemessene Verwaltung der Risiken, die mit der Zentralisierung dieses Aspekts dezentraler Anwendungen verbunden sind.
Dies steht im Zusammenhang mit mehreren Schlüsselmerkmalen der Blockchain und Smart Contracts:
-
Determinismus
Die Blockchain erfordert, dass jede Transaktion und Vertragsexekution deterministisch ist. Das bedeutet, dass jeder Knoten im Netzwerk beim Ausführen des Vertragscodes zum gleichen Ergebnis kommen muss. Externe Anfragen könnten zu unterschiedlichen Ergebnissen zu unterschiedlichen Zeiten führen, was dieses Prinzip verletzen würde.
-
Sicherheit und Isolation
Die Einbindung externer Daten oder Anfragen in die Blockchain könnte Angriffsvektoren und Sicherheitslücken im Netzwerk schaffen.
-
Synchronisation und Geschwindigkeit
Die Ethereum-Blockchain arbeitet in einem synchronen Modus, und die Abhängigkeit von externen asynchronen Anfragen könnte den Mining- und Transaktionsverifizierungsprozess erheblich verlangsamen oder stören.
Datenspeicherung in Smart Contracts
Smart Contracts in Ethereum haben die Fähigkeit, die Ergebnisse von Berechnungen zu speichern. Diese Daten werden im Blockchain-Zustand gespeichert und können sowohl innerhalb des Vertrags selbst als auch für andere Verträge oder externe Abfragen zugänglich sein. Hier sind die wichtigsten Aspekte der Datenspeicherung in Smart Contracts:
-
Statusvariablen: Smart Contracts können Statusvariablen definieren, die auf der Blockchain gespeichert und über die Funktionen des Vertrags modifiziert werden können. Diese Variablen können Werte wie Zahlen, Zeichenketten, Arrays und komplexere Datenstrukturen speichern.
-
Statusänderung: Wenn ein Smart Contract als Ergebnis einer Transaktion ausgeführt wird und seine Statusvariablen ändert, werden diese Änderungen nach der erfolgreichen Ausführung der Transaktion in der Blockchain aufgezeichnet.
-
Langzeit-Speicherung: Da Daten in der Blockchain aufgezeichnet werden, sind sie langfristig und unveränderlich, was bedeutet, dass sie so lange gespeichert werden, wie das Ethereum-Netzwerk existiert.
-
Datenlesen: Smart Contracts können Funktionen zum Lesen gespeicherter Daten enthalten. Solche Funktionen können von externen Benutzern oder anderen Verträgen ohne das Senden einer Transaktion und ohne Gasverbrauch aufgerufen werden.
-
Gasbeschränkungen und Kosten: Das Speichern von Daten auf der Ethereum-Blockchain erfordert Gas und kann daher kostspielig sein, insbesondere beim Speichern großer Datenmengen. Dies erfordert Optimierung und sparsamen Umgang mit dem Speicher.
Smart Contracts können Speicher für verschiedene Zwecke nutzen, einschließlich der Verfolgung von Kryptowährungs-Salden, Abstimmungsergebnissen, eindeutigen Kennungen für NFTs (Non-Fungible Tokens) und vielem mehr.
Daher sind die Mechanismen der Datenspeicherung und -verwaltung Schlüsselkomponenten im Design und in der Funktionalität von Smart Contracts auf Ethereum.
Änderung eines Smart Contracts nach der Bereitstellung im Netzwerk
Sobald ein Smart Contract im Ethereum-Netzwerk bereitgestellt (deployt) ist, wird sein Code unveränderlich. Das bedeutet, dass es nach der Bereitstellung nicht möglich ist, die Logik oder Funktionalität des Vertrags zu ändern. Hier sind die wichtigsten Aspekte dieser Eigenschaft:
-
Unveränderlichkeit des Codes: Der Code eines Smart Contracts und alle seine Operationen werden in der Ethereum-Blockchain aufgezeichnet und werden zu einem integralen Bestandteil seiner Geschichte. Nach der Bereitstellung kann der Vertragscode nicht geändert oder gelöscht werden.
-
Sicherheit und Vertrauen: Diese Unveränderlichkeit ist ein wichtiges Merkmal zur Gewährleistung von Sicherheit und Vertrauen im Netzwerk. Benutzer und Parteien, die mit dem Vertrag interagieren, können sicher sein, dass die Logik des Vertrags nach seiner Bereitstellung nicht geändert wird.
-
Updates und Modifikationen: Wenn es notwendig ist, die Logik eines Smart Contracts zu aktualisieren oder zu ändern, deployen Entwickler in der Regel einen neuen Vertrag und migrieren bei Bedarf Daten vom alten Vertrag. In einigen Fällen enthalten Entwickler Mechanismen im Vertrag, um einige seiner Aspekte zu aktualisieren (z. B. Adressen anderer Verträge), aber die Kernlogik bleibt unverändert.
-
Selbstzerstörung: Es gibt eine Funktion in Solidity,
selfdestruct
, die es ermöglicht, einen Vertrag „zu zerstören“, Speicherplatz in der Blockchain freizugeben und verbleibende Mittel an eine angegebene Adresse zurückzugeben. Nach dem Aufruf dieser Funktion wird der Vertrag jedoch nicht mehr funktionsfähig, und sein Code bleibt dennoch als Geschichte in der Blockchain erhalten. -
Proxy-Contract-Architektur: Um flexiblere Systeme zu schaffen, die aktualisiert werden können, verwenden Entwickler manchmal eine Proxy-Contract-Architektur, bei der die Logik in einem separaten Vertrag gespeichert ist und der Proxy-Contract Funktionsaufrufe an ihn delegiert. Dies ermöglicht es, die Logik zu aktualisieren, indem nur der Vertrag mit der Logik aktualisiert wird, aber dieser Ansatz hat seine Nuancen und Risiken.
Die Kernlogik und Funktionalität eines Smart Contracts bleiben nach seiner Bereitstellung unverändert, und es ist in der Regel erforderlich, einen neuen Vertrag zu erstellen, um Änderungen vorzunehmen.
Zusammenfassung
Ethereum ist viel mehr als nur eine Kryptowährung. Solche Plattformen bieten uns nicht nur die Freiheit von Zahlungstransaktionen, sondern ermöglichen auch die Kommunikation zwischen verschiedenen Unternehmen ohne die Notwendigkeit von Bürokratie. Das Fehlen von Bürokratie führt zu schnellerem Fortschritt für die Menschheit.