GERMAN

Ethereum - Grundlagen und Programmierung

Book information

Publisher
O'Reilly
Year
2019
ISBN
9783960091103, 9783960103486, 9783960103493, 9783960103509, 9781491971949
Language
german
Format
PDF
Filesize
10 MB (10045641 bytes)
Pages
\432
Time added
2022-07-08 10:34:45

Description

Andreas M. Antonopoulos, Gavin Wood Lektorat: Ariane Hesse Übersetzung: Peter Klicman Korrektorat: Sibylle Feldmann, www.richtiger-text.de Fachgutachter: * Dr. Susanne Guth-Orlowski sowie Markus Angermann (FH St. Pölten) * Ralph Pichler und Matthias Tarasiewicz (RIAT, www.riat.at) Herstellung: Stefanie Weidner Umschlaggestaltung: Michael Oréal, www.oreal.de Satz: III-satz, www.drei-satz.de Druck und Bindung: mediaprint solutions GmbH, 33100 Paderborn Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. ISBN: Print 978-3-96009-110-3 PDF 978-3-96010-348-6 ePub 978-3-96010-349-3 mobi 978-3-96010-350-9 1. Auflage 2019 Copyright © 2019 dpunkt.verlag GmbH Wieblinger Weg 17 69123 Heidelberg Inhalt Vorwort Glossar Kapitel 1: Was ist Ethereum? Vergleich mit Bitcoin Komponenten einer Blockchain Die Geburt von Ethereum Die vier Entwicklungsstufen von Ethereum Ethereum: eine Allzweck-Blockchain Die Komponenten von Ethereum Weiterführende Literatur Ethereum und Turing-Vollständigkeit Turing-Vollständigkeit als »Feature« Auswirkungen der Turing-Vollständigkeit Von Allzweck-Blockchains zu dezentralisierten Anwendungen (Decentralized Applications, DApps) Das dritte Internetzeitalter Ethereums Entwicklungskultur Warum Ethereum lernen? Was Sie in diesem Buch lernen Kapitel 2: Ethereum-Grundlagen Ether-Währungseinheiten Eine Ethereum-Wallet wählen Kontrolle und Verantwortung Einführung in MetaMask Eine Wallet anlegen Netzwerke wechseln Test-Ether beschaffen Ether aus MetaMask senden Die Transaktionshistorie einer Adresse untersuchen Der Weltcomputer Externally Owned Accounts (EOAs) und Kontrakte Ein einfacher Kontrakt: ein Test-Ether-Faucet Den Faucet-Kontrakt kompilieren Den Kontrakt in der Blockchain registrieren Interaktion mit dem Kontrakt Die Kontraktadresse in einem Block-Explorer ansehen Den Kontrakt finanzieren Abhebungen aus unserem Kontrakt Fazit Kapitel 3: Ethereum-Clients Ethereum-Netzwerke Soll ich einen Full Node betreiben? Vor- und Nachteile eines Full Node Vor- und Nachteile eines öffentlichen Testnetzwerks Vor- und Nachteile der Simulation einer lokalen Blockchain Einen Ethereum-Client betreiben Hardwareanforderungen für einen Full Node Softwareanforderungen für die Kompilierung und den Betrieb eines Clients (Node) Parity Go-Ethereum (Geth) Die erste Synchronisation Ethereum-basierter Blockchains Geth oder Parity ausführen Die JSON-RPC-Schnittstelle Entfernte Ethereum-Clients Mobile (Smartphone) Wallets Browser-Wallets Fazit Kapitel 4: Kryptografie Schlüssel und Adressen Public-Key-Kryptografie und Kryptowährungen Private Schlüssel Generierung eines privaten Schlüssels aus einer Zufallszahl Öffentliche Schlüssel Kryptografie mit elliptischen Kurven Arithmetische Operationen bei elliptischen Kurven Einen öffentlichen Schlüssel generieren Bibliotheken für elliptische Kurven Kryptografische Hashfunktionen Ethereums kryptografische Hashfunktion: Keccak-256 Welche Hashfunktion nutze ich? Ethereum-Adressen Ethereum-Adressformate Inter Exchange Client Address Protocol Hex-Codierung mit Prüfsumme durch Großschreibung (EIP-55) Fazit Kapitel 5: Wallets Übersicht über die Wallet-Technologie Nichtdeterministische (zufallsbasierte) Wallets Deterministische (Seed-basierte) Wallets Hierarchisch-deterministische Wallets (BIP-32/BIP-44) Seeds und mnemonische Codes (BIP-39) Die Wallet-Best-Practices Mnemonische Codewörter (BIP-39) Eine HD-Wallet aus dem Seed-Wert erzeugen HD-Wallets (BIP-32) und Pfade (BIP-43/44) Fazit Kapitel 6: Transaktionen Die Struktur einer Transaktion Die Transaktions-Nonce Die Nonces nachhalten Lücken in Nonces, doppelte Nonces und Bestätigungen Nebenläufigkeit, Transaktionsursprung und Nonces Transaktionsgas Transaktionsempfänger Transaktionswert und -daten Mittel an EOAs und Kontrakte senden Nutzdaten an EOAs oder Kontrakte senden Spezielle Transaktion: Kontrakterzeugung Digitale Signaturen Elliptic Curve Digital Signature Algorithm Wie digitale Signaturen funktionieren Die Signatur verifizieren Die Mathematik hinter ECDSA Signieren von Transaktionen in der Praxis Erzeugen/Signieren einer Rohtransaktion Eine Rohtransaktion generieren mit EIP-155 Der Signaturpräfixwert (v) und die Public-Key-Recovery Trennung von Signierung und Übertragung (Offlinesignierung) Propagation von Transaktionen Aufzeichnen in der Blockchain Multisignatur-Transaktionen (Multisig) Fazit Kapitel 7: Smart Contracts und Solidity Was ist ein Smart Contract? Lebenszyklus eines Smart Contract Einführung in Ethereum-Hochsprachen Smart Contracts mit Solidity entwickeln Eine Solidity-Version wählen Download und Installation Entwicklungsumgebung Ein einfaches Solidity-Programm entwickeln Kompilieren mit dem Solidity-Compiler (solc) Das Ethereum-Kontrakt-ABI Wahl einer Solidity-Compiler- und Sprachversion Programmieren mit Solidity Datentypen Vordefinierte globale Variablen und Funktionen Kontraktdefinition Funktionen Kontraktkonstruktor und selfdestruct Unser Faucet-Beispiel um einen Konstruktor und selfdestruct erweitern Funktionsmodifikatoren Kontraktvererbung Fehlerbehandlung (assert, require, revert) Events Andere Kontrakte aufrufen (send, call, callcode, delegatecall) Überlegungen zum Gasverbrauch Dynamisch dimensionierte Arrays vermeiden Aufrufe anderer Kontrakte vermeiden Die Gaskosten kalkulieren Fazit Kapitel 8: Smart Contracts und Vyper Sicherheitslücken und Vyper Vergleich mit Solidity Modifikatoren Klassenvererbung Inline-Assembler Funktionsüberladung Variablen-Typecasting Vor- und Nachbedingungen Dekoratoren Funktions- und Variablenanordnung Kompilierung Schutz vor Überlauffehlern auf Compilerebene Daten lesen und schreiben Fazit Kapitel 9: Sicherheit von Smart Contracts Best Practices Sicherheitsrisiken und Anti-Pattern Reentrancy-Angriffe Die Sicherheitslücke Präventive Techniken Reales Beispiel: DAO Arithmetischer Über-/Unterlauf Die Sicherheitslücke Präventive Techniken Reale Beispiele: PoWHC und Batch Transfer Overflow (CVE-2018–10299) Unerwartete Ether Die Sicherheitslücke Präventive Techniken Weitere Beispiele DELEGATECALL Die Sicherheitslücke Präventive Techniken Reales Beispiel: Parity Multisig Wallet (zweiter Hack) Standardsichtbarkeit Die Sicherheitslücke Präventive Techniken Reales Beispiel: Parity Multisig Wallet (erster Hack) Entropie-Illusion Die Sicherheitslücke Präventive Techniken Reales Beispiel: PRNG-Kontrakte Referenzierung externer Kontrakte Die Sicherheitslücke Präventive Techniken Reales Beispiel: Reentrancy-Honeypot Kurze Adressen/Parameter Die Sicherheitslücke Präventive Techniken Ungeprüfte CALL-Rückgabewerte Die Sicherheitslücke Präventive Techniken Reales Beispiel: Etherpot und King of the Ether Race Conditions/Front Running Die Sicherheitslücke Präventive Techniken Reale Beispiele: ERC20 und Bancor Denial of Service (DoS) Die Sicherheitslücke Präventive Techniken Reales Beispiel: GovernMental Manipulation der Blockzeitstempel Die Sicherheitslücke Präventive Techniken Reales Beispiel: GovernMental Konstruktoren Die Sicherheitslücke Präventive Techniken Reales Beispiel: Rubixi Nicht initialisierte Zeiger auf Speicher Die Sicherheitslücke Präventive Techniken Reale Beispiele: OpenAddressLottery- und CryptoRoulette-Honeypot Fließkomma und Genauigkeit Die Sicherheitslücke Präventive Techniken Reales Beispiel: Ethstick Tx.Origin-Authentifizierung Die Sicherheitslücke Präventive Techniken Kontraktbibliotheken Fazit Kapitel 10: Tokens Wie Tokens genutzt werden Tokens und Fungibilität Kontrahentenrisiko Tokens und »Wesenhaftigkeit« Tokens nutzen: Utility oder Equity Ententest Utility-Tokens: Wer braucht sie? Tokens bei Ethereum Der ERC20-Token-Standard Ein eigenes ERC20-Token ausgeben Probleme mit ERC20-Tokens ERC223: ein vorgeschlagener Schnittstellenstandard für Token-Kontrakte ERC777: ein vorgeschlagener Schnittstellenstandard für Token-Kontrakte ERC721: Standard für nicht fungible Tokens (Deeds) Token-Standards nutzen Was sind Token-Standards? Was ist deren Zweck? Sollte man diese Standards nutzen? Sicherheit durch Reife Erweiterungen von Token-Interface-Standards Tokens und ICOs Fazit Kapitel 11: Orakel Warum Orakel benötigt werden Anwendungsfälle und Beispiele Entwurfsmuster für Orakel Datenauthentifizierung Rechnende Orakel Dezentralisierte Orakel Orakel-Clientschnittstellen in Solidity Fazit Kapitel 12: Dezentralisierte Anwendungen (DApps) Was ist eine DApp? Backend (Smart Contract) Frontend (Web-Nutzerschnittstelle) Datenspeicher Dezentralisierte Nachrichtenkommunikationsprotokolle Ein einfaches DApp-Beispiel: Auktions-DApp Auktions-DApp: Backend-Smart-Contracts Auktions-DApp: Frontend-Nutzerschnittstelle Weitere Dezentralisierung der Auktions-DApp Die Auktions-DApp in Swarm speichern Swarm vorbereiten Dateien in Swarm hochladen Der Ethereum-Nameservice (ENS) Geschichte des Ethereum-Nameservice Die ENS-Spezifikation Untere Schicht: Namenseigner und Resolver Mittlere Schicht: die .eth-Nodes Oberste Schicht: die Deeds Einen Namen registrieren Den ENS-Namen verwalten ENS-Resolver Einen Namen in einen Swarm-Hash (Inhalt) auflösen Von der App zur DApp Fazit Kapitel 13: Die Ethereum Virtual Machine Was ist die EVM? Vergleich mit existierender Technologie Der EVM-Befehlssatz (Bytecode-Operationen) Ethereum-Zustand Solidity in EVM-Bytecode kompilieren Kontrakt-Deployment Disassemblierung des Bytecodes Turing-Vollständigkeit und Gas Gas Gasberechnung während der Ausführung Erwägungen zur Gasberechnung Gaskosten versus Gaspreis Block-Gaslimit Fazit Kapitel 14: Konsens Konsens über Proof of Work Konsens über Proof of Stake (PoS) Ethash: Ethereums Proof-of-Work-Algorithmus Casper: Ethereums Proof-of-Stake-Algorithmus Konsensgrundsätze Kontroverse und Wettbewerb Fazit Anhang A: Ethereum-Fork-Historie Anhang B: Ethereum-Standards Anhang C: Ethereum EVM-Opcodes und Gasverbrauch Anhang D: Entwicklungswerkzeuge, Frameworks und Bibliotheken Anhang E: Einführung in web3.js Anhang F: Kurzlink-Referenz Index Über die Autoren Über den Übersetzer Über die Fachgutachter Kolophon

Similar books