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
- Cover
- Titel
- Impressum
- Inhalt
- Vorwort
- Glossar
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
- 11 Orakel
-
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
-
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
- 14 Konsens
- A Ethereum-Fork-Historie
- B Ethereum-Standards
- C Ethereum EVM-Opcodes und Gasverbrauch
- D Entwicklungswerkzeuge, Frameworks und Bibliotheken
- E Einführung in web3.js
- F Kurzlink-Referenz
- Index
- Über die Autoren
- Über den Übersetzer
- Über die Fachgutachter
- Kolophon
Product information
- Title: Ethereum – Grundlagen und Programmierung
- Author(s):
- Release date: September 2019
- Publisher(s): dpunkt
- ISBN: 9783960091103
You might also like
book
Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow, 2nd Edition
Eine Reihe technischer Durchbrüche beim Deep Learning haben das gesamte Gebiet des maschinellen Lernens in den …
audiobook
The Design of Everyday Things
First, businesses discovered quality as a key competitive edge; next came science. Now, Donald A. Norman, …
book
Designing Data-Intensive Applications
Data is at the center of many challenges in system design today. Difficult issues need to …
book
Mastering Corda
Mastering Corda provides you with a consistent, linear, and paced path to learning Corda and building …