Buch: «Smart Contracts mit Solidity für die Ethereum-Blockchain. Ein praktischer Leitfaden»

Buch: «Smart Contracts mit Solidity für die Ethereum-Blockchain. Ein praktischer Leitfaden»
Ich habe über ein Jahr an dem Buch „Erstellung von Solidity Smart Contracts für die Ethereum Blockchain. Praktisches Handbuch“ gearbeitet, und nun ist diese Arbeit abgeschlossen und das Buch wird veröffentlicht und ist auf Litres verfügbar..

Ich hoffe, mein Buch hilft Ihnen, schnell mit der Erstellung von Solidity Smart Contracts und dezentralen Anwendungen (DApp) für die Ethereum Blockchain zu beginnen. Es besteht aus 12 Lektionen mit praktischen Aufgaben. Nach Abschluss dieser Aufgaben wird der Leser in der Lage sein, eigene lokale Ethereum-Knoten zu erstellen, Smart Contracts zu veröffentlichen und deren Methoden aufzurufen, Daten zwischen der realen Welt und Smart Contracts mithilfe von Oracles auszutauschen und mit dem Testnetz Rinkeby zu arbeiten.

Das Buch richtet sich an alle, die sich für fortschrittliche Technologien im Bereich Blockchain interessieren und schnell Kenntnisse erwerben möchten, um interessante und zukunftsträchtige Aufgaben zu übernehmen.

Unten finden Sie das Inhaltsverzeichnis und das erste Kapitel des Buches (auch auf Litres sind Ausschnitte des Buches verfügbar). Ich freue mich auf Ihr Feedback, Anmerkungen und Vorschläge. All dies werde ich bei der Vorbereitung der nächsten Auflage des Buches berücksichtigen.

InhaltsverzeichnisEinführungUnser Buch richtet sich an diejenigen, die nicht nur die Funktionsweise der Ethereum-Blockchain verstehen möchten, sondern auch praktische Fähigkeiten in der Erstellung von dezentralen Anwendungen (DApp) in der Programmiersprache Solidity für dieses Netzwerk erwerben möchten.

Es ist besser, dieses Buch nicht nur zu lesen, sondern aktiv damit zu arbeiten, indem Sie die in den Lektionen beschriebenen praktischen Aufgaben ausführen. Dazu benötigen Sie einen lokalen Computer, einen virtuellen oder Cloud-Server mit installiertem Debian oder Ubuntu-Betriebssystem. Für viele Aufgaben können Sie auch einen Raspberry Pi verwenden.

Im ersten Unterricht werden wir die Funktionsweise der Ethereum-Blockchain und grundlegende Terminologie betrachten und darüber informieren, wo diese Blockchain eingesetzt werden kann.

Ziel zweiten Unterricht — einen Knoten eines privaten Ethereum-Blockchains auf dem Ubuntu- und Debian-Server einzurichten, um im Rahmen dieses Kurses weiterzuarbeiten. Wir werden die Besonderheiten der Installation grundlegender Dienstprogramme wie geth, das den Betrieb unseres Blockchain-Knotens ermöglicht, sowie des Daemons des dezentralen Datenspeichers swarm betrachten.

Dritte Unterricht llehrt Sie, Experimente mit Ethereum auf dem kostengünstigen Mikrocomputer Raspberry Pi durchzuführen. Sie werden das Betriebssystem (OS) Rasbian auf dem Raspberry Pi installieren, das Geth-Tool verwenden, das den Betrieb eines Blockchain-Knotens ermöglicht, und den dezentralen Datenspeicherdienst Swarm kennenlernen.

Die vierte Lektion behandelt Konten und Kryptowährungseinheiten im Ethereum-Netzwerk sowie Möglichkeiten, Gelder von einem Konto auf ein anderes über die Geth-Konsole zu übertragen. Sie lernen, Konten zu erstellen, Transaktionen zu initiieren, den Status von Transaktionen abzurufen und Quittungen zu erhalten.

In der fünften Lektion werden Sie mit Smart Contracts im Ethereum-Netzwerk vertraut gemacht und erfahren mehr über deren Ausführung durch die Ethereum Virtual Machine.

Sie werden Ihren ersten Smart Contract in einem privaten Ethereum-Netzwerk erstellen und veröffentlichen sowie dessen Funktionen aufrufen. Dazu verwenden Sie die Entwicklungsumgebung Remix Solidity IDE. Außerdem lernen Sie, den Compiler solc zu installieren und zu nutzen.
Wir werden auch über die sogenannte Application Binary Interface (ABI) sprechen und wie man sie anwendet.

