Schütz / Fertig | Blockchain für Entwickler | E-Book | sack.de
E-Book

E-Book, Deutsch, 565 Seiten

Reihe: Rheinwerk Computing

Schütz / Fertig Blockchain für Entwickler

Grundlagen, Programmierung, Anwendung
1. Auflage 2019
ISBN: 978-3-8362-6392-4
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 6 - ePub Watermark

Grundlagen, Programmierung, Anwendung

E-Book, Deutsch, 565 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-8362-6392-4
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 6 - ePub Watermark



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 Potenzial
  • Die Basics: Transaktionen, Kryptographie, Konsensmodelle und Sicherheit
  • Die eigene Blockchain erstellen: Datenstrukturen, API, Synchronisation und Verifikation
  • Smart-Contract-Programmierung mit Solidity: Anwendungsbeispiele auf der Ethereum-Blockchain
  • Smart Contracts testen, debuggen, absichern und administrieren
  • Distributed Apps (dApps) entwickeln
  • Alternative Technologien: Ripple, NEO, IOTA und mehr


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.
Schütz / Fertig Blockchain für Entwickler jetzt bestellen!

Weitere Infos & Material


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


2    Einführung


In diesem Kapitel werden Sie an das Thema Blockchain herangeführt. Wir erklären, was die Blockchain ist, wie sie sich weiterentwickelt hat und wofür die Technologie genutzt werden kann.

Die Technologie Blockchain hat es in wenigen Jahren geschafft, eine immense Aufmerksamkeit auf sich zu ziehen. Vor allem Kryptowährungen, die durch eine Blockchain realisiert werden, rückten mit ihren explosionsartigen Kursanstiegen in das mediale Rampenlicht. Nicht nur Informatiker und Technikfans, sondern auch Normalverbraucher und Firmenvertreter drängen sich derzeit auf Blockchain-Vorträge, um dort ihre Fragen beantwortet zu bekommen: Was ist eigentlich diese Blockchain, von der plötzlich alle reden? Und vielleicht noch viel wichtiger: Wofür kann ich die Blockchain überhaupt gebrauchen? In diesem Kapitel gehen wir diesen Fragen auf den Grund. Wir erklären zuerst, was sich hinter dem Begriff Blockchain verbirgt und warum es sie gibt. Anschließend gehen wir auf die Geschichte der Blockchain ein und für welche Anwendungsfälle sich die neue Technologie eignet.

2.1    Was ist die Blockchain?


Am Anfang jeder Lösung steht idealerweise eines oder mehrere Probleme. Das Hauptziel der Blockchain ist, grundlegende Herausforderungen des Internets zu lösen. Diese möchten wir Ihnen im Folgenden kurz vorstellen. Anschließend zeigen wir Ihnen, wie die Blockchain diese Herausforderungen angeht.

2.1.1    Herausforderungen des Internets


Das Internet erleichtert seinen Anwendern in vielerlei Hinsicht das Leben und löst zahlreiche Herausforderungen der realen Welt. Sie können Entfernungen überbrücken, indem Sie Freunden in aller Welt in Sekundenschnelle Katzenbilder schicken. Sie können rund um die Uhr in Onlineshops einkaufen, online Geld überweisen oder stundenlang Lieblingsserien streamen. Das Internet bringt allerdings auch Herausforderungen und Nachteile mit sich, die uns aus der realen Welt in dieser Form so nicht bekannt sind.

Kurz gesagt, hier geht es um die Herausforderung der Zentralisierung und die Herausforderung des Vertrauens sowie um das Double-Spending-Problem.

Zentralisierung

Als mit dem Arpanet 1969 der Vorläufer des Internets in Betrieb genommen wurde, sollte damit vor allem ein dezentrales Netz geschaffen werden, das möglichst ausfallsicher ist. Auch als das Internet später der breiten Masse zugänglich wurde, behielt es seinen dezentralen Charakter. Während der Nutzer anfänglich hauptsächlich Inhalte konsumierte, indem er beispielsweise einen Artikel las, hatte er mit dem Beginn des Web 2.0 verstärkt die Möglichkeit, selbst aktiv am Geschehen im Netzwerk teilzuhaben. Hiermit begann auch eine Art Zentralisierung des dezentralen Netzwerks. Große Firmen wie Facebook, Google oder Amazon zentralisieren Nutzer auf ihrer jeweiligen Plattform und beherbergen auf ihren Servern einen großen Teil des Datenverkehrs und der Daten im Internet. Diese Entwicklung bringt Gefahren mit sich.

