Ethereum

Ethereum ist eine quelloffene, dezentralisierte Plattform, um Smart Contracts abzubilden. Die Planung des Ethereum-Projekts begann Ende 2013, die öffentliche Blockchain startete im Juli 2015. Ethereum lässt sich als die zweit-populärste öffentliche Blockchain betrachten, da sie über die zweitgrößte Marktkapitalisierung aller Krypto-Währungen verfügt (8,4 Mrd. USD), verglichen mit dem erstplazierten Bitcoin (25 Mrd.) und dem dritten Platz Ripple (3,6 Mrd.). 1

Ethereums Turing-vollständige Smart Contracts sind in der Lage, komplexe Berechnungen auszuführen, Daten zu speichern und mit anderen Contracts oder Nutzern auf der Blockchain zu kommunizieren. Contracts werden in höheren Programmiersprachen geschrieben und dann für die Ethereum Virtual Machine (EVM) in Bytecode übersetzt. Jeder am Netzwerk teilnehmende Node führt die EVM aus und arbeitet die gleichen Programme ab, um hinsichtlich des Zustandes des Netzwerks zu einheitlichen Ergebnissen und einem Konsens zu gelangen. Angetrieben werden diese Prozesse durch zusätzliche Transaktionsgebühren, bei denen es sich um feste Kosten handelt, die jeder Berechnung der EVM zugewiesen sind 2 und den Rechenaufwand dieser Transaktion repräsentieren. Diese Kosten werden in „Sprit“ (gas) gemessen und in Ether (der Eigenwährung des Ethereum Netzwerks) bezahlt: für jede Transaktion bestimmt der Benutzer einen Ether-Betrag, den er für eine Einheit gas zu bezahlen bereit ist, sowie die maximale Menge gas, für die dieser Preis gilt. Geht einer Transaktion der Sprit aus, bevor ihre Berechnung abgeschlossen ist, wird sie als fehlgeschlagen markiert und alles investierte gas (also das zuvor festgelegte Limit) wird als Mining-Gebühr einbehalten. Wird die Transaktion jedoch erfolgreich abgeschlossen, wird nur das tatsächlich verbrauchte gas als Gebühr einbehalten und jeglicher Überschuss als Ether an den Benutzer zurückgegeben. Diese Technik stellt sicher, dass böswillige Benutzer das Netzwerk nicht mit langwierigen Transaktionen zum Stillstand bringen können, während sie zugleich das Netzwerk von den Währungsschwankungen des Ether entkoppeln.

Die Vielseitigkeit der Smart Contracts von Ethereum erscheint vielversprechend für eine vergleichsweise leichte und funktionsreiche Umsetzung von

  • ISCC und Metadaten-Management
  • individuellem Token-Handel
  • individuellen Blockchain-Anwendungen

Eines der Probleme der öffentlichen Ethereum-Blockchain besteht darin, dass sie sich noch immer in Entwicklung befindet und das zugrunde liegende Protokoll jederzeit geändert werden kann. Wenn zwei Versionen des Protokolls nicht kompatibel miteinander sind, wird sich die öffentliche Chain aufspalten. Diese sogenannten hard forks haben bereits mehrfach stattgefunden. Darüber hinaus hat die Ethereum-Community aufgrund des Diebstahls einer großen Summe ETH mittels eines fehlerhaften Smart Contract entschieden, den wohl umstrittensten hard fork durchzuführen, um das gestohlene Geld zu erstatten3, was als massiver Vertrauensverlust hinsichtlich der Endgültigkeit und Verlässlichkeit von Ethereum Smart Contracts und Blockchains im Allgemeinen betrachtet werden kann. Dieser Umstand sollte bei der Entwicklung von Anwendungen für das öffentliche Ethereum-Netzwerk im Auge behalten werden.

Setup

Es sind eine Vielzahl von Ethereum-Clients erhältlich, sowohl von offizieller Seite, als auch von Fremdentwicklern. Für unseren Praxistest haben wir zwei der beliebtesten Clients verwendet, geth und Parity. Um eine lokale Test-Chain aufzusetzen, muss man Parity lediglich einen Parameter übergeben, während geth zum einen eine config-Datei, zum anderen bei jedem neuen Start des Clients mehrere Parameter benötigt.

Der geth-Client stellt eine Javascript-Konsole bereit, über die man mit der Chain interagiert und so einfachen Low-Level-Zugriff auf Contracts, Transaktionen und Ereignisse auf der Chain erhält. Dies bedingt jedoch, dass sich der Developer um einige Dinge kümmern muss: Das Mining wird nicht automatisch ausgeführt; falls ein Account nicht entsperrt wird und der Account nicht korrekt eingerichtet ist, werden kryptische Fehlermeldungen ausgegeben; und schließlich erfolgt keine Warnung, wenn Transaktionen das gas ausgeht, weil das zugewiesene Kontingent nicht ausreichend war.