Die sechste Lektion ist der Erstellung von JavaScript-Skripten gewidmet, die unter Node.js ausgeführt werden und Operationen mit Solidity-Smart Contracts durchführen.

Sie werden Node.js auf Ubuntu, Debian und Raspberry Pi installieren, Skripte schreiben, um einen Smart Contract im lokalen Ethereum-Netzwerk zu veröffentlichen und dessen Funktionen aufzurufen.

Außerdem lernen Sie, mit Skripten Mittel zwischen gewöhnlichen Konten zu übertragen und sie auf Smart Contract-Konten einzuzahlen.

In der siebten Lektion werden Sie lernen, die bei Entwicklern von Smart Contracts beliebte integrierte Entwicklungsumgebung Truffle zu installieren und zu verwenden. Sie werden Skripte in JavaScript erstellen, die Funktionen von Verträgen mit dem Modul truffle-contract aufrufen und Ihren Smart Contract mit Truffle testen.

Die achte Lektion ist den Datentypen von Solidity gewidmet. Sie werden Smart Contracts schreiben, die mit Datentypen wie vorzeichenbehafteten und nicht vorzeichenbehafteten Ganzzahlen, Gleitkommazahlen, Strings, Adressen, komplexen Variablen, Arrays, Aufzählungen, Strukturen und Dictionaries arbeiten.

In der neunten Lektion Sie sind nur noch einen Schritt davon entfernt, Smart Contracts für das Ethereum-Hauptnetz zu erstellen. Sie lernen, wie man Verträge mit Truffle in einem privaten Geth-Netzwerk sowie in dem Testnetz Rinkeby veröffentlicht. Die Fehlersuche von Smart Contracts im Rinkeby-Netzwerk ist äußerst wertvoll, bevor Sie sie im Hauptnetz veröffentlichen — dort ist alles fast echt, aber kostenlos.

Im Rahmen dieser Lektion werden Sie einen Knoten im Testnetz Rinkeby erstellen, ihn mit Mitteln aufladen und einen Smart Contract veröffentlichen.

Lektion 10 widmet sich den verteilten Datenspeichern von Ethereum Swarm. Durch die Nutzung verteilter Speicher sparen Sie Kosten für die Speicherung großer Datenmengen in der Ethereum-Blockchain.

In dieser Lektion werden Sie ein lokales Swarm-Speicher erstellen, Datei- und Verzeichnisoperationen durchführen. Anschließend lernen Sie, wie Sie mit einem öffentlichen Swarm-Gateway arbeiten, Skripte zur Ansprache von Swarm aus Node.js schreiben und das Perl-Modul Net::Ethereum::Swarm verwenden.

Ziel der Lektion 11 — Erlernen Sie den Umgang mit Smart Contracts in Solidity unter Verwendung der populären Programmiersprache Python und des Frameworks Web3.py. Sie installieren dieses Framework, schreiben Skripte zum Kompilieren und Veröffentlichen von Smart Contracts sowie zum Aufrufen ihrer Funktionen. Dabei wird Web3.py sowohl eigenständig als auch zusammen mit der integrierten Entwicklungsumgebung Truffle eingesetzt.

In der 12. Lektion lernen Sie, Daten zwischen Smart Contracts und der realen Welt mithilfe von Orakeln zu übermitteln. Dies ist nützlich, um Daten von Webseiten, Internet-of-Things (IoT)-Geräten, verschiedenen Instrumenten und Sensoren abzurufen und Daten aus Smart Contracts an diese Geräte zu senden. Im praktischen Teil der Lektion erstellen Sie ein Orakel und einen Smart Contract, der den aktuellen Wechselkurs von USD zu Rubel von der Website der Zentralbank der Russischen Föderation abruft.

Lektion 1. Einführung in Blockchain und das Ethereum-NetzwerkZiel der Lektion: die Funktionsweise der Ethereum-Blockchain, ihre Anwendungsbereiche und die grundlegende Terminologie kennenzulernen.
Praktische Aufgaben: für diese Lektion sind keine vorgesehen.

Heute gibt es kaum einen Softwareentwickler, der noch nie von Blockchain-Technologie, Kryptowährungen, Bitcoins, Initial Coin Offerings (ICO), Smart Contracts oder anderen Begriffen gehört hat, die mit Blockchain in Verbindung stehen.

Die Blockchain-Technologie eröffnet neue Märkte und schafft Arbeitsplätze für Programmierer. Wenn Sie alle Feinheiten der Kryptowährungstechnologien und der Smart Contracts verstehen, sollte es Ihnen leichtfallen, dieses Wissen praktisch anzuwenden.

