Ethereum – Grundlagen und Programmierung
eBook - ePub

Ethereum – Grundlagen und Programmierung

Smart Contracts und DApps entwickeln

  1. 432 Seiten
  2. German
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Ethereum – Grundlagen und Programmierung

Smart Contracts und DApps entwickeln

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

Ethereum ist der Schlüssel zu einem weltweiten, dezentralen Computing-Paradigma: Die Plattform ermöglicht es Ihnen, dezentrale Anwendungen (DApps) und Smart Contracts ohne zentrale Fehler- und Kontrollpunkte auszuführen, sie in ein Zahlungsnetzwerk zu integrieren und hierbei auf einer offenen Blockchain zu arbeiten.In ihrem umfassenden Praxisbuch vermitteln Andreas M. Antonopoulos und Gavin Wood alles, was Sie über das Entwickeln von Smart Contracts und DApps auf Ethereum und anderen Virtual-Machine-Blockchains wissen müssen.Erfahren Sie, warum IBM, Microsoft, NASDAQ und Hunderte anderer Unternehmen mit Ethereum experimentieren und eignen Sie sich alle erforderlichen Fähigkeiten an, um in dieser spannenden und wachsenden Branche innovative Projekte erfolgreich umzusetzen.- Führen Sie einen Ethereum-Client aus, erzeugen und senden Sie Basistransaktionen und programmieren Sie Smart Contracts.- Verstehen Sie die Grundlagen der Public-Key-Kryptografie, von Hashes und digitalen Signaturen.- Erfahren Sie, wie "Wallets" digitale Schlüssel verwalten, die Geldmittel und Smart Contracts kontrollieren.- Interagieren Sie programmgesteuert mit Ethereum-Clients – über JavaScript-Bibliotheken und Remote-Procedure-Call-Schnittstellen.- Erarbeiten Sie sich Best Practices im Bereich der Sicherheit, verstehen Sie Design-Patterns und Anti-Patterns anhand von realen Beispielen.- Erstellen Sie Tokens, die Vermögenswerte, Freigaben, Abstimmungen oder Zugriffsrechte abbilden.- Entwickeln Sie dezentrale Anwendungen unter Verwendung mehrerer Peer-to-Peer-Komponenten.

Häufig gestellte Fragen

Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bücher zum Download über die App zur Verfügung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die übrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht möglich ist. Weitere Informationen hier.
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Wir sind ein Online-Abodienst für Lehrbücher, bei dem du für weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit über 1 Million Büchern zu über 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ja, du hast Zugang zu Ethereum – Grundlagen und Programmierung von Andreas M. Antonopoulos,Gavin Wood, Peter Klicman im PDF- und/oder ePub-Format sowie zu anderen beliebten Büchern aus Computer Science & Software Development. Aus unserem Katalog stehen dir über 1 Million Bücher zur Verfügung.

Information

Verlag
O'Reilly
Jahr
2019
ISBN
9783960103493

KAPITEL 1

Was ist Ethereum?

Ethereum wird häufig als »Weltcomputer« beschrieben, doch was bedeutet das? Wir wollen mit einer informatiklastigeren Betrachtung beginnen und versuchen dann, das mit einer etwas praktischeren Analyse der Fähigkeiten und Charakteristika von Ethereum aufzuschlüsseln, während wir ihn mit Bitcoin und anderen dezentralisierten Informationsaustauschplattformen (oder kurz »Blockchains«) vergleichen.
Aus Sicht der Informatik ist Ethereum eine deterministische, doch praktisch unbegrenzte Zustandsmaschine (State Machine), bestehend aus einem global zugänglichen Singleton-Zustand und einer virtuellen Maschine, die Änderungen an diesem Zustand vornimmt.
Aus einer etwas praktischeren Sicht ist Ethereum eine Open-Source-basierte, globale, dezentralisierte Infrastruktur, die als Smart Contracts bezeichnete Programme ausführt. Es nutzt die Blockchain zur Synchronisation und Speicherung der Zustandsänderungen des Systems sowie eine Kryptowährung namens Ether, um die Kosten der Ausführungsressourcen zu messen und zu beschränken.
Die Ethereum-Plattform ermöglicht es Entwicklern, leistungsfähige dezentralisierte Anwendungen mit integrierten ökonomischen Funktionen zu entwickeln. Sie bietet Hochverfügbarkeit, Nachvollziehbarkeit, Transparenz und Neutralität und reduziert bzw. eliminiert gleichzeitig die Zensur und bestimmte Gegenparteirisiken.

