Andreas Schütz, Tobias Fertig
Blockchain für Entwickler
Das Handbuch für Software Engineers. Grundlagen, Programmierung, Anwendung. Mit vielen Praxisbeispielen
Andreas Schütz, Tobias Fertig
Blockchain für Entwickler
Das Handbuch für Software Engineers. Grundlagen, Programmierung, Anwendung. Mit vielen Praxisbeispielen
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Eine Blockchain ist ein distributed Ledger, dessen Datensätze manipulationssicher gespeichert werden. Was sich zunächst unspektakulär anhört, hat das Potenzial, die Softwareentwicklung verteilter Systeme grundlegend zu verändern: Ihr Einsatz in der Kryptowährung Bitcoin macht es vor. Lernen Sie die Idee hinter der Blockchain kennen und erfahren Sie, wie Ihre technische Umsetzung funktioniert. Dieser praxisorientierte Guide erklärt Ihnen von grundlegenden Konzepten über die verschiedenen Konsensmodelle und Datenstrukturen bis zur individuellen Implementierung alles, was Sie über die Blockchain…mehr
Andere Kunden interessierten sich auch für
- Alexander SalvanosProfessionell entwickeln mit Java EE 859,90 €
- Uwe PostBesser coden29,90 €
- Christian UllenboomCaptain CiaoCiao erobert Java39,90 €
- Christoph KecherUML 2.534,90 €
- Arne BoockmeyerFit fürs Studium - Informatik24,90 €
- Christian ClausenFive Lines of Code34,90 €
- Andreas KühnelC# 8 mit Visual Studio 201949,90 €
-
-
-
Eine Blockchain ist ein distributed Ledger, dessen Datensätze manipulationssicher gespeichert werden. Was sich zunächst unspektakulär anhört, hat das Potenzial, die Softwareentwicklung verteilter Systeme grundlegend zu verändern: Ihr Einsatz in der Kryptowährung Bitcoin macht es vor.
Lernen Sie die Idee hinter der Blockchain kennen und erfahren Sie, wie Ihre technische Umsetzung funktioniert. Dieser praxisorientierte Guide erklärt Ihnen von grundlegenden Konzepten über die verschiedenen Konsensmodelle und Datenstrukturen bis zur individuellen Implementierung alles, was Sie über die Blockchain wissen müssen.
Aus dem Inhalt:
Die Blockchain: Geschichte, Hintergründe und PotenzialDie Basics: Transaktionen, Kryptographie, Konsensmodelle und SicherheitDie eigene Blockchain erstellen: Datenstrukturen, API, Synchronisation und VerifikationSmart-Contract-Programmierung mit Solidity: Anwendungsbeispiele auf der Ethereum-BlockchainSmart Contracts testen, debuggen, absichern und administrierenDistributed Apps (dApps) entwickelnAlternative Technologien: Ripple, NEO, IOTA und mehr
Lernen Sie die Idee hinter der Blockchain kennen und erfahren Sie, wie Ihre technische Umsetzung funktioniert. Dieser praxisorientierte Guide erklärt Ihnen von grundlegenden Konzepten über die verschiedenen Konsensmodelle und Datenstrukturen bis zur individuellen Implementierung alles, was Sie über die Blockchain wissen müssen.
Aus dem Inhalt:
Die Blockchain: Geschichte, Hintergründe und PotenzialDie Basics: Transaktionen, Kryptographie, Konsensmodelle und SicherheitDie eigene Blockchain erstellen: Datenstrukturen, API, Synchronisation und VerifikationSmart-Contract-Programmierung mit Solidity: Anwendungsbeispiele auf der Ethereum-BlockchainSmart Contracts testen, debuggen, absichern und administrierenDistributed Apps (dApps) entwickelnAlternative Technologien: Ripple, NEO, IOTA und mehr
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06390
- Seitenzahl: 565
- Erscheinungstermin: 22. Februar 2019
- Deutsch
- Abmessung: 251mm x 185mm x 38mm
- Gewicht: 1176g
- ISBN-13: 9783836263900
- ISBN-10: 3836263904
- Artikelnr.: 54420589
- Herstellerkennzeichnung
- Rheinwerk Verlag GmbH
- Rheinwerkallee 4
- 53227 Bonn
- Info@rheinwerk-verlag.de
- +49228421500
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06390
- Seitenzahl: 565
- Erscheinungstermin: 22. Februar 2019
- Deutsch
- Abmessung: 251mm x 185mm x 38mm
- Gewicht: 1176g
- ISBN-13: 9783836263900
- ISBN-10: 3836263904
- Artikelnr.: 54420589
- Herstellerkennzeichnung
- Rheinwerk Verlag GmbH
- Rheinwerkallee 4
- 53227 Bonn
- Info@rheinwerk-verlag.de
- +49228421500
Andreas Schütz hat Informatik studiert und begeistert sich bereits seit vielen Jahren für die Blockchain-Technologie. Neben seiner Promotion gibt er auf Vorträgen, Seminaren und Online-Artikeln Fachleuten und Laien Einblicke in die Blockchain. Außerdem berät er gemeinsam mit Tobias Fertig Unternehmen, wie sie die Blockchain sinnvoll einsetzen können.
Materialien zum Buch ... 16
1. Vorwort ... 17
1.1 ... Vorwort der Autoren ... 17
1.2 ... Geleitwort ... 19
2. Einführung ... 21
2.1 ... Was ist die Blockchain? ... 21
2.2 ... Geschichte der Blockchain ... 29
2.3 ... Anwendung der Blockchain-Technologie ... 43
2.4 ... Zusammenfassung ... 65
3. Die Basics: So funktioniert eine Blockchain ... 67
3.1 ... Kryptografische Grundlagen ... 67
3.2 ... Die Blockchain ... 80
3.3 ... Die Blockchain 2.0 ... 112
3.4 ... Alternative Konsensmodelle ... 144
3.5 ... Sicherheit der Blockchain ... 153
3.6 ... Zusammenfassung ... 164
4. Eine eigene Blockchain erstellen -- Grundfunktionen ... 167
4.1 ... Transaktionen -- die kleinste Einheit ... 169
4.2 ... Blockheader -- der Inhalt der Block-ID ... 171
4.3 ... Die Blöcke verketten ... 173
4.4 ... Die Blockchain auf die Festplatte speichern ... 175
4.5 ... Der Genesis Block -- die Entstehung einer Blockchain ... 177
4.6 ... Ausstehende Transaktionen ... 178
4.7 ... Die Difficulty einer Blockchain ... 180
4.8 ... Zeit zu schürfen -- der Miner Thread ... 182
4.9 ... Zusammenfassung und Ausblick ... 186
5. Die Blockchain an eine Web-API anbinden ... 189
5.1 ... Die Service-Endpunkte der Web-API ... 190
5.2 ... Deployment der Web-API ... 196
5.3 ... Transaktionen per Webinterface versenden ... 200
5.4 ... Einen eigenen Block-Explorer implementieren ... 204
5.5 ... Zusammenfassung und Ausblick ... 211
6. Ein Peer-to-Peer-Netzwerk aufbauen ... 215
6.1 ... Das Peer-to-Peer-Framework konfigurieren ... 216
6.2 ... Transaktionen im Netzwerk verteilen ... 219
6.3 ... Blöcke im Netzwerk verteilen ... 222
6.4 ... Mehrere Chains parallel verarbeiten ... 224
6.5 ... Neue Knoten im Netzwerk aufnehmen ... 228
6.6 ... Zusammenfassung und Ausblick ... 231
7. Accounts und Guthaben einführen ... 233
7.1 ... Die Miner belohnen ... 234
7.2 ... Die Accounts verwalten ... 238
7.3 ... Die Accounts integrieren ... 242
7.4 ... Die Accounts im Block-Explorer einbinden ... 243
7.5 ... Zusammenfassung und Ausblick ... 249
8. Verifikation und Optimierungen umsetzen ... 251
8.1 ... Transaktionen signieren ... 251
8.2 ... Die Rahmenbedingungen erzwingen ... 255
8.3 ... Guthaben sperren und entsperren ... 257
8.4 ... Mit dem Merkle-Baum die Performance optimieren ... 260
8.5 ... Den Public Key verkürzen zum Sparen von Speicher ... 263
8.6 ... Startguthaben über den Genesis Block ermöglichen ... 264
8.7 ... Weitere Optimierungen bedenken ... 265
8.8 ... Zusammenfassung und Ausblick ... 267
9. Smart Contract Development ... 269
9.1 ... Einführung ... 270
9.2 ... Einfache Smart Contracts bei Bitcoin ... 272
9.3 ... Anspruchsvolle Smart Contracts ... 280
9.4 ... Zusammenfassung ... 283
10. Solidity -- Die Grundlagen verstehen ... 285
10.1 ... Was ist Solidity? ... 285
10.2 ... Elemente und Speicherbereiche eines Contracts ... 291
10.3 ... Verfügbare Datentypen ... 300
10.4 ... Zusätzliche Features von Solidity ... 312
10.5 ... Vererbungshierarchien von Smart Contracts erstellen ... 314
10.6 ... Libraries erstellen und verwenden ... 317
10.7 ... Zusammenfassung und Ausblick ... 321
11. Solidity -- Details und Herausforderungen ... 325
11.1 ... Wichtige Details zu Funktionen ... 326
11.2 ... Gas verstehen und optimieren ... 330
11.3 ... Den richtigen Exception-Mechanismus wählen ... 333
11.4 ... Solidity mit Assembly erweitern ... 335
11.5 ... Leicht verständliche Contracts entwickeln ... 341
11.6 ... Updatefähige Contracts entwickeln ... 343
11.7 ... Warum kein Zufallsgenerator sicher ist ... 354
11.8 ... Daten von außerhalb der Blockchain vertrauen ... 356
11.9 ... Zeitabhängigkeiten einbauen ... 357
11.10 ... Zusammenfassung und Ausblick ... 359
12. Smart Contracts testen und debuggen ... 363
12.1 ... Contracts mit Remix testen ... 364
12.2 ... Debugging mit Remix ... 366
12.3 ... Einführung in das Truffle Framework ... 368
12.4 ... Unittests mit Truffle implementieren ... 372
12.5 ... Integrationstests mit Truffle implementieren ... 377
12.6 ... Mit dem Truffle Framework debuggen ... 381
12.7 ... Zusammenfassung und Ausblick ... 382
13. Smart Contracts schützen und absichern ... 385
13.1 ... Allgemeine Sicherheitsempfehlungen ... 385
13.2 ... Ether in Contracts schmuggeln ... 388
13.3 ... Arithmetische Overflows und Underflows ... 391
13.4 ... Mit DelegateCalls den Zustand manipulieren ... 393
13.5 ... Reentrancy-Angriffe durchführen ... 396
13.6 ... Denial-of-Service-Angriffe durchführen ... 399
13.7 ... Gas-Siphoning-Angriffe beachten ... 401
13.8 ... Zusammenfassung und Ausblick ... 404
14. Smart Contracts deployen und managen ... 407
14.1 ... MetaMask einrichten und Accounts verwenden ... 408
14.2 ... Contracts mit Remix und MetaMask deployen ... 409
14.3 ... Contracts mit dem Truffle Framework deployen ... 411
14.4 ... Code auf Etherscan veröffentlichen ... 418
14.5 ... Einen eigenen Knoten aufsetzen und verwenden ... 420
14.6 ... Contracts manuell kompilieren, linken und deployen ... 422
14.7 ... Contracts nach dem Deployment managen ... 424
14.8 ... Zusammenfassung und Ausblick ... 426
15. Standards, Libraries und Design Patterns ... 429
15.1 ... ERC-173 Contract Ownership Standard ... 429
15.2 ... ERC-165 Standard Interface Detection ... 432
15.3 ... ERC-20 Token Standard ... 436
15.4 ... ERC-721 Non-Fungible Token Standard ... 440
15.5 ... Die Libraries von OpenZeppelin nutzen ... 445
15.6 ... Design Patterns verwenden ... 446
15.7 ... Zusammenfassung und Ausblick ... 450
16. Decentralized Applications entwickeln ... 453
16.1 ... Was ist eine Decentralized Application? ... 453
16.2 ... Der Entwicklungsprozess einer DApp ... 455
16.3 ... Das Backend Ihrer ersten DApp entwickeln ... 457
16.4 ... Das Frontend Ihrer ersten DApp entwickeln ... 460
16.5 ... Ihre erste DApp auf Swarm deployen ... 463
16.6 ... ENS-Domains für die eigene DApp einrichten ... 467
16.7 ... Zusammenfassung und Ausblick ... 471
17. Ihre erste DApp mit Drizzle zur DAO erweitern ... 475
17.1 ... Was ist Drizzle? ... 476
17.2 ... Was ist eine DAO, und was wird benötigt? ... 478
17.3 ... Die DApp, um einen Governance Contract erweitern ... 479
17.4 ... Das Frontend mit Drizzle und React umsetzen ... 480
17.5 ... Die Drizzle-DApp zentral oder dezentral deployen ... 492
17.6 ... Zusammenfassung und Ausblick ... 494
18. Dezentrale Autonome Initiale Coin Offerings umsetzen ... 497
18.1 ... Was ist ein DAICO? ... 497
18.2 ... Die Contracts eines DAICO implementieren ... 501
18.3 ... Die passende DApp zu Ihrem DAICO entwerfen ... 510
18.4 ... Zusammenfassung und Ausblick ... 517
19. Supply Chains mit Smart Contracts ergänzen ... 519
19.1 ... Ideen, Visionen und Problemlösungen ... 520
19.2 ... Assets mit dem ERC-721 Token Standard tracken ... 521
19.3 ... web3j: die Web3 Java Ethereum DApp API ... 522
19.4 ... Ein Command Line Interface für Asset Tracker bauen ... 527
19.5 ... Zusammenfassung und Ausblick ... 532
20. Ausblick: Zukunftstechnologien ... 535
20.1 ... Vyper -- Smart Contracts für jedermann? ... 535
20.2 ... NEO -- der chinesische Klon von Ethereum ... 539
20.3 ... EOS -- der stärkste Wettbewerber zu Ethereum? ... 541
20.4 ... Ripple -- die Zukunft der Banken? ... 544
20.5 ... IOTA -- das dezentrale Internet der Dinge ... 548
20.6 ... Zusammenfassung ... 554
Literaturverzeichnis ... 557
Index ... 559
1. Vorwort ... 17
1.1 ... Vorwort der Autoren ... 17
1.2 ... Geleitwort ... 19
2. Einführung ... 21
2.1 ... Was ist die Blockchain? ... 21
2.2 ... Geschichte der Blockchain ... 29
2.3 ... Anwendung der Blockchain-Technologie ... 43
2.4 ... Zusammenfassung ... 65
3. Die Basics: So funktioniert eine Blockchain ... 67
3.1 ... Kryptografische Grundlagen ... 67
3.2 ... Die Blockchain ... 80
3.3 ... Die Blockchain 2.0 ... 112
3.4 ... Alternative Konsensmodelle ... 144
3.5 ... Sicherheit der Blockchain ... 153
3.6 ... Zusammenfassung ... 164
4. Eine eigene Blockchain erstellen -- Grundfunktionen ... 167
4.1 ... Transaktionen -- die kleinste Einheit ... 169
4.2 ... Blockheader -- der Inhalt der Block-ID ... 171
4.3 ... Die Blöcke verketten ... 173
4.4 ... Die Blockchain auf die Festplatte speichern ... 175
4.5 ... Der Genesis Block -- die Entstehung einer Blockchain ... 177
4.6 ... Ausstehende Transaktionen ... 178
4.7 ... Die Difficulty einer Blockchain ... 180
4.8 ... Zeit zu schürfen -- der Miner Thread ... 182
4.9 ... Zusammenfassung und Ausblick ... 186
5. Die Blockchain an eine Web-API anbinden ... 189
5.1 ... Die Service-Endpunkte der Web-API ... 190
5.2 ... Deployment der Web-API ... 196
5.3 ... Transaktionen per Webinterface versenden ... 200
5.4 ... Einen eigenen Block-Explorer implementieren ... 204
5.5 ... Zusammenfassung und Ausblick ... 211
6. Ein Peer-to-Peer-Netzwerk aufbauen ... 215
6.1 ... Das Peer-to-Peer-Framework konfigurieren ... 216
6.2 ... Transaktionen im Netzwerk verteilen ... 219
6.3 ... Blöcke im Netzwerk verteilen ... 222
6.4 ... Mehrere Chains parallel verarbeiten ... 224
6.5 ... Neue Knoten im Netzwerk aufnehmen ... 228
6.6 ... Zusammenfassung und Ausblick ... 231
7. Accounts und Guthaben einführen ... 233
7.1 ... Die Miner belohnen ... 234
7.2 ... Die Accounts verwalten ... 238
7.3 ... Die Accounts integrieren ... 242
7.4 ... Die Accounts im Block-Explorer einbinden ... 243
7.5 ... Zusammenfassung und Ausblick ... 249
8. Verifikation und Optimierungen umsetzen ... 251
8.1 ... Transaktionen signieren ... 251
8.2 ... Die Rahmenbedingungen erzwingen ... 255
8.3 ... Guthaben sperren und entsperren ... 257
8.4 ... Mit dem Merkle-Baum die Performance optimieren ... 260
8.5 ... Den Public Key verkürzen zum Sparen von Speicher ... 263
8.6 ... Startguthaben über den Genesis Block ermöglichen ... 264
8.7 ... Weitere Optimierungen bedenken ... 265
8.8 ... Zusammenfassung und Ausblick ... 267
9. Smart Contract Development ... 269
9.1 ... Einführung ... 270
9.2 ... Einfache Smart Contracts bei Bitcoin ... 272
9.3 ... Anspruchsvolle Smart Contracts ... 280
9.4 ... Zusammenfassung ... 283
10. Solidity -- Die Grundlagen verstehen ... 285
10.1 ... Was ist Solidity? ... 285
10.2 ... Elemente und Speicherbereiche eines Contracts ... 291
10.3 ... Verfügbare Datentypen ... 300
10.4 ... Zusätzliche Features von Solidity ... 312
10.5 ... Vererbungshierarchien von Smart Contracts erstellen ... 314
10.6 ... Libraries erstellen und verwenden ... 317
10.7 ... Zusammenfassung und Ausblick ... 321
11. Solidity -- Details und Herausforderungen ... 325
11.1 ... Wichtige Details zu Funktionen ... 326
11.2 ... Gas verstehen und optimieren ... 330
11.3 ... Den richtigen Exception-Mechanismus wählen ... 333
11.4 ... Solidity mit Assembly erweitern ... 335
11.5 ... Leicht verständliche Contracts entwickeln ... 341
11.6 ... Updatefähige Contracts entwickeln ... 343
11.7 ... Warum kein Zufallsgenerator sicher ist ... 354
11.8 ... Daten von außerhalb der Blockchain vertrauen ... 356
11.9 ... Zeitabhängigkeiten einbauen ... 357
11.10 ... Zusammenfassung und Ausblick ... 359
12. Smart Contracts testen und debuggen ... 363
12.1 ... Contracts mit Remix testen ... 364
12.2 ... Debugging mit Remix ... 366
12.3 ... Einführung in das Truffle Framework ... 368
12.4 ... Unittests mit Truffle implementieren ... 372
12.5 ... Integrationstests mit Truffle implementieren ... 377
12.6 ... Mit dem Truffle Framework debuggen ... 381
12.7 ... Zusammenfassung und Ausblick ... 382
13. Smart Contracts schützen und absichern ... 385
13.1 ... Allgemeine Sicherheitsempfehlungen ... 385
13.2 ... Ether in Contracts schmuggeln ... 388
13.3 ... Arithmetische Overflows und Underflows ... 391
13.4 ... Mit DelegateCalls den Zustand manipulieren ... 393
13.5 ... Reentrancy-Angriffe durchführen ... 396
13.6 ... Denial-of-Service-Angriffe durchführen ... 399
13.7 ... Gas-Siphoning-Angriffe beachten ... 401
13.8 ... Zusammenfassung und Ausblick ... 404
14. Smart Contracts deployen und managen ... 407
14.1 ... MetaMask einrichten und Accounts verwenden ... 408
14.2 ... Contracts mit Remix und MetaMask deployen ... 409
14.3 ... Contracts mit dem Truffle Framework deployen ... 411
14.4 ... Code auf Etherscan veröffentlichen ... 418
14.5 ... Einen eigenen Knoten aufsetzen und verwenden ... 420
14.6 ... Contracts manuell kompilieren, linken und deployen ... 422
14.7 ... Contracts nach dem Deployment managen ... 424
14.8 ... Zusammenfassung und Ausblick ... 426
15. Standards, Libraries und Design Patterns ... 429
15.1 ... ERC-173 Contract Ownership Standard ... 429
15.2 ... ERC-165 Standard Interface Detection ... 432
15.3 ... ERC-20 Token Standard ... 436
15.4 ... ERC-721 Non-Fungible Token Standard ... 440
15.5 ... Die Libraries von OpenZeppelin nutzen ... 445
15.6 ... Design Patterns verwenden ... 446
15.7 ... Zusammenfassung und Ausblick ... 450
16. Decentralized Applications entwickeln ... 453
16.1 ... Was ist eine Decentralized Application? ... 453
16.2 ... Der Entwicklungsprozess einer DApp ... 455
16.3 ... Das Backend Ihrer ersten DApp entwickeln ... 457
16.4 ... Das Frontend Ihrer ersten DApp entwickeln ... 460
16.5 ... Ihre erste DApp auf Swarm deployen ... 463
16.6 ... ENS-Domains für die eigene DApp einrichten ... 467
16.7 ... Zusammenfassung und Ausblick ... 471
17. Ihre erste DApp mit Drizzle zur DAO erweitern ... 475
17.1 ... Was ist Drizzle? ... 476
17.2 ... Was ist eine DAO, und was wird benötigt? ... 478
17.3 ... Die DApp, um einen Governance Contract erweitern ... 479
17.4 ... Das Frontend mit Drizzle und React umsetzen ... 480
17.5 ... Die Drizzle-DApp zentral oder dezentral deployen ... 492
17.6 ... Zusammenfassung und Ausblick ... 494
18. Dezentrale Autonome Initiale Coin Offerings umsetzen ... 497
18.1 ... Was ist ein DAICO? ... 497
18.2 ... Die Contracts eines DAICO implementieren ... 501
18.3 ... Die passende DApp zu Ihrem DAICO entwerfen ... 510
18.4 ... Zusammenfassung und Ausblick ... 517
19. Supply Chains mit Smart Contracts ergänzen ... 519
19.1 ... Ideen, Visionen und Problemlösungen ... 520
19.2 ... Assets mit dem ERC-721 Token Standard tracken ... 521
19.3 ... web3j: die Web3 Java Ethereum DApp API ... 522
19.4 ... Ein Command Line Interface für Asset Tracker bauen ... 527
19.5 ... Zusammenfassung und Ausblick ... 532
20. Ausblick: Zukunftstechnologien ... 535
20.1 ... Vyper -- Smart Contracts für jedermann? ... 535
20.2 ... NEO -- der chinesische Klon von Ethereum ... 539
20.3 ... EOS -- der stärkste Wettbewerber zu Ethereum? ... 541
20.4 ... Ripple -- die Zukunft der Banken? ... 544
20.5 ... IOTA -- das dezentrale Internet der Dinge ... 548
20.6 ... Zusammenfassung ... 554
Literaturverzeichnis ... 557
Index ... 559
Materialien zum Buch ... 16
1. Vorwort ... 17
1.1 ... Vorwort der Autoren ... 17
1.2 ... Geleitwort ... 19
2. Einführung ... 21
2.1 ... Was ist die Blockchain? ... 21
2.2 ... Geschichte der Blockchain ... 29
2.3 ... Anwendung der Blockchain-Technologie ... 43
2.4 ... Zusammenfassung ... 65
3. Die Basics: So funktioniert eine Blockchain ... 67
3.1 ... Kryptografische Grundlagen ... 67
3.2 ... Die Blockchain ... 80
3.3 ... Die Blockchain 2.0 ... 112
3.4 ... Alternative Konsensmodelle ... 144
3.5 ... Sicherheit der Blockchain ... 153
3.6 ... Zusammenfassung ... 164
4. Eine eigene Blockchain erstellen -- Grundfunktionen ... 167
4.1 ... Transaktionen -- die kleinste Einheit ... 169
4.2 ... Blockheader -- der Inhalt der Block-ID ... 171
4.3 ... Die Blöcke verketten ... 173
4.4 ... Die Blockchain auf die Festplatte speichern ... 175
4.5 ... Der Genesis Block -- die Entstehung einer Blockchain ... 177
4.6 ... Ausstehende Transaktionen ... 178
4.7 ... Die Difficulty einer Blockchain ... 180
4.8 ... Zeit zu schürfen -- der Miner Thread ... 182
4.9 ... Zusammenfassung und Ausblick ... 186
5. Die Blockchain an eine Web-API anbinden ... 189
5.1 ... Die Service-Endpunkte der Web-API ... 190
5.2 ... Deployment der Web-API ... 196
5.3 ... Transaktionen per Webinterface versenden ... 200
5.4 ... Einen eigenen Block-Explorer implementieren ... 204
5.5 ... Zusammenfassung und Ausblick ... 211
6. Ein Peer-to-Peer-Netzwerk aufbauen ... 215
6.1 ... Das Peer-to-Peer-Framework konfigurieren ... 216
6.2 ... Transaktionen im Netzwerk verteilen ... 219
6.3 ... Blöcke im Netzwerk verteilen ... 222
6.4 ... Mehrere Chains parallel verarbeiten ... 224
6.5 ... Neue Knoten im Netzwerk aufnehmen ... 228
6.6 ... Zusammenfassung und Ausblick ... 231
7. Accounts und Guthaben einführen ... 233
7.1 ... Die Miner belohnen ... 234
7.2 ... Die Accounts verwalten ... 238
7.3 ... Die Accounts integrieren ... 242
7.4 ... Die Accounts im Block-Explorer einbinden ... 243
7.5 ... Zusammenfassung und Ausblick ... 249
8. Verifikation und Optimierungen umsetzen ... 251
8.1 ... Transaktionen signieren ... 251
8.2 ... Die Rahmenbedingungen erzwingen ... 255
8.3 ... Guthaben sperren und entsperren ... 257
8.4 ... Mit dem Merkle-Baum die Performance optimieren ... 260
8.5 ... Den Public Key verkürzen zum Sparen von Speicher ... 263
8.6 ... Startguthaben über den Genesis Block ermöglichen ... 264
8.7 ... Weitere Optimierungen bedenken ... 265
8.8 ... Zusammenfassung und Ausblick ... 267
9. Smart Contract Development ... 269
9.1 ... Einführung ... 270
9.2 ... Einfache Smart Contracts bei Bitcoin ... 272
9.3 ... Anspruchsvolle Smart Contracts ... 280
9.4 ... Zusammenfassung ... 283
10. Solidity -- Die Grundlagen verstehen ... 285
10.1 ... Was ist Solidity? ... 285
10.2 ... Elemente und Speicherbereiche eines Contracts ... 291
10.3 ... Verfügbare Datentypen ... 300
10.4 ... Zusätzliche Features von Solidity ... 312
10.5 ... Vererbungshierarchien von Smart Contracts erstellen ... 314
10.6 ... Libraries erstellen und verwenden ... 317
10.7 ... Zusammenfassung und Ausblick ... 321
11. Solidity -- Details und Herausforderungen ... 325
11.1 ... Wichtige Details zu Funktionen ... 326
11.2 ... Gas verstehen und optimieren ... 330
11.3 ... Den richtigen Exception-Mechanismus wählen ... 333
11.4 ... Solidity mit Assembly erweitern ... 335
11.5 ... Leicht verständliche Contracts entwickeln ... 341
11.6 ... Updatefähige Contracts entwickeln ... 343
11.7 ... Warum kein Zufallsgenerator sicher ist ... 354
11.8 ... Daten von außerhalb der Blockchain vertrauen ... 356
11.9 ... Zeitabhängigkeiten einbauen ... 357
11.10 ... Zusammenfassung und Ausblick ... 359
12. Smart Contracts testen und debuggen ... 363
12.1 ... Contracts mit Remix testen ... 364
12.2 ... Debugging mit Remix ... 366
12.3 ... Einführung in das Truffle Framework ... 368
12.4 ... Unittests mit Truffle implementieren ... 372
12.5 ... Integrationstests mit Truffle implementieren ... 377
12.6 ... Mit dem Truffle Framework debuggen ... 381
12.7 ... Zusammenfassung und Ausblick ... 382
13. Smart Contracts schützen und absichern ... 385
13.1 ... Allgemeine Sicherheitsempfehlungen ... 385
13.2 ... Ether in Contracts schmuggeln ... 388
13.3 ... Arithmetische Overflows und Underflows ... 391
13.4 ... Mit DelegateCalls den Zustand manipulieren ... 393
13.5 ... Reentrancy-Angriffe durchführen ... 396
13.6 ... Denial-of-Service-Angriffe durchführen ... 399
13.7 ... Gas-Siphoning-Angriffe beachten ... 401
13.8 ... Zusammenfassung und Ausblick ... 404
14. Smart Contracts deployen und managen ... 407
14.1 ... MetaMask einrichten und Accounts verwenden ... 408
14.2 ... Contracts mit Remix und MetaMask deployen ... 409
14.3 ... Contracts mit dem Truffle Framework deployen ... 411
14.4 ... Code auf Etherscan veröffentlichen ... 418
14.5 ... Einen eigenen Knoten aufsetzen und verwenden ... 420
14.6 ... Contracts manuell kompilieren, linken und deployen ... 422
14.7 ... Contracts nach dem Deployment managen ... 424
14.8 ... Zusammenfassung und Ausblick ... 426
15. Standards, Libraries und Design Patterns ... 429
15.1 ... ERC-173 Contract Ownership Standard ... 429
15.2 ... ERC-165 Standard Interface Detection ... 432
15.3 ... ERC-20 Token Standard ... 436
15.4 ... ERC-721 Non-Fungible Token Standard ... 440
15.5 ... Die Libraries von OpenZeppelin nutzen ... 445
15.6 ... Design Patterns verwenden ... 446
15.7 ... Zusammenfassung und Ausblick ... 450
16. Decentralized Applications entwickeln ... 453
16.1 ... Was ist eine Decentralized Application? ... 453
16.2 ... Der Entwicklungsprozess einer DApp ... 455
16.3 ... Das Backend Ihrer ersten DApp entwickeln ... 457
16.4 ... Das Frontend Ihrer ersten DApp entwickeln ... 460
16.5 ... Ihre erste DApp auf Swarm deployen ... 463
16.6 ... ENS-Domains für die eigene DApp einrichten ... 467
16.7 ... Zusammenfassung und Ausblick ... 471
17. Ihre erste DApp mit Drizzle zur DAO erweitern ... 475
17.1 ... Was ist Drizzle? ... 476
17.2 ... Was ist eine DAO, und was wird benötigt? ... 478
17.3 ... Die DApp, um einen Governance Contract erweitern ... 479
17.4 ... Das Frontend mit Drizzle und React umsetzen ... 480
17.5 ... Die Drizzle-DApp zentral oder dezentral deployen ... 492
17.6 ... Zusammenfassung und Ausblick ... 494
18. Dezentrale Autonome Initiale Coin Offerings umsetzen ... 497
18.1 ... Was ist ein DAICO? ... 497
18.2 ... Die Contracts eines DAICO implementieren ... 501
18.3 ... Die passende DApp zu Ihrem DAICO entwerfen ... 510
18.4 ... Zusammenfassung und Ausblick ... 517
19. Supply Chains mit Smart Contracts ergänzen ... 519
19.1 ... Ideen, Visionen und Problemlösungen ... 520
19.2 ... Assets mit dem ERC-721 Token Standard tracken ... 521
19.3 ... web3j: die Web3 Java Ethereum DApp API ... 522
19.4 ... Ein Command Line Interface für Asset Tracker bauen ... 527
19.5 ... Zusammenfassung und Ausblick ... 532
20. Ausblick: Zukunftstechnologien ... 535
20.1 ... Vyper -- Smart Contracts für jedermann? ... 535
20.2 ... NEO -- der chinesische Klon von Ethereum ... 539
20.3 ... EOS -- der stärkste Wettbewerber zu Ethereum? ... 541
20.4 ... Ripple -- die Zukunft der Banken? ... 544
20.5 ... IOTA -- das dezentrale Internet der Dinge ... 548
20.6 ... Zusammenfassung ... 554
Literaturverzeichnis ... 557
Index ... 559
1. Vorwort ... 17
1.1 ... Vorwort der Autoren ... 17
1.2 ... Geleitwort ... 19
2. Einführung ... 21
2.1 ... Was ist die Blockchain? ... 21
2.2 ... Geschichte der Blockchain ... 29
2.3 ... Anwendung der Blockchain-Technologie ... 43
2.4 ... Zusammenfassung ... 65
3. Die Basics: So funktioniert eine Blockchain ... 67
3.1 ... Kryptografische Grundlagen ... 67
3.2 ... Die Blockchain ... 80
3.3 ... Die Blockchain 2.0 ... 112
3.4 ... Alternative Konsensmodelle ... 144
3.5 ... Sicherheit der Blockchain ... 153
3.6 ... Zusammenfassung ... 164
4. Eine eigene Blockchain erstellen -- Grundfunktionen ... 167
4.1 ... Transaktionen -- die kleinste Einheit ... 169
4.2 ... Blockheader -- der Inhalt der Block-ID ... 171
4.3 ... Die Blöcke verketten ... 173
4.4 ... Die Blockchain auf die Festplatte speichern ... 175
4.5 ... Der Genesis Block -- die Entstehung einer Blockchain ... 177
4.6 ... Ausstehende Transaktionen ... 178
4.7 ... Die Difficulty einer Blockchain ... 180
4.8 ... Zeit zu schürfen -- der Miner Thread ... 182
4.9 ... Zusammenfassung und Ausblick ... 186
5. Die Blockchain an eine Web-API anbinden ... 189
5.1 ... Die Service-Endpunkte der Web-API ... 190
5.2 ... Deployment der Web-API ... 196
5.3 ... Transaktionen per Webinterface versenden ... 200
5.4 ... Einen eigenen Block-Explorer implementieren ... 204
5.5 ... Zusammenfassung und Ausblick ... 211
6. Ein Peer-to-Peer-Netzwerk aufbauen ... 215
6.1 ... Das Peer-to-Peer-Framework konfigurieren ... 216
6.2 ... Transaktionen im Netzwerk verteilen ... 219
6.3 ... Blöcke im Netzwerk verteilen ... 222
6.4 ... Mehrere Chains parallel verarbeiten ... 224
6.5 ... Neue Knoten im Netzwerk aufnehmen ... 228
6.6 ... Zusammenfassung und Ausblick ... 231
7. Accounts und Guthaben einführen ... 233
7.1 ... Die Miner belohnen ... 234
7.2 ... Die Accounts verwalten ... 238
7.3 ... Die Accounts integrieren ... 242
7.4 ... Die Accounts im Block-Explorer einbinden ... 243
7.5 ... Zusammenfassung und Ausblick ... 249
8. Verifikation und Optimierungen umsetzen ... 251
8.1 ... Transaktionen signieren ... 251
8.2 ... Die Rahmenbedingungen erzwingen ... 255
8.3 ... Guthaben sperren und entsperren ... 257
8.4 ... Mit dem Merkle-Baum die Performance optimieren ... 260
8.5 ... Den Public Key verkürzen zum Sparen von Speicher ... 263
8.6 ... Startguthaben über den Genesis Block ermöglichen ... 264
8.7 ... Weitere Optimierungen bedenken ... 265
8.8 ... Zusammenfassung und Ausblick ... 267
9. Smart Contract Development ... 269
9.1 ... Einführung ... 270
9.2 ... Einfache Smart Contracts bei Bitcoin ... 272
9.3 ... Anspruchsvolle Smart Contracts ... 280
9.4 ... Zusammenfassung ... 283
10. Solidity -- Die Grundlagen verstehen ... 285
10.1 ... Was ist Solidity? ... 285
10.2 ... Elemente und Speicherbereiche eines Contracts ... 291
10.3 ... Verfügbare Datentypen ... 300
10.4 ... Zusätzliche Features von Solidity ... 312
10.5 ... Vererbungshierarchien von Smart Contracts erstellen ... 314
10.6 ... Libraries erstellen und verwenden ... 317
10.7 ... Zusammenfassung und Ausblick ... 321
11. Solidity -- Details und Herausforderungen ... 325
11.1 ... Wichtige Details zu Funktionen ... 326
11.2 ... Gas verstehen und optimieren ... 330
11.3 ... Den richtigen Exception-Mechanismus wählen ... 333
11.4 ... Solidity mit Assembly erweitern ... 335
11.5 ... Leicht verständliche Contracts entwickeln ... 341
11.6 ... Updatefähige Contracts entwickeln ... 343
11.7 ... Warum kein Zufallsgenerator sicher ist ... 354
11.8 ... Daten von außerhalb der Blockchain vertrauen ... 356
11.9 ... Zeitabhängigkeiten einbauen ... 357
11.10 ... Zusammenfassung und Ausblick ... 359
12. Smart Contracts testen und debuggen ... 363
12.1 ... Contracts mit Remix testen ... 364
12.2 ... Debugging mit Remix ... 366
12.3 ... Einführung in das Truffle Framework ... 368
12.4 ... Unittests mit Truffle implementieren ... 372
12.5 ... Integrationstests mit Truffle implementieren ... 377
12.6 ... Mit dem Truffle Framework debuggen ... 381
12.7 ... Zusammenfassung und Ausblick ... 382
13. Smart Contracts schützen und absichern ... 385
13.1 ... Allgemeine Sicherheitsempfehlungen ... 385
13.2 ... Ether in Contracts schmuggeln ... 388
13.3 ... Arithmetische Overflows und Underflows ... 391
13.4 ... Mit DelegateCalls den Zustand manipulieren ... 393
13.5 ... Reentrancy-Angriffe durchführen ... 396
13.6 ... Denial-of-Service-Angriffe durchführen ... 399
13.7 ... Gas-Siphoning-Angriffe beachten ... 401
13.8 ... Zusammenfassung und Ausblick ... 404
14. Smart Contracts deployen und managen ... 407
14.1 ... MetaMask einrichten und Accounts verwenden ... 408
14.2 ... Contracts mit Remix und MetaMask deployen ... 409
14.3 ... Contracts mit dem Truffle Framework deployen ... 411
14.4 ... Code auf Etherscan veröffentlichen ... 418
14.5 ... Einen eigenen Knoten aufsetzen und verwenden ... 420
14.6 ... Contracts manuell kompilieren, linken und deployen ... 422
14.7 ... Contracts nach dem Deployment managen ... 424
14.8 ... Zusammenfassung und Ausblick ... 426
15. Standards, Libraries und Design Patterns ... 429
15.1 ... ERC-173 Contract Ownership Standard ... 429
15.2 ... ERC-165 Standard Interface Detection ... 432
15.3 ... ERC-20 Token Standard ... 436
15.4 ... ERC-721 Non-Fungible Token Standard ... 440
15.5 ... Die Libraries von OpenZeppelin nutzen ... 445
15.6 ... Design Patterns verwenden ... 446
15.7 ... Zusammenfassung und Ausblick ... 450
16. Decentralized Applications entwickeln ... 453
16.1 ... Was ist eine Decentralized Application? ... 453
16.2 ... Der Entwicklungsprozess einer DApp ... 455
16.3 ... Das Backend Ihrer ersten DApp entwickeln ... 457
16.4 ... Das Frontend Ihrer ersten DApp entwickeln ... 460
16.5 ... Ihre erste DApp auf Swarm deployen ... 463
16.6 ... ENS-Domains für die eigene DApp einrichten ... 467
16.7 ... Zusammenfassung und Ausblick ... 471
17. Ihre erste DApp mit Drizzle zur DAO erweitern ... 475
17.1 ... Was ist Drizzle? ... 476
17.2 ... Was ist eine DAO, und was wird benötigt? ... 478
17.3 ... Die DApp, um einen Governance Contract erweitern ... 479
17.4 ... Das Frontend mit Drizzle und React umsetzen ... 480
17.5 ... Die Drizzle-DApp zentral oder dezentral deployen ... 492
17.6 ... Zusammenfassung und Ausblick ... 494
18. Dezentrale Autonome Initiale Coin Offerings umsetzen ... 497
18.1 ... Was ist ein DAICO? ... 497
18.2 ... Die Contracts eines DAICO implementieren ... 501
18.3 ... Die passende DApp zu Ihrem DAICO entwerfen ... 510
18.4 ... Zusammenfassung und Ausblick ... 517
19. Supply Chains mit Smart Contracts ergänzen ... 519
19.1 ... Ideen, Visionen und Problemlösungen ... 520
19.2 ... Assets mit dem ERC-721 Token Standard tracken ... 521
19.3 ... web3j: die Web3 Java Ethereum DApp API ... 522
19.4 ... Ein Command Line Interface für Asset Tracker bauen ... 527
19.5 ... Zusammenfassung und Ausblick ... 532
20. Ausblick: Zukunftstechnologien ... 535
20.1 ... Vyper -- Smart Contracts für jedermann? ... 535
20.2 ... NEO -- der chinesische Klon von Ethereum ... 539
20.3 ... EOS -- der stärkste Wettbewerber zu Ethereum? ... 541
20.4 ... Ripple -- die Zukunft der Banken? ... 544
20.5 ... IOTA -- das dezentrale Internet der Dinge ... 548
20.6 ... Zusammenfassung ... 554
Literaturverzeichnis ... 557
Index ... 559