Es sollte angemerkt werden, dass es um Kryptowährungen und Blockchains eine Menge Spekulationen gibt. Wir wollen Spekulationen über Kryptowährungswechselkurse, das Erstellen von Pyramidensystemen, die Feinheiten der kryptowährungsrechtlichen Bestimmungen usw. außen vor lassen. In unserem Lehrgang konzentrieren wir uns hauptsächlich auf die technischen Aspekte der Anwendung von Smart Contracts auf der Ethereum-Blockchain und die Entwicklung sogenannter dezentraler Anwendungen (DApp).

Was ist Blockchain?

Die Blockchain stellt eine Kette von Datenblöcken dar, die auf eine bestimmte Weise miteinander verknüpft sind. Zu Beginn der Kette steht der erste Block, der als Genesis-Block oder Ursprungsblock bezeichnet wird. Darauf folgen der zweite, der dritte und so weiter.

Alle diese Datenblöcke werden automatisch auf zahlreichen Knoten im Blockchain-Netzwerk dupliziert. So wird eine dezentrale Speicherung der Blockchain-Daten sichergestellt.
Sie können sich das Blockchain-System als eine große Anzahl von Knoten (physikalischen oder virtuellen Servern) vorstellen, die in einem Netzwerk verbunden sind und alle Änderungen in der Kette von Datenblöcken replizieren. Es ist wie ein riesiger Multi-Server-Computer, wobei die Knoten dieses Computers (Server) über die ganze Welt verstreut sein können. Und auch Ihr Computer kann dem Blockchain-Netzwerk hinzugefügt werden.

Verteilte Datenbank

Die Blockchain kann als verteilte Datenbank betrachtet werden, die auf allen Knoten des Blockchain-Netzwerks repliziert wird. In der Theorie wird die Blockchain funktionsfähig bleiben, solange mindestens ein Knoten, der alle Blöcke der Blockchain speichert, aktiv ist.

Verteiltes Datenregister

Blockchain kann als ein verteiltes Register von Daten und Transaktionen betrachtet werden. Ein weiteres Wort für dieses Register ist Hauptbuch.

In das verteilte Register können Daten hinzugefügt werden, jedoch ist es nicht möglich, diese zu ändern oder zu löschen. Dieses Verbot wird unter anderem durch den Einsatz von kryptografischen Algorithmen, speziellen Algorithmen zum Hinzufügen von Blöcken in die Kette und die dezentrale Speicherung von Daten erreicht.

Beim Hinzufügen von Blöcken und der Durchführung von Transaktionen werden private und öffentliche Schlüssel verwendet. Diese schränken die Nutzer des Blockchain ein und gewähren ihnen nur Zugang zu ihren eigenen Datenblöcken.

Transaktionen

Blockchain speichert Informationen über Transaktionen in Blöcken. Dabei können alte, bereits durchgeführte Transaktionen nicht zurückgesetzt oder geändert werden. Neue Transaktionen werden in neuen, hinzugefügten Blöcken gespeichert.

So kann im Blockchain die gesamte Transaktionsgeschichte unverändert aufgezeichnet werden. Daher kann Blockchain beispielsweise für die zuverlässige Speicherung von Banktransaktionen, Urheberrechtsinformationen, der Historie von Eigentümerwechseln bei Immobilien usw. verwendet werden.

Die Ethereum-Blockchain enthält sogenannte Systemzustände. Mit der Durchführung von Transaktionen ändert sich der Zustand von anfänglich bis aktuell. Transaktionen werden in Blöcken aufgezeichnet.

Öffentliche und private Blockchains

Es ist wichtig zu beachten, dass alles, was gesagt wurde, nur für die sogenannten öffentlichen Blockchain-Netzwerke gilt, die nicht von einzelnen physischen oder juristischen Personen, Regierungsbehörden oder Regierungen kontrolliert werden können.
Die sogenannten privaten Blockchain-Netzwerke stehen unter vollständiger Kontrolle ihrer Ersteller, und dort ist alles möglich, wie beispielsweise die vollständige Ersetzung aller Blöcke in der Kette.

Praktische Anwendungen der Blockchain

Wofür kann Blockchain nützlich sein?

Kurz gesagt, Blockchain ermöglicht es, sichere Transaktionen zwischen Parteien oder Unternehmen durchzuführen, die einander nicht vertrauen. Daten, die in der Blockchain aufgezeichnet sind (Transaktionen, persönliche Daten, Dokumente, Zertifikate, Verträge, Frachtpapiere usw.), können nach der Aufzeichnung nicht gefälscht oder ersetzt werden. Daher können auf Basis der Blockchain beispielsweise vertrauenswürdige verteilte Register verschiedener Dokumentenarten erstellt werden.