Vergleich mit Bitcoin

Viele Menschen, die zu Ethereum kommen, haben bereits Erfahrung mit Kryptowährungen, insbesondere Bitcoin. Ethereum hat mit anderen offenen Blockchains vieles gemeinsam: ein die Teilnehmer verbindendes Peer-to-Peer-Netzwerk, einen byzantinischen, fehlertoleranten Konsensalgorithmus zur Synchronisation der Zustands-Updates (eine Proof-of-Work-Blockchain), die Nutzung kryptografischer Primitive wie digitale Signaturen und Hashs sowie eine Kryptowährung (Ether).
Doch in vielerlei Hinsicht unterscheiden sich sowohl Zweck als auch Aufbau von Ethereum deutlich von früheren offenen Blockchains einschließlich Bitcoin.
Ethereums Zweck ist nicht primär der eines digitalen Zahlungsnetzwerks. Zwar ist die Digitalwährung Ether integraler Bestandteil von Ethereum und für den Betrieb unverzichtbar, doch gedacht ist Ether als »Hilfswährung«, um die Nutzung der Ethereum-Plattform als Weltcomputer bezahlen zu können.
Im Gegensatz zum Bitcoin, der nur eine stark eingeschränkte Skriptsprache besitzt, wurde Ethereum als programmierbare Allzweck-Blockchain entworfen, die eine virtuelle Maschine verwendet, die Code beliebiger und unbegrenzter Komplexität ausführen kann. Während sich Bitcoins Skriptsprache ganz bewusst auf die einfache Wahr/Falsch-Evaluierung von Ausgabebedingungen beschränkt, ist Ethereums Sprache Turing-vollständig, was bedeutet, dass Ethereum direkt als Allzweckcomputer verwendet werden kann.

Komponenten einer Blockchain

Die Komponenten einer offenen (und öffentlichen) Blockchain umfassen (üblicherweise):
  • Ein Peer-to-Peer-Netzwerk (P2P), das die Teilnehmer verbindet und Transaktionen sowie Blöcke verifizierter Transaktionen über ein standardisiertes Protokoll propagiert.
  • Nachrichten (Messages) in Form von Transaktionen, die Zustandsübergänge repräsentieren.
  • Eine Reihe von Konsensregeln, die festlegen, woraus eine Transaktion besteht und was einen gültigen Zustandsübergang darstellt.
  • Eine Zustandsmaschine, die Transaktionen entsprechend den Konsensregeln verarbeitet.
  • Eine Kette kryptografisch gesicherter Blöcke, die als Journal aller verifizierten und akzeptierten Zustandsübergänge dienen.
  • Ein Konsensalgorithmus, der die Kontrolle über die Blockchain dezentralisiert, indem er die Teilnehmer dazu zwingt, bei der Durchsetzung der Konsensregeln zusammenzuarbeiten.
  • Ein spieltheoretisch solides Anreizsystem (z.B. Proof-of-Work-Kosten plus Blockbelohnungen), um die Zustandsmaschine in einer offenen Umgebung ökonomisch abzusichern.
  • Ein oder mehrere Open-Source-Softwareimplementierungen obiger Punkte (»Clients«).