Während große Firmen noch vor einiger Zeit eigene Server unterhielten, setzen mittlerweile viele auf Serveranbieter wie Amazon Web Services (AWS). Technische Probleme bei AWS können also mit Leichtigkeit die Stabilität des ganzen Netzes ins Wanken bringen. Vorfälle in der Vergangenheit haben bereits gezeigt, dass dieses Szenario nicht abwegig ist.

Die Plattform Facebook wird heutzutage, als größtes soziales Netzwerk, von mehreren Milliarden Nutzern zum Austausch von Informationen und zur Kommunikation genutzt. Diese enorme Nutzerzahl gibt der Firma gleichzeitig auch eine große Macht. Ohne Weiteres können Informationen auf der Plattform zensiert oder Nutzer durch Sperrung ausgeschlossen werden.

Die Zentralisierung macht Informationen im Internet also angreifbarer für Verlust, Manipulation und Zensur.

Vertrauen

Mangelndes Vertrauen zwischen zwei oder mehreren Parteien ist ein Problem, das auch in unserer realen Welt abseits des Internets besteht. Die im Netz vorherrschende Anonymität macht das Fassen von Vertrauen jedoch noch deutlich schwerer. Sei es bei einem Kauf auf der Plattform eBay, dem Verkauf eines Autos oder dem Abschluss eines Vertrags: Aufgrund des fehlenden persönlichen Kontakts ist es für die Vertragspartner schwierig, das Gegenüber einzuschätzen. Bezahlt mich der Käufer wirklich? Will mich die andere Seite reinlegen? Ist die andere Seite wirklich die Person oder Firma, die sie vorgibt zu sein? Bei realen zwischenmenschlichen Kontakten können Sie sich hierbei oft auf die eigene Intuition, das Bauchgefühl, verlassen. Kommt Ihnen der Vertragspartner zwielichtig vor, werden Sie sich kaum auf einen Handel mit ihm einlassen. Dieser persönliche Kontakt fällt im Internet jedoch weg.

Eine Lösungsmöglichkeit für dieses Anonymitätsproblem besteht darin, eine weitere Instanz als Mittelsmann hinzuzuziehen, der beide Parteien vertrauen. Klassischerweise übernehmen zentralisierte Dienste, sogenannte Trusted Third Parties (TTP) diese Aufgabe. Beispiele für solche TTPs sind Zeitstempeldienste bzw. TSA (Time Stamp Authorities) für zeitkritische Dokumente oder Zertifizierungsstellen für digitale Zertifikate. Sie helfen dabei, die Kommunikation sowie Transaktionen zwischen verschiedenen Parteien abzusichern, indem sie als unparteiischer Vermittler vermerken, ob eine E-Mail pünktlich verschickt wurde, oder einen öffentlichen Schlüssel einer Organisation zuzuordnen. Banken oder Kreditkartenanbieter stellen wohl die bekanntesten TTPs dar, die uns im Alltag begegnen. Sie stellen Vertrauen zwischen Parteien her, indem sie garantieren, dass Waren tatsächlich bezahlt werden. Wenn Sie mit Ihrer Kreditkarte eine Bahnkarte online kaufen, kann sich die Deutsche Bahn nach einer kurzen Anfrage bei der TTP darauf verlassen, dass Sie auch wirklich ihr Geld bekommt, denn Ihre Bank bürgt für Sie, indem sie die Überweisung garantiert und sich das Geld später von Ihrem Konto zurückholt.