Natürlich wissen Sie, dass auf Blockchain-Basis Kryptowährungssysteme entstehen, die darauf abzielen, herkömmliches Papiergeld zu ersetzen. Papiergeld wird auch als Fiat-Währung bezeichnet.
Die Blockchain ermöglicht die Speicherung und Unveränderlichkeit von Transaktionen, die in Blöcken aufgezeichnet sind, weshalb sie für die Erstellung von Kryptowährungssystemen verwendet werden kann. Sie enthält die gesamte Historie der Übertragung von Krypto-Mitteln zwischen verschiedenen Benutzern (Konten), wobei jede Transaktion nachvollzogen werden kann.

Obwohl Transaktionen innerhalb von Kryptowährungssystemen anonym sein können, führt die Umwandlung von Kryptowährung in Fiat-Währung in der Regel zur Offenlegung der Identität des Inhabers des Krypto-Assets.

Die sogenannten Smart Contracts, die Software repräsentieren, die im Ethereum-Netzwerk arbeitet, ermöglichen die Automatisierung des Vertragsabschlusses und die Überwachung ihrer Ausführung. Dies ist besonders effektiv, wenn die Bezahlung für den Vertrag in der Kryptowährung Ether erfolgt.

Die Ethereum-Blockchain und die Smart Contracts von Ethereum, die in der Programmiersprache Solidity geschrieben sind, können beispielsweise in folgenden Bereichen eingesetzt werden:

  • eine Alternative zur notariellen Beglaubigung von Dokumenten;
  • Archivierung von Immobilienregistern und Informationen zu Immobiliengeschäften;
  • Speicherung von Daten zu Urheberrechten an geistigem Eigentum (Bücher, Bilder, Musikwerke usw.);
  • Schaffung von Systemen für unabhängige Abstimmungen;
  • Bereich Finanzen und Bankgeschäft;
  • Internationale Logistik und Nachverfolgung von Frachtbewegungen;
  • Speicherung personenbezogener Daten als Pendant zu Identifikationssystemen;
  • Sichere Transaktionen im Handelsbereich;
  • Speicherung von Ergebnissen medizinischer Untersuchungen sowie von Vorgeschichten über durchgeführte Verfahren;

Probleme mit der Blockchain;

Aber natürlich ist nicht alles so einfach, wie es erscheinen mag!

Es gibt Probleme mit der Verifizierung von Daten vor deren Hinzufügung zur Blockchain (zum Beispiel, ob sie echt sind?), Sicherheitsprobleme der System- und Anwendungssoftware, die für die Arbeit mit der Blockchain verwendet wird, und Probleme mit der Möglichkeit, Methoden der sozialen Manipulation zu verwenden, um den Zugang zu Kryptowallets zu stehlen usw.

Wenn es sich nicht um eine öffentliche Blockchain handelt, deren Knoten weltweit verteilt sind, sondern um eine private Blockchain, die einer Person oder Organisation gehört, wird das Vertrauen nicht höher sein als das Vertrauen in diese Person oder Organisation.

Es ist auch zu beachten, dass die im Blockchain gespeicherten Daten für alle zugänglich werden. In diesem Sinne ist die Blockchain (insbesondere die öffentliche) nicht für die Speicherung vertraulicher Informationen geeignet. Doch die Tatsache, dass Informationen in der Blockchain nicht verändert werden können, kann dazu beitragen, unterschiedliche Arten von Betrugsfällen zu verhindern oder zu untersuchen.

Dezentralisierte Ethereum-Anwendungen sind am besten geeignet, wenn die Nutzungsgebühren in Kryptowährung bezahlt werden. Je mehr Menschen Kryptowährung besitzen oder bereit sind, sie zu erwerben, desto beliebter werden DApps und Smart Contracts.

Zu den allgemeinen Problemen der Blockchain, die ihre praktische Anwendung erschweren, gehören die begrenzte Geschwindigkeit bei der Hinzufügung neuer Blöcke und die relativ hohen Transaktionskosten. Allerdings entwickeln sich die Technologien in diesem Bereich aktiv, und es besteht die Hoffnung, dass die technischen Probleme im Laufe der Zeit gelöst werden.