Alle oder die meisten dieser Komponenten werden üblicherweise in einem einzigen Softwareclient kombiniert. Zum Beispiel wird bei Bitcoin die Referenzimplementierung vom Open-Source-Projekt Bitcoin Core entwickelt und als bitcoind-Client implementiert. Bei Ethereum gibt es anstelle einer Referenzimplementierung eine Referenzspezifikation, d.h. eine mathematische Beschreibung des Systems im Yellow Paper (siehe »Weiterführende Literatur« auf Seite 7). Es gibt eine Reihe von Clients, die basierend auf der Referenzspezifikation entwickelt wurden.
In der Vergangenheit haben wir den Begriff »Blockchain« für alle gerade aufgeführten Komponenten verwendet, also als Sammelbezeichnung für die Kombination aus Techniken, die die beschriebenen Charakteristika aufweisen. Heutzutage gibt es hingegen eine Vielzahl von Blockchains mit unterschiedlichen Eigenschaften. Wir benötigen daher Kriterien, die uns dabei helfen, die Charakteristika der fraglichen Blockchain zu verstehen, etwa offen, öffentlich, global, dezentralisiert, neutral und zensurresistent, um die wichtigen Charakteristika eines Blockchain-Systems zu identifizieren, die diese Komponenten ermöglichen.
Nicht alle Blockchains sind gleich. Wenn Ihnen jemand sagt, dass es sich um eine Blockchain handelt, haben Sie keine Antwort erhalten, sondern müssen eine ganze Reihe von Fragen stellen, um zu klären, was in diesem Fall mit dem Wort »Blockchain« genau gemeint ist. Fragen Sie zuerst nach einer Beschreibung der Komponenten der obigen Liste und erkundigen Sie sich dann, ob diese »Blockchain« Charakteristika wie offen, öffentlich etc. aufweist.

Die Geburt von Ethereum