Im Gegensatz dazu fehlt Parity eine eingebaute Konsole, dafür bietet es eine ansprechende, intuitive Benutzeroberfläche, die dabei hilft, die oben erwähnten Probleme zu vermeiden. Die Benutzeroberfläche lässt sich über den Webbrowser bedienen und enthält einen Editor, der Syntax-Highlighting, Kompilieren und das Absetzen von in der Sprache Solidity geschriebenen Smart Contracts unterstützt.

Mögliche Einsatzszenarien für das Content-Blockchain-Projekt

Föderierte Verwaltung von Content-Identifiern und Metadaten

Der unkomplizierteste Weg, Content-Identifier und deren Metadaten auf der Ethereum-Chain zu speichern und zu verknüpfen, ist ein zentraler Smart Contract. Während dieser Contract beliebig komplex werden kann, braucht die einfachste Version nur drei Merkmale aufzuweisen:

  • Jeder kann Metadaten für eines ISCC veröffentlichen
  • Jeder kann Metadaten eines ISCC abrufen
  • Niemand kann die Metadata History eines ISCC verändern

Diese drei Voraussetzungen genügen, um eine globale, öffentliche und zensurresistente Datenbank zu schaffen. Jegliche Zusatzfunktionen wie eine effiziente Suche über alle ISCCs ließe sich dann als externes Programm entwickeln, das von der eigentlichen Ethereum-Technologie (und deren Kosten) unabhängig ist.

Wir haben einen objektorientierten Ansatz gewählt, um während des Aufbaus einer Prototyp-Umgebung Erkenntnisse zu gewinnen: ein typischer ISCC Contract liefert ein dynamisches String-Array, das öffentlich lesbar ist, und ein append-only Log für beliebige Daten. Einzelne Instanzen werden erstellt und lassen sich durch einen allgemein bekannten, nicht administrierten content blockchain contract (CBC) abfragen, der Duplizierung verhindert und die Authentizität aller ISCC-Instanzen garantiert, die dieser zentrale Contract referenziert4. Um mögliche Probleme hinsichtlich der Größenbeschränkung eines einzelnen Contracts aus dem Weg zu räumen, speichert der CBC keine Verweise auf ISCC-Instanzen direkt. Stattdessen wird vom CBC bei Bedarf ein ISCCGroup-Contract erzeugt und dazu verwendet, Verweise auf alle Content-Identifier mit einem gemeinsamen Präfix zu speichern.

Dieser Ansatz scheint unglücklicherweise selbst dann unerschwingliche Kosten auf der öffentlichen Ethereum-Chain zu verursachen, wenn man von einem unrealistisch kleinen Content-Identifier von 4 Bytes ausgeht: das Registrieren eines Identifiers verbraucht 527.807 gas bzw., wenn es sich beim Präfix des Identifiers um einen neuen handelt, 1.283.100 gas.

bytes2025210215
gas48,45770,543760,35722,836,403
Gas-Kosten, um unterschiedliche Mengen Daten in einer bestehenden ISCC-Contract-Instanz zu speichern.

Bei einem Marktwert von 28,80 USD pro Ether und einem durchschnittlichen gas-Preis von 18 Gwei würde das Registrieren eines Identifiers mit einem neuen Präfix etwa 0,67 USD kosten, und das Abspeichern von 32 Bytes Metadaten (z. B. eine URL) etwa 0,037 USD. Es sollte beachtet werden, dass ein block gas limit von 4,0×106 gas bedeutet, dass in einem einzelnen Block höchstens drei teure ISCC-Registrierungen vorgenommen werden können.5 Die durchschnittliche Block-Zeit von 15 Sekunden6 würde folglich die Registrierung von maximal 17.000 ISCCs pro Tag erlauben und etwa 11.600 USD kosten. Da dies jedoch einen Großteil der Rechenleistung der Blockchain beanspruchen würde, würden sich die gas limits der Blocks sowie die gas-Preise konkurrierender Transaktionen erhöhen, was wiederum die ISSC-Registrierungskosten erhöhen würde. (Seit unserem Test ist der Kurs des ETH bereits von ca. 28 USD auf etwa 90 USD gestiegen.)