Ein weiteres Problem besteht darin, dass Smart Contracts der Ethereum-Blockchain in einer isolierten Umgebung virtueller Maschinen operieren und keinen Zugriff auf Daten aus der realen Welt haben. Insbesondere kann das Smart Contract-Programm keine Daten von Websites oder physischen Geräten (Sensoren, Kontakte usw.) abrufen und kann keine Daten an externe Geräte ausgeben. Dieses Problem und mögliche Lösungen werden wir in einer Lektion erörtern, die sich mit sogenannten Orakeln – Informationsvermittlern für Smart Contracts – beschäftigt.

Es gibt auch Einschränkungen im Bereich der Gesetzgebung. In einigen Ländern ist es beispielsweise verboten, Kryptowährungen als Zahlungsmittel zu verwenden, aber man kann sie als digitale Vermögenswerte besitzen, ähnlich wie Wertpapiere. Solche Vermögenswerte können an der Börse gekauft und verkauft werden. In jedem Fall muss man sich bei der Erstellung eines Projekts, das mit Kryptowährungen arbeitet, über die Gesetzgebung des Landes informieren, unter dessen Jurisdiktion Ihr Projekt fällt.

Wie die Blockchain-Kette entsteht

Wie bereits erwähnt, besteht die Blockchain aus einer einfachen Kette von Datenblöcken. Zuerst wird der erste Block dieser Kette erstellt, gefolgt vom zweiten und so weiter. Es wird angenommen, dass die Transaktionsdaten in den Blöcken gespeichert werden und in den letzten Block hinzugefügt werden.

In Abb. 1.1 zeigen wir die einfachste Variante der Abfolge von Blöcken, wobei der erste Block auf den nächsten verweist.

Buch: «Smart Contracts mit Solidity für die Ethereum-Blockchain. Ein praktischer Leitfaden»
Abb. 1.1. Einfache Abfolge von Blöcken

In diesem Szenario können jedoch die Inhalte eines beliebigen Blockes der Kette sehr leicht gefälscht werden, da die Blöcke keine Informationen zum Schutz vor Änderungen enthalten. Da die Blockchain für die Nutzung durch Menschen und Unternehmen gedacht ist, zwischen denen kein Vertrauen besteht, kann man schließen, dass diese Art der Datenspeicherung für die Blockchain nicht geeignet ist.

Lassen Sie uns den Schutz der Blöcke gegen Fälschungen angehen. In der ersten Phase werden wir versuchen, jeden Block mit einer Prüfziffer zu schützen (Abb. 1.2).

Buch: «Smart Contracts mit Solidity für die Ethereum-Blockchain. Ein praktischer Leitfaden»
Abb. 1.2. Hinzufügen von Datenschutz zu den Blöcken mit einer Prüfziffer

Jetzt kann ein Angreifer den Block nicht einfach ändern, da der Block eine Prüfziffer enthält. Die Überprüfung der Prüfziffer wird zeigen, dass die Daten verändert wurden.

Zur Berechnung der Prüfziffer kann eine der Hash-Funktionen verwendet werden, wie z.B. MD5, SHA-1, SHA-256 usw. Hash-Funktionen berechnen einen bestimmten Wert (zum Beispiel in Form einer Textzeichenfolge fester Länge) durch irreversible Operationen auf dem Datenblock. Die Operationen hängen von der Art der Hash-Funktion ab.

Selbst bei einer geringen Änderung des Inhalts eines Datenblocks ändert sich auch der Wert der Hash-Funktion. Anhand des Wertes der Hash-Funktion ist es unmöglich, den Datenblock, für den sie berechnet wurde, wiederherzustellen.

Ist dieser Schutz ausreichend? Leider nicht.

In diesem Schema schützt die Prüfziffer (Hash-Funktion) nur einzelne Blöcke, jedoch nicht die gesamte Kette der Blöcke. Kennt ein Angreifer den Algorithmus zur Berechnung der Hash-Funktion, kann er den Inhalt eines Blocks leicht manipulieren. Nichts hindert ihn auch daran, Blöcke aus der Kette zu entfernen oder neue hinzuzufügen.

Um die gesamte Kette als Ganzes zu schützen, kann man in jedem Block neben den Daten auch den Hash der Daten des vorherigen Blocks speichern (siehe Abb. 1.3).

Buch: «Smart Contracts mit Solidity für die Ethereum-Blockchain. Ein praktischer Leitfaden»
Abb. 1.3. Hinzufügen des Hashs des vorherigen Blocks zu den Daten

In diesem Schema muss, um einen Block zu ändern, die Hash-Funktion aller nachfolgenden Blöcke neu berechnet werden. Worin könnte das Problem liegen?

