Ethereum – Grundlagen und Programmierung

Book description

Von herausragenden Experten lernen: Andreas M. Antonopoulos, weltweit führender Bitcoin- und Open-Blockchain-Experte, und Dr. Gavin Wood, Mitbegründer von Ethereum und Erfinder von Solidity.

- "Bitcoin & Blockchain - Grundlagen und Programmierung" ist die kanonische Referenz, die die Bitcoin- und Blockchain-Technologie einem breiten Publikum zugänglich machte, und dieses Buch leistet dasselbe für den Ethereum-Weltcomputer." -Lane Rettig, Ethereum Core Developer

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.

Table of contents

  1. Cover
  2. Titel
  3. Impressum
  4. Inhalt
  5. Vorwort
  6. Glossar
  7. 1 Was ist Ethereum?
    1. Vergleich mit Bitcoin
    2. Komponenten einer Blockchain
    3. Die Geburt von Ethereum
    4. Die vier Entwicklungsstufen von Ethereum
    5. Ethereum: eine Allzweck-Blockchain
    6. Die Komponenten von Ethereum
    7. Weiterführende Literatur
    8. Ethereum und Turing-Vollständigkeit
    9. Turing-Vollständigkeit als »Feature«
    10. Auswirkungen der Turing-Vollständigkeit
    11. Von Allzweck-Blockchains zu dezentralisierten Anwendungen (Decentralized Applications, DApps)
    12. Das dritte Internetzeitalter
    13. Ethereums Entwicklungskultur
    14. Warum Ethereum lernen?
    15. Was Sie in diesem Buch lernen
  8. 2 Ethereum-Grundlagen
    1. Ether-Währungseinheiten
    2. Eine Ethereum-Wallet wählen
    3. Kontrolle und Verantwortung
    4. Einführung in MetaMask
    5. Eine Wallet anlegen
    6. Netzwerke wechseln
    7. Test-Ether beschaffen
    8. Ether aus MetaMask senden
    9. Die Transaktionshistorie einer Adresse untersuchen
    10. Der Weltcomputer
    11. Externally Owned Accounts (EOAs) und Kontrakte
    12. Ein einfacher Kontrakt: ein Test-Ether-Faucet
    13. Den Faucet-Kontrakt kompilieren
    14. Den Kontrakt in der Blockchain registrieren
    15. Interaktion mit dem Kontrakt
    16. Die Kontraktadresse in einem Block-Explorer ansehen
    17. Den Kontrakt finanzieren
    18. Abhebungen aus unserem Kontrakt
    19. Fazit
  9. 3 Ethereum-Clients
    1. Ethereum-Netzwerke
    2. Soll ich einen Full Node betreiben?
    3. Vor- und Nachteile eines Full Node
    4. Vor- und Nachteile eines öffentlichen Testnetzwerks
    5. Vor- und Nachteile der Simulation einer lokalen Blockchain
    6. Einen Ethereum-Client betreiben
    7. Hardwareanforderungen für einen Full Node
    8. Softwareanforderungen für die Kompilierung und den Betrieb eines Clients (Node)
    9. Parity
    10. Go-Ethereum (Geth)
    11. Die erste Synchronisation Ethereum-basierter Blockchains
    12. Geth oder Parity ausführen
    13. Die JSON-RPC-Schnittstelle
    14. Entfernte Ethereum-Clients
    15. Mobile (Smartphone) Wallets
    16. Browser-Wallets
    17. Fazit
  10. 4 Kryptografie
    1. Schlüssel und Adressen
    2. Public-Key-Kryptografie und Kryptowährungen
    3. Private Schlüssel
    4. Generierung eines privaten Schlüssels aus einer Zufallszahl
    5. Öffentliche Schlüssel
    6. Kryptografie mit elliptischen Kurven
    7. Arithmetische Operationen bei elliptischen Kurven
    8. Einen öffentlichen Schlüssel generieren
    9. Bibliotheken für elliptische Kurven
    10. Kryptografische Hashfunktionen
    11. Ethereums kryptografische Hashfunktion: Keccak-256
    12. Welche Hashfunktion nutze ich?
    13. Ethereum-Adressen
    14. Ethereum-Adressformate
    15. Inter Exchange Client Address Protocol
    16. Hex-Codierung mit Prüfsumme durch Großschreibung (EIP-55)
    17. Fazit
  11. 5 Wallets
    1. Übersicht über die Wallet-Technologie
    2. Nichtdeterministische (zufallsbasierte) Wallets
    3. Deterministische (Seed-basierte) Wallets
    4. Hierarchisch-deterministische Wallets (BIP-32/BIP-44)
    5. Seeds und mnemonische Codes (BIP-39)
    6. Die Wallet-Best-Practices
    7. Mnemonische Codewörter (BIP-39)
    8. Eine HD-Wallet aus dem Seed-Wert erzeugen
    9. HD-Wallets (BIP-32) und Pfade (BIP-43/44)
    10. Fazit
  12. 6 Transaktionen
    1. Die Struktur einer Transaktion
    2. Die Transaktions-Nonce
    3. Die Nonces nachhalten
    4. Lücken in Nonces, doppelte Nonces und Bestätigungen
    5. Nebenläufigkeit, Transaktionsursprung und Nonces
    6. Transaktionsgas
    7. Transaktionsempfänger
    8. Transaktionswert und -daten
    9. Mittel an EOAs und Kontrakte senden
    10. Nutzdaten an EOAs oder Kontrakte senden
    11. Spezielle Transaktion: Kontrakterzeugung
    12. Digitale Signaturen
    13. Elliptic Curve Digital Signature Algorithm
    14. Wie digitale Signaturen funktionieren
    15. Die Signatur verifizieren
    16. Die Mathematik hinter ECDSA
    17. Signieren von Transaktionen in der Praxis
    18. Erzeugen/Signieren einer Rohtransaktion
    19. Eine Rohtransaktion generieren mit EIP-155
    20. Der Signaturpräfixwert (v) und die Public-Key-Recovery
    21. Trennung von Signierung und Übertragung (Offlinesignierung)
    22. Propagation von Transaktionen
    23. Aufzeichnen in der Blockchain
    24. Multisignatur-Transaktionen (Multisig)
    25. Fazit
  13. 7 Smart Contracts und Solidity
    1. Was ist ein Smart Contract?
    2. Lebenszyklus eines Smart Contract
    3. Einführung in Ethereum-Hochsprachen
    4. Smart Contracts mit Solidity entwickeln
    5. Eine Solidity-Version wählen
    6. Download und Installation
    7. Entwicklungsumgebung
    8. Ein einfaches Solidity-Programm entwickeln
    9. Kompilieren mit dem Solidity-Compiler (solc)
    10. Das Ethereum-Kontrakt-ABI
    11. Wahl einer Solidity-Compiler- und Sprachversion
    12. Programmieren mit Solidity
    13. Datentypen
    14. Vordefinierte globale Variablen und Funktionen
    15. Kontraktdefinition
    16. Funktionen
    17. Kontraktkonstruktor und selfdestruct
    18. Unser Faucet-Beispiel um einen Konstruktor und selfdestruct erweitern
    19. Funktionsmodifikatoren
    20. Kontraktvererbung
    21. Fehlerbehandlung (assert, require, revert)
    22. Events
    23. Andere Kontrakte aufrufen (send, call, callcode, delegatecall)
    24. Überlegungen zum Gasverbrauch
    25. Dynamisch dimensionierte Arrays vermeiden
    26. Aufrufe anderer Kontrakte vermeiden
    27. Die Gaskosten kalkulieren
    28. Fazit
  14. 8 Smart Contracts und Vyper
    1. Sicherheitslücken und Vyper
    2. Vergleich mit Solidity
    3. Modifikatoren
    4. Klassenvererbung
    5. Inline-Assembler
    6. Funktionsüberladung
    7. Variablen-Typecasting
    8. Vor- und Nachbedingungen
    9. Dekoratoren
    10. Funktions- und Variablenanordnung
    11. Kompilierung
    12. Schutz vor Überlauffehlern auf Compilerebene
    13. Daten lesen und schreiben
    14. Fazit
  15. 9 Sicherheit von Smart Contracts
    1. Best Practices
    2. Sicherheitsrisiken und Anti-Pattern
    3. Reentrancy-Angriffe
    4. Die Sicherheitslücke
    5. Präventive Techniken
    6. Reales Beispiel: DAO
    7. Arithmetischer Über-/Unterlauf
    8. Die Sicherheitslücke
    9. Präventive Techniken
    10. Reale Beispiele: PoWHC und Batch Transfer Overflow (CVE-2018–10299)
    11. Unerwartete Ether
    12. Die Sicherheitslücke
    13. Präventive Techniken
    14. Weitere Beispiele
    15. DELEGATECALL
    16. Die Sicherheitslücke
    17. Präventive Techniken
    18. Reales Beispiel: Parity Multisig Wallet (zweiter Hack)
    19. Standardsichtbarkeit
    20. Die Sicherheitslücke
    21. Präventive Techniken
    22. Reales Beispiel: Parity Multisig Wallet (erster Hack)
    23. Entropie-Illusion
    24. Die Sicherheitslücke
    25. Präventive Techniken
    26. Reales Beispiel: PRNG-Kontrakte
    27. Referenzierung externer Kontrakte
    28. Die Sicherheitslücke
    29. Präventive Techniken
    30. Reales Beispiel: Reentrancy-Honeypot
    31. Kurze Adressen/Parameter
    32. Die Sicherheitslücke
    33. Präventive Techniken
    34. Ungeprüfte CALL-Rückgabewerte
    35. Die Sicherheitslücke
    36. Präventive Techniken
    37. Reales Beispiel: Etherpot und King of the Ether
    38. Race Conditions/Front Running
    39. Die Sicherheitslücke
    40. Präventive Techniken
    41. Reale Beispiele: ERC20 und Bancor
    42. Denial of Service (DoS)
    43. Die Sicherheitslücke
    44. Präventive Techniken
    45. Reales Beispiel: GovernMental
    46. Manipulation der Blockzeitstempel
    47. Die Sicherheitslücke
    48. Präventive Techniken
    49. Reales Beispiel: GovernMental
    50. Konstruktoren
    51. Die Sicherheitslücke
    52. Präventive Techniken
    53. Reales Beispiel: Rubixi
    54. Nicht initialisierte Zeiger auf Speicher
    55. Die Sicherheitslücke
    56. Präventive Techniken
    57. Reale Beispiele: OpenAddressLottery- und CryptoRoulette-Honeypot
    58. Fließkomma und Genauigkeit
    59. Die Sicherheitslücke
    60. Präventive Techniken
    61. Reales Beispiel: Ethstick
    62. Tx.Origin-Authentifizierung
    63. Die Sicherheitslücke
    64. Präventive Techniken
    65. Kontraktbibliotheken
    66. Fazit
  16. 10 Tokens
    1. Wie Tokens genutzt werden
    2. Tokens und Fungibilität
    3. Kontrahentenrisiko
    4. Tokens und »Wesenhaftigkeit«
    5. Tokens nutzen: Utility oder Equity
    6. Ententest
    7. Utility-Tokens: Wer braucht sie?
    8. Tokens bei Ethereum
    9. Der ERC20-Token-Standard
    10. Ein eigenes ERC20-Token ausgeben
    11. Probleme mit ERC20-Tokens
    12. ERC223: ein vorgeschlagener Schnittstellenstandard für Token-Kontrakte
    13. ERC777: ein vorgeschlagener Schnittstellenstandard für Token-Kontrakte
    14. ERC721: Standard für nicht fungible Tokens (Deeds)
    15. Token-Standards nutzen
    16. Was sind Token-Standards? Was ist deren Zweck?
    17. Sollte man diese Standards nutzen?
    18. Sicherheit durch Reife
    19. Erweiterungen von Token-Interface-Standards
    20. Tokens und ICOs
    21. Fazit
  17. 11 Orakel
    1. Warum Orakel benötigt werden
    2. Anwendungsfälle und Beispiele
    3. Entwurfsmuster für Orakel
    4. Datenauthentifizierung
    5. Rechnende Orakel
    6. Dezentralisierte Orakel
    7. Orakel-Clientschnittstellen in Solidity
    8. Fazit
  18. 12 Dezentralisierte Anwendungen (DApps)
    1. Was ist eine DApp?
    2. Backend (Smart Contract)
    3. Frontend (Web-Nutzerschnittstelle)
    4. Datenspeicher
    5. Dezentralisierte Nachrichtenkommunikationsprotokolle
    6. Ein einfaches DApp-Beispiel: Auktions-DApp
    7. Auktions-DApp: Backend-Smart-Contracts
    8. Auktions-DApp: Frontend-Nutzerschnittstelle
    9. Weitere Dezentralisierung der Auktions-DApp
    10. Die Auktions-DApp in Swarm speichern
    11. Swarm vorbereiten
    12. Dateien in Swarm hochladen
    13. Der Ethereum-Nameservice (ENS)
    14. Geschichte des Ethereum-Nameservice
    15. Die ENS-Spezifikation
    16. Untere Schicht: Namenseigner und Resolver
    17. Mittlere Schicht: die .eth-Nodes
    18. Oberste Schicht: die Deeds
    19. Einen Namen registrieren
    20. Den ENS-Namen verwalten
    21. ENS-Resolver
    22. Einen Namen in einen Swarm-Hash (Inhalt) auflösen
    23. Von der App zur DApp
    24. Fazit
  19. 13 Die Ethereum Virtual Machine
    1. Was ist die EVM?
    2. Vergleich mit existierender Technologie
    3. Der EVM-Befehlssatz (Bytecode-Operationen)
    4. Ethereum-Zustand
    5. Solidity in EVM-Bytecode kompilieren
    6. Kontrakt-Deployment
    7. Disassemblierung des Bytecodes
    8. Turing-Vollständigkeit und Gas
    9. Gas
    10. Gasberechnung während der Ausführung
    11. Erwägungen zur Gasberechnung
    12. Gaskosten versus Gaspreis
    13. Block-Gaslimit
    14. Fazit
  20. 14 Konsens
    1. Konsens über Proof of Work
    2. Konsens über Proof of Stake (PoS)
    3. Ethash: Ethereums Proof-of-Work-Algorithmus
    4. Casper: Ethereums Proof-of-Stake-Algorithmus
    5. Konsensgrundsätze
    6. Kontroverse und Wettbewerb
    7. Fazit
  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

Product information

  • Title: Ethereum – Grundlagen und Programmierung
  • Author(s): Andreas M. Antonopoulos, Gavin Wood
  • Release date: September 2019
  • Publisher(s): dpunkt
  • ISBN: 9783960091103