Es gibt zwei vielversprechende alternative Möglichkeiten, größere Datenmengen in der Ethereum-Blockchain zu speichern. Zum einen werden Transaktionen und deren Daten, also Parameter für den Aufruf von Contracts, ohnehin auf der Blockchain gespeichert, und es ist folglich nicht notwendig, diese Daten ausdrücklich im Speicherbereich eines Contracts abzulegen. Ein von der Chain unabhängiges Tool, das diese ungenutzten Parameter aus der Blockchain zu extrahieren vermag, würde folglich die Gesamt-Ether-Kosten reduzieren, da die Contracts weit weniger gas verbrauchen werden.

Ein weiteres Merkmal von Ethereums Smart Contracts sind events, Ereignisse. Diese scheinen das zuvor erwähnte Blockchain-Log zu verwenden, bieten jedoch einen ausgefeilteren Zugang: Ereignisdaten lassen sich indexieren, damit Ethereum-Clients sie durchsuchen können, und Ereignisse lassen sich anweisen, Callbacks seitens des Ethereum-Clients zu veranlassen.

Zu beachten ist an dieser Stelle, dass das offizielle Solidity-Handbuch in einer Aussage nahelegt, dass auf diese Weise in der Chain gespeicherte Daten möglicherweise nicht dauerhaft gespeichert bleiben.7 Dies sollte gründlich untersucht werden, ehe eine auf dem Blockchain-Log basierende Lösung implementiert wird.

Flexible Erstellung und Transaktion eigener Assets / Tokens

Das Ausgeben und Handeln eigener Tokens ist einer der häufigsten Einsatzzwecke von Ethereum. Die offizielle Webseite bietet sogar eine Anleitung, wie sich eine solche handelbare Münze erstellen lässt, und liefert auch einen Beispiel-Contract8.

Den Token aus dem Beispiel auf einer lokalen Entwicklungs-Chain auszugeben, verbraucht etwa 775.000 gas; Einheiten auf andere Benutzer zu übertragen, erfordert etwa 36.000 gas. Diese Aktionen würden zu den oben erwähnten Kursen ca. 0,40 USD und 0,02 USD kosten.

Unterstützung der Entwicklung von eigenen Blockchain-Anwendungen (Smart Contracts)

Zwar bietet Ethereum extrem vielseitige Smart Contracts, doch man sollte im Auge behalten, dass diese Contracts nur in der Lage sind, auf Benutzer (oder Contracts) zu reagieren, indem sie ihnen Transaktionen zuschicken. Contracts allein lassen sich praktisch nicht zeitlich so festlegen, zu einem späteren Zeitpunkt etwas zu tun oder auf Ereignisse außerhalb der Blockchain, wie zum Beispiel einen Aktienkurs, der einen bestimmten Wert erreicht, zu reagieren; sie sind hierfür auf Dienste wie Alarm Clocks oder Orakel angewiesen.

Ergebnisse

Die Popularität von Ethereum und die daraus folgende Sicherheit der öffentlichen Blockchain wie auch die Vielseitigkeit seiner Smart Contracts, machen Ethereum zu einem vielversprechenden Kandidaten für das Content-Blockchain-Projekt. Es gibt jedoch auch Nachteile, besonders hinsichtlich der Verwendung der öffentlichen Chain. Allem voran machen die fortlaufende Entwicklung des Protokolls mit vorgegebenen Meilensteinen, Inkompatibilität mit Vorgängerversionen und vergleichsweise häufige und kontroverse hard forks die Plattform zu einem unbeständigen Kandidaten.

Die hohe Inanspruchnahme der Rechenleistung der Chain und die hohen Kosten für das Abspeichern von Daten machen die öffentliche Chain als ISCC-Registry unbrauchbar, sollten sich nicht alternative Speicherungsmöglichkeiten als machbar und hinreichend effizient erweisen. Öffentliche Alternativen zu Ethereum wie Ethereum Classic oder Expanse sollten ebenfalls in Betracht gezogen werden, da sie über einen geringeren Marktwert verfügen und folglich insgesamt geringere Transaktionskosten verursachen.

1 Ungefähre Werte am 28.03.2017 laut https://coinmarketcap.com/https://www.coingecko.com/en,https://www.cryptocompare.com/coins/#/usd
5 Ungefährer Marktwert und gas-Preis und Limit am 14.03.2017
6 In dieser Höhe bewegte sie sich von 2015 bis 2017, https://etherscan.io/chart/blocktime
7 http://solidity.readthedocs.io/en/develop/contracts.html#events „Diese Logs […] verbleiben so lange [auf der Blockchain], wie ein Block zugänglich ist (dauerhaft, was Frontier und Homestead betrifft, dies könnte sich jedoch mit Serenity ändern).“

Kontakt            Impressum und Datenschutz                 Kontaktieren Sie uns! info@content-blockchain.org