In echten Blockchains werden zusätzliche künstliche Schwierigkeiten geschaffen, um neue Blöcke hinzuzufügen – Algorithmen, die hohe Rechenressourcen erfordern, kommen zum Einsatz. Da für Änderungen an einem Block nicht nur dieser Block, sondern alle nachfolgenden Blöcke neu berechnet werden müssen, wird dies äußerst herausfordernd.

Es ist auch wichtig zu beachten, dass die Blockchain-Daten auf zahlreichen Knoten im Netzwerk gespeichert (dupliziert) werden, d.h. es wird ein dezentraler Speicher genutzt. Dies macht es erheblich schwieriger, einen Block zu fälschen, da Änderungen an allen Knoten im Netzwerk vorgenommen werden müssen.

Da Blöcke Informationen über den vorherigen Block speichern, kann der Inhalt aller Blöcke der Kette überprüft werden.

Ethereum Blockchain

Die Ethereum Blockchain ist eine Plattform, auf der dezentrale Anwendungen (DApps) erstellt werden können. Im Gegensatz zu anderen Plattformen ermöglicht Ethereum die Nutzung sogenannter Smart Contracts, die in der Programmiersprache Solidity geschrieben sind.

Diese Plattform wurde 2013 von Vitalik Buterin, dem Gründer des Bitcoin Magazine, ins Leben gerufen und 2015 gestartet. Alles, was wir in unserem Kurs lernen oder tun werden, bezieht sich auf die Ethereum-Blockchain und Smart Contracts mit Solidity.

Mining oder wie Blöcke erstellt werden

Mining ist ein komplizierter und ressourcenintensiver Prozess, bei dem neue Blöcke zur Blockchain hinzugefügt werden, und kein «Abbau von Kryptowährungen». Mining stellt die Funktionsfähigkeit der Blockchain sicher, da dieser Prozess für das Hinzufügen von Transaktionen zur Ethereum-Blockchain verantwortlich ist.

Die Personen und Organisationen, die Blöcke hinzufügen, werden Miner genannt.
Die Software (SW), die auf den Nodes der Miner läuft, versucht, für den letzten Block den Hashing-Parameter namens Nonce zu ermitteln, um einen bestimmten Wert der vom Netzwerk vorgeschriebenen Hash-Funktion zu erhalten. Der in Ethereum verwendete Hashing-Algorithmus Ethash ermöglicht es, den Nonce-Wert nur durch sequentielles Ausprobieren zu erhalten.

Wenn ein Mining-Knoten den richtigen Nonce-Wert gefunden hat, gilt dies als so genannter Proof of Work (PoW). In diesem Fall erhält der Miner, wenn der Block dem Ethereum-Netzwerk hinzugefügt wird, eine bestimmte Belohnung in der Währung des Netzwerks – Ether. Zum Zeitpunkt der Erstellung unseres Buches beträgt die Belohnung 5 Ether, wird jedoch im Laufe der Zeit verringert.

Auf diese Weise sorgen Ethereum-Miner für den Betrieb des Netzwerks, indem sie Blöcke hinzufügen und dafür Kryptowährungs-Geld erhalten. Im Internet finden Sie viele Informationen über Miner und Mining, aber wir konzentrieren uns auf die Erstellung von Solidity-Verträgen und dezentralen Anwendungen (DApps) im Ethereum-Netzwerk.

Zusammenfassung der Lektion

In der ersten Lektion haben Sie das Blockchain-System kennengelernt und erfahren, dass es sich um eine speziell angeordnete Sequenz von Blöcken handelt. Der Inhalt zuvor aufgezeichneter Blöcke kann nicht geändert werden, da dies die Neuberechnung aller nachfolgenden Blöcke an vielen Knoten im Netzwerk erfordern würde, was sehr viele Ressourcen und Zeit in Anspruch nimmt.

Blockchain kann verwendet werden, um die Ergebnisse von Transaktionen zu speichern. Seine Hauptfunktion besteht darin, sichere Transaktionen zwischen Parteien (Personen und Organisationen) zu organisieren, zwischen denen kein Vertrauen besteht. Sie haben erfahren, in welchen spezifischen Geschäftsbereichen und Sektoren Blockchain-Technologie, Ethereum und Smart Contracts in Solidity eingesetzt werden können. Dazu gehören die Bankenbranche, die Registrierung von Eigentumsrechten, Dokumenten usw.