Alle großen Innovationen lösen reale Probleme, und Ethereum ist da keine Ausnahme. Es wurde zu einer Zeit konzipiert, als man die Leistungsfähigkeit des Bitcoin-Modells erkannte und über den Einsatz in Kryptowährungsanwendungen hinausgehen wollte. Doch die Entwickler hatten ein Problem: Entweder mussten sie auf Bitcoin aufsetzen oder eine neue Blockchain starten. Auf Bitcoin aufzubauen, bedeutete, mit den beabsichtigten Einschränkungen des Netzwerks zu leben und nach Behelfslösungen zu suchen. Die beschränkte Menge an Transaktionstypen, Datentypen und Größen der Datenspeicherung schien die Art der Anwendungen einzuschränken, die direkt unter Bitcoin laufen könnten. Alles Weitere würde zusätzliche Off-Chain-Schichten verlangen, was viele der Vorteile einer öffentlichen Blockchain direkt aufheben würde. Für Projekte, die mehr Freiheit und Flexibilität benötigten, aber auf der Blockchain bleiben wollten, war eine neue Blockchain die einzige Lösung. Das wiederum bedeutete viel Arbeit: Bootstrapping aller Infrastrukturelemente, umfassende Tests etc.
Gegen Ende des Jahres 2013 begann Vitalik Buterin, ein junger Programmierer und Bitcoin-Enthusiast, darüber nachzudenken, wie man die Fähigkeiten von Bitcoin und Mastercoin (ein Overlay-Protokoll, das Bitcoin um rudimentäre Smart Contracts erweiterte) ausweiten könnte. Im Oktober dieses Jahres schlug Vitalik dem Mastercoin-Team einen generalisierten Ansatz vor, der es erlaubte, die spezialisierte Kontraktsprache von Mastercoin durch flexible und skriptfähige (aber nicht Touring-vollständige) Kontrakte zu ersetzen. Zwar war das Mastercoin-Team beeindruckt, doch die Änderungen des Vorschlags waren zu radikal, um in den Entwicklungsfahrplan zu passen.
Im Dezember 2013 begann Vitalik damit, ein Whitepaper zu teilen, das die Idee hinter Ethereum erläuterte: eine Turing-vollständige Allzweck-Blockchain. Ein paar Dutzend Menschen sahen diesen frühen Entwurf und gaben Feedback, was Vitalik half, seinen Vorschlag weiterzuentwickeln.
Beide Autoren dieses Buchs erhielten einen frühen Entwurf des Whitepaper und kommentierten ihn. Andreas M. Antonopoulos war von der Idee fasziniert und stellte Vitalik viele Fragen zur Nutzung einer separaten Blockchain zur Durchsetzung von Konsensregeln bei der Ausführung von Smart Contracts sowie zu den Auswirkungen einer Turing-vollständigen Sprache. Andreas verfolgte den Fortschritt von Ethereum mit großem Interesse, schrieb aber in dieser frühen Phase an seinem Buch Mastering Bitcoin und arbeitete daher nicht direkt (sondern erst viel später) an Ethereum mit. Dr. Gavin Wood hingegen war einer der ersten, der Vitalik ansprach und mit seinen C++-Programmierkenntnissen Hilfe anbot. Gavin wurde Ethereums Mitgründer, Mitgestalter und CTO.
Vitalik erinnert sich dazu in seinem »Ethereum Prehistory«-Post wie folgt: (http://bit.ly/2T2t6zs)
This was the time when the Ethereum protocol was entirely my own creation. From here on, however, new participants started to join the fold. By far the most prominent on the protocol side was Gavin Wood…
Gavin can also be largely credited for the subtle change in vision from viewing Ethereum as a platform for building programmable money, with blockchain-based contracts that can hold digital assets and transfer them according to pre-set rules, to a general-purpose computing platform. This started with subtle changes in emphasis and terminology, and later this influence became stronger with the increasing emphasis on the »Web 3« ensemble, which saw Ethereum as being one piece of a suite of decentralized technologies, the other two being Whisper and Swarm.
Im Dezember 2013 begannen Vitalik und Gavin damit, die Idee zu verfeinern und weiterzuentwickeln und bauten die Protokollschicht auf, aus der Ethereum wurde.
Ethereums Gründer dachten an eine Blockchain ohne einen bestimmten Zweck, die eine Vielzahl von Anwendungen unterstützt, indem sie programmiert werden kann. Die Idee war, dass ein Entwickler durch die Nutzung einer Allzweck-Blockchain wie Ethereum eine Anwendung entwickeln konnte, ohne die zugrunde liegenden Mechanismen von Peer-to-Peer-Netzwerken, Blockchains, Konsensalgorithmen etc. implementieren zu müssen. Die Ethereum-Plattform wurde entworfen, um diese Details zu abstrahieren und eine deterministische, aber sichere Programmierumgebung für dezentralisierte Blockchain-Anwendungen zu schaffen.
Genau wie ...

Inhaltsverzeichnis

  1. Cover
  2. Titel
  3. Impressum
  4. Inhalt
  5. Vorwort
  6. Glossar
  7. 1 Was ist Ethereum?
  8. 2 Ethereum-Grundlagen
  9. 3 Ethereum-Clients
  10. 4 Kryptografie
  11. 5 Wallets
  12. 6 Transaktionen
  13. 7 Smart Contracts und Solidity
  14. 8 Smart Contracts und Vyper
  15. 9 Sicherheit von Smart Contracts
  16. 10 Tokens
  17. 11 Orakel
  18. 12 Dezentralisierte Anwendungen (DApps)
  19. 13 Die Ethereum Virtual Machine
  20. 14 Konsens
  21. A Ethereum-Fork-Historie
  22. B Ethereum-Standards
  23. C Ethereum EVM-Opcodes und Gasverbrauch
  24. D Entwicklungswerkzeuge, Frameworks und Bibliotheken
  25. E Einführung in web3.js
  26. F Kurzlink-Referenz
  27. Index
  28. Über die Autoren
  29. Über den Übersetzer
  30. Über die Fachgutachter
  31. Kolophon