Uns begegnen im alltäglichen Umgang mit dem Internet noch viele weitere Dienste, die dazu dienen, Vertrauen zu schaffen. Die Verkäuferbewertungen auf Plattformen wie eBay, der Zahlungsanbieter PayPal oder das Bewertungsportal Trustpilot sorgen alle dafür, dass skeptische Kunden einen Zwischendienst einschalten können, der Vertrauen zwischen unbekannten Teilnehmern schafft.

Doch auch sie können diese Vertrauensherausforderung nicht gänzlich lösen. Mit gestohlenen Verkäuferkonten oder gefälschten Bewertungen können Betrüger dem Nutzer beispielsweise recht einfach eine falsche Reputation vorspiegeln. Ein weiteres Problem spricht Satoshi Nakamoto in seinem Whitepaper zu Bitcoin an: Es ist nicht möglich, wirklich unwiderrufliche Zahlungen auszuführen, da die jeweilige TTP im Zweifelsfall als Vermittler eingreifen muss. Ein Kunde könnte die Zahlung relativ einfach zurückfordern. Dies sorgt für Kosten und schafft einen gewissen Grad an Unsicherheit für die Partei, die die Zahlung empfängt. Diese Tatsache führt zu einem erneuten Vertrauensvakuum. Außerdem stellt sich die Frage, wie vertrauensvoll eine TTP selbst ist. Durch die Finanzkrise, beginnend im Jahr 2007, haben viele Menschen das Vertrauen in die Banken verloren. Das Problem ähnelt dem bei der Zentralisierung bereits beschriebenen. Eine zentrale Autorität ist auch immer anfällig für Manipulationen oder Betrug. Es ist kein Zufall, dass die Erfindung der ersten Kryptowährung Bitcoin mit eben dieser Finanzkrise zusammenfällt.

Wer ist eigentlich Satoshi Nakamoto?

Im Jahr 2008 wurde über die Mailingliste für Kryptografie ein Whitepaper mit dem Titel »Bitcoin: A Peer-to-Peer Electronic Cash System« verschickt. Dieses Whitepaper stellte das Konzept der späteren Kryptowährung Bitcoin das erste Mal einer breiteren Personengruppe vor. Verfasst wurde die Arbeit unter dem Pseudonym Satoshi Nakamoto. Bis heute ist allerdings ungeklärt, welche Person oder Personengruppe hinter diesem Namen steckt. Nakamoto nahm die Bitcoin-Blockchain im Januar 2009 in Betrieb und trat unter seinem Pseudonym oder mit seiner E-Mail-Adresse satoshin@gmx.com auch in verschiedenen Foren in Erscheinung. Seit einigen Jahren ist Nakamoto allerdings untergetaucht. Viele Gerüchte ranken sich um die Identität hinter dem Pseudonym. Einige Theorien verdächtigen Pioniere der Kryptografie, andere auch Elon Musk als Erfinder von Bitcoin.

In manchen Fällen geht es nicht ohne eine Zwischeninstanz aus der realen Welt. Ein Notar ist ein Garant für die Glaubhaftigkeit von Rechtsgeschäften zwischen Parteien und in manchen Anwendungsfällen, wie etwa dem Grundstückskauf, sogar gesetzlich vorgeschrieben. Durch die hohen Gebühren ist das erkaufte Vertrauen hier vergleichsweise teuer.

Double-Spending-Problem

Das Double-Spending-Problem ist ein Problem, das erst durch die Etablierung von digitalen Strukturen entstanden ist. In unserer realen Welt ist jedes Objekt einzigartig. Wenn Sie einen Apfel essen, ist er weg, und Sie können ihn nicht noch einmal essen. Wenn Sie einen Blumenstrauß verschenken, Ihr Auto verkaufen oder einen 10-Euro-Schein ausgeben, gehen diese Objekte aus Ihrem Besitz und...


Fertig, Tobias
Tobias Fertig unterrichtet seit mehreren Jahren Programmierung, Software Engineering und verteilte Systeme. Er versteht die Details der Blockchain Technologie und weiß diese verständlich zu erklären. Neben seiner Promotion über Informationssicherheit berät er gemeinsam mit Andreas Schütz Unternehmen im Bereich Blockchain.

Schütz, Andreas
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.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.