Sie haben auch erfahren, dass bei der Nutzung von Blockchain verschiedene Probleme auftreten können. Dazu gehören die Verifizierung der in die Blockchain aufgenommenen Informationen, die Geschwindigkeit der Blockchain, die Transaktionskosten, die Problematik des Datenaustauschs zwischen Smart Contracts und der realen Welt sowie potenzielle Angriffe von Cyberkriminellen, die darauf abzielen, Kryptowährungen von Benutzerkonten zu stehlen.

Wir haben auch kurz über das Mining als den Prozess gesprochen, neue Blöcke zur Blockchain hinzuzufügen. Mining ist erforderlich, um Transaktionen auszuführen. Die Miner gewährleisten die Funktionalität der Blockchain und erhalten dafür eine Belohnung in Kryptowährung.

Lektion 2. Vorbereitung der Entwicklungsumgebung unter Ubuntu und DebianAuswahl des Betriebssystems
Installation der notwendigen Tools
Installation von Geth und Swarm unter Ubuntu
Installation von Geth und Swarm unter Debian
Vorbereitung
Download des Go-Distributionspakets
Einrichtung der Umgebungsvariablen
Überprüfung der Go-Version
Installation von Geth und Swarm
Erstellung einer privaten Blockchain
Готовим файл genesis.json
Erstellung eines Arbeitsverzeichnisses
Erstellung eines Kontos
Initialisierung des Nodes starten
Node-Startparameter
Verbindung zu unserem Node herstellen
Mining-Management und Kontostand überprüfen
Beenden der Geth-Konsole
Zusammenfassung der Lektion

Lektion 3. Vorbereitung der Entwicklungsumgebung auf Raspberry Pi 3Vorbereitung des Raspberry Pi 3 zur Nutzung
Installation von Raspbian
Installation von Updates
Aktivierung des SSH-Zugangs
Einrichtung einer statischen IP-Adresse
Installation der notwendigen Tools
Installation von Go
Download des Go-Distributionspakets
Einrichtung der Umgebungsvariablen
Überprüfung der Go-Version
Installation von Geth und Swarm
Erstellung einer privaten Blockchain
Überprüfung des Kontos und des Kontostands
Zusammenfassung der Lektion

Lektion 4. Konten und Geldtransfer zwischen KontenKonten anzeigen und hinzufügen
Liste der Konten anzeigen
Konto hinzufügen
Geth-Konto-Befehlsoptionen
Kontopasswörter
Kryptowährung in Ethereum
Währungen in Ethereum
Überprüfung des aktuellen Kontostands unserer Konten
Geldtransfer von einem Konto zu einem anderen
Methoden eth.sendTransaction
Überprüfung des Transaktionsstatus
Transaktionsquittung
Zusammenfassung der Lektion

Lektion 5. Veröffentlichung des ersten VertragsSmart Contracts in Ethereum
Ausführung eines Smart Contracts
Ethereum Virtual Machine
Integrierte Entwicklungsumgebung Remix Solidity IDE
Kompilierung starten
Funktionsaufrufe des Vertrags
Vertrag in einem privaten Netzwerk veröffentlichen
Definition ABI und Bytecode des Vertrags abrufen
Vertrag veröffentlichen
Status der Vertragsveröffentlichung überprüfen
Funktionsaufrufe des Vertrags
Batch-Compiler solc
Installation von solc unter Ubuntu
Installation von solc unter Debian
Kompilierung des Vertrags HelloSol
Vertrag veröffentlichen
Installation von solc auf Rasberian
Zusammenfassung der Lektion

Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Installation unter Ubuntu
Installation unter Debian
Installation und Ausführung von Ganache-cli
Installation von Web3
Installation von solc
Installation von Node.js auf Rasberian
Skript zum Abrufen der Kontoliste in der Konsole
Skript zur Veröffentlichung eines Smart Contracts
Ausführung und Abruf von Parametern
Abfragen der Startparameter
Kompilierung des Vertrags
Konto entsperren
ABI und Bytecode des Vertrags hochladen
Benötigte Gasmenge abschätzen
Objekt erstellen und Vertrag veröffentlichen
Skript zur Vertragsveröffentlichung ausführen
Funktionsaufrufe des Smart Contracts
Kann ein veröffentlichter Smart Contract aktualisiert werden?
Arbeiten mit Web3 Version 1.0.x
Liste der Konten abrufen
Vertrag veröffentlichen
Funktionsaufrufe des Vertrags
Geldtransfer von einem Konto zu einem anderen
Geld auf das Vertragskonto überweisen
Smart Contract HelloSol aktualisieren
Skript zur Einsicht des Kontostands erstellen
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Saldo des Smart Contracts aufladen
Zusammenfassung der Lektion

Lektion 7. Einführung in TruffleTruffle installieren
Projekt HelloSol erstellen
Verzeichnis und Dateien des Projekts anlegen
Verzeichnis contracts
Verzeichnis migrations
Verzeichnis test
Файл truffle-config.js
Kompilierung des Vertrags HelloSol
Veröffentlichung des Vertrags starten
Funktionen des Contracts HelloSol in der Truffle-Einladung aufrufen
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Modul truffle-contract installieren
Funktionen des Contracts getValue und getString aufrufen
Funktionen des Contracts setValue und setString aufrufen
Vertrag ändern und erneut veröffentlichen
Arbeiten mit Web3 Version 1.0.x
Änderungen am Smart Contract HelloSol vornehmen
Skripte zum Aufruf der Contract-Methoden
Testen in Truffle
Test in Solidity
Test in JavaScript
Zusammenfassung der Lektion

Lektion 8. Datentypen in SolidityVertrag zum Studium der Datentypen
Boolean Datentypen
Unsigned Integers und Signed Integers
Festkommazahlen
Adresse
Variablen komplexer Typen
Arrays fester Größe
Dynamische Arrays
Enum
Strukturen
Mapping Dictionaries
Zusammenfassung der Lektion

Lektion 9. Migration von Contracts in private Netzwerke und das Rinkeby-NetzwerkVertrag aus Truffle in ein privates Geth-Netzwerk veröffentlichen
Knoten des privaten Netzwerks vorbereiten
Vertrag für den Betrieb vorbereiten
Kompilierung und Migration des Vertrags in das Truffle-Netzwerk
Migration im lokalen Geth-Netzwerk starten
Erzeugen von Truffle-Artefakten
Veröffentlichen des Vertrags aus Truffle im Testnetz Rinkeby
Vorbereitung des Geth-Knotens für die Arbeit mit Rinkeby
Synchronisierung des Knotens
Hinzufügen von Konten
Aufladen des Rinkeby-Kontos mit Ether
Migration des Vertrags im Rinkeby-Netzwerk starten
Anzeigen von Vertragsinformationen im Rinkeby-Netzwerk
Truffle-Konsole für das Rinkeby-Netzwerk
Einfacherer Weg zum Aufrufen von Vertragsfunktionen
Вызов методов контракта при помощи Node.js
Überweisung von Mitteln zwischen Konten in der Truffle-Konsole für Rinkeby
Zusammenfassung der Lektion

Lektion 10. Dezentrales Datenspeicher Ethereum SwarmWie Ethereum Swarm funktioniert
Installation und Start von Swarm
Datei- und Verzeichnisoperationen
Hochladen einer Datei in Ethereum Swarm
Lesen einer Datei aus Ethereum Swarm
Anzeigen des Manifests der hochgeladenen Datei
Hochladen von Verzeichnissen mit Unterverzeichnissen
Lesen einer Datei aus dem hochgeladenen Verzeichnis
Verwendung eines öffentlichen Swarm-Gateways
Обращение к Swarm из скриптов Node.js
Perl-Modul Net::Ethereum::Swarm
Installation des Moduls Net::Ethereum::Swarm
Schreiben und Lesen von Daten
Zusammenfassung der Lektion

Lektion 11. Web3.py-Framework für die Arbeit mit Ethereum in PythonInstallation von Web3.py
Aktualisierung und Installation benötigter Pakete
Installation des easysolc-Moduls
Veröffentlichen des Vertrags mit Web3.py
Kompilierung des Vertrags
Verbindung zum Anbieter herstellen
Veröffentlichung des Vertrags
Speicherung der Vertragsadresse und ABI in einer Datei
Skript zur Vertragsveröffentlichung ausführen
Aufruf von Methoden des Vertrags
Lesen der Adresse und ABI des Vertrags aus einer JSON-Datei
Verbindung zum Anbieter herstellen
Erstellen eines Vertragsobjekts
Aufruf von Methoden des Vertrags
Truffle und Web3.py
Zusammenfassung der Lektion

Lektion 12. OrakelKann ein Smart Contract Informationen aus der Außenwelt vertrauen?
Orakel als Informationsvermittler der Blockchain
Datenquelle
Code zur Darstellung von Daten aus der Quelle
Orakel zur Aufzeichnung des Wechselkurses in der Blockchain
Vertrag USDRateOracle
Aktualisierung des Wechselkurses im Smart Contract
Verwendung des Web Socket Providers
Warten auf das Ereignis RateUpdate
Verarbeitung des Ereignisses RateUpdate
Initiierung der Datenaktualisierung im Smart Contract
Zusammenfassung der Lektion

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster