Das Buch „Creating Solidity Smart Contracts for the Ethereum Blockchain. Praxisratgeber“

Das Buch „Creating Solidity Smart Contracts for the Ethereum Blockchain. Praxisratgeber“
Seit mehr als einem Jahr arbeite ich an dem Buch „Creating Solidity Smart Contracts for the Ethereum Blockchain“. „Practical Guide“ und nun ist diese Arbeit abgeschlossen, und das Buch veröffentlicht und erhältlich in Litern.

Ich hoffe, mein Buch hilft Ihnen dabei, schnell mit der Erstellung intelligenter Solidity-Kontakte und verteilter DApps für die Ethereum-Blockchain zu beginnen. Es besteht aus 12 Lektionen mit praktischen Aufgaben. Nach Abschluss dieser Aufgaben kann der Leser eigene lokale Ethereum-Knoten erstellen, Smart Contracts veröffentlichen und ihre Methoden aufrufen, Daten zwischen der realen Welt und Smart Contracts mithilfe von Orakeln austauschen und mit dem Rinkeby-Test-Debug-Netzwerk arbeiten.

Das Buch richtet sich an alle, die sich für fortschrittliche Technologien im Bereich Blockchains interessieren und sich schnell Kenntnisse aneignen möchten, die ihnen eine interessante und vielversprechende Arbeit ermöglichen.

Nachfolgend finden Sie das Inhaltsverzeichnis und das erste Kapitel des Buches (auch auf Liter Fragmente des Buches sind verfügbar). Ich hoffe auf Rückmeldungen, Kommentare und Anregungen. Ich werde versuchen, all dies bei der Vorbereitung der nächsten Auflage des Buches zu berücksichtigen.

InhaltsverzeichnisEinführungUnser Buch richtet sich an diejenigen, die nicht nur die Prinzipien der Ethereum-Blockchain verstehen, sondern auch praktische Fähigkeiten bei der Erstellung verteilter DApps in der Programmiersprache Solidity für dieses Netzwerk erwerben möchten.

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

In der ersten Unterrichtsstunde Wir werden uns mit den Funktionsprinzipien der Ethereum-Blockchain und der grundlegenden Terminologie befassen und auch darüber sprechen, wo diese Blockchain eingesetzt werden kann.

Ziel zweite Lektion – Erstellen Sie einen privaten Ethereum-Blockchain-Knoten für die weitere Arbeit im Rahmen dieses Kurses auf einem Ubuntu- und Debian-Server. Wir werden uns die Funktionen der Installation grundlegender Dienstprogramme ansehen, wie z. B. Geth, das den Betrieb unseres Blockchain-Knotens sicherstellt, sowie des dezentralen Datenspeicher-Daemons Swarm.

Die dritte Stunde zeigt Ihnen, wie Sie mit Ethereum auf einem kostengünstigen Raspberry Pi-Mikrocomputer experimentieren. Sie installieren das Rasberian-Betriebssystem (OS) auf dem Raspberry Pi, das Geth-Dienstprogramm, das den Blockchain-Knoten betreibt, und den dezentralen Datenspeicher-Daemon Swarm.

Lektion vier widmet sich Konten und Kryptowährungseinheiten im Ethereum-Netzwerk sowie Möglichkeiten, Geld von der Geth-Konsole von einem Konto auf ein anderes zu übertragen. Sie erfahren, wie Sie Konten erstellen, Geldtransfertransaktionen initiieren und den Transaktionsstatus und den Beleg abrufen.

In der fünften Lektion Sie lernen intelligente Verträge im Ethereum-Netzwerk kennen und erfahren mehr über deren Ausführung durch die virtuelle Maschine von Ethereum.

Sie erstellen und veröffentlichen Ihren ersten Smart Contract im privaten Ethereum-Netzwerk und lernen, wie Sie seine Funktionen aufrufen. Dazu verwenden Sie die Remix Solidity IDE. Außerdem erfahren Sie, wie Sie den Solc-Batch-Compiler installieren und verwenden.
Außerdem sprechen wir über das sogenannte Application Binary Interface (ABI) und zeigen Ihnen, wie Sie es nutzen.

Sechste Lektion widmet sich der Erstellung von JavaScript-Skripten, auf denen Node.js ausgeführt wird, und der Durchführung von Operationen mit Solidity-Smart-Contracts.

Sie installieren Node.js auf den Betriebssystemen Ubuntu, Debian und Rasberian, schreiben Skripte, um einen Smart Contract im lokalen Netzwerk von Ethereum zu veröffentlichen und seine Funktionen aufzurufen.

Darüber hinaus erfahren Sie, wie Sie mithilfe von Skripten Gelder zwischen regulären Konten überweisen und diese auf Smart-Contract-Konten gutschreiben.

In der siebten Lektion Sie erfahren, wie Sie das Truffle-Framework installieren und verwenden, das bei Solidity-Smart-Contract-Entwicklern beliebt ist. Sie erfahren, wie Sie mit dem Modul truffle-contract JavaScript-Skripte erstellen, die Vertragsfunktionen aufrufen, und wie Sie Ihren Smart Contract mit Truffle testen.

Achte Lektion speziell für Solidity-Datentypen. Sie schreiben intelligente Verträge, die mit Datentypen wie vorzeichenbehafteten und vorzeichenlosen Ganzzahlen, vorzeichenbehafteten Zahlen, Zeichenfolgen, Adressen, komplexen Variablen, Arrays, Aufzählungen, Strukturen und Wörterbüchern arbeiten.

In der neunten Lektion Sie sind der Erstellung intelligenter Verträge für das Ethereum-Mainnet einen Schritt näher gekommen. Sie erfahren, wie Sie Verträge mit Truffle im privaten Geth-Netzwerk sowie im Rinkeby-Testnetz veröffentlichen. Das Debuggen eines Smart Contracts im Rinkeby-Netzwerk ist sehr nützlich, bevor man ihn im Hauptnetzwerk veröffentlicht – dort ist fast alles echt, aber kostenlos.

Im Rahmen der Lektion erstellen Sie einen Rinkeby-Testnetzwerkknoten, finanzieren ihn mit Geldern und veröffentlichen einen Smart Contract.

Lektion 10 gewidmet der verteilten Datenspeicherung von Ethereum Swarm. Durch die Verwendung von verteiltem Speicher sparen Sie die Speicherung großer Datenmengen auf der Ethereum-Blockchain.

In diesem Tutorial erstellen Sie einen lokalen Swarm-Speicher sowie Schreib- und Lesevorgänge für Dateien und Dateiverzeichnisse. Als Nächstes erfahren Sie, wie Sie mit dem öffentlichen Swarm-Gateway arbeiten, Skripte schreiben, um über Node.js auf Swarm zuzugreifen, und wie Sie das Perl-Modul Net::Ethereum::Swarm verwenden.

Unterrichtsziel 11 – Beherrschen Sie die Arbeit mit Solidity Smart Contracts unter Verwendung der beliebten Programmiersprache Python und des Web3.py-Frameworks. Sie installieren das Framework, schreiben Skripte zum Kompilieren und Veröffentlichen des Smart Contracts und rufen seine Funktionen auf. In diesem Fall wird Web3.py sowohl allein als auch in Verbindung mit der integrierten Entwicklungsumgebung Truffle verwendet.

In Lektion 12 Sie lernen, mithilfe von Oracles Daten zwischen Smart Contracts und der realen Welt zu übertragen. Dies ist nützlich, wenn Sie Daten von Websites, IoT-Geräten, verschiedenen Geräten und Sensoren empfangen und Daten von Smart Contracts an diese Geräte senden möchten. Im praktischen Teil der Lektion erstellen Sie ein Orakel und einen Smart Contract, der den aktuellen Wechselkurs zwischen USD und Rubel von der Website der Zentralbank der Russischen Föderation erhält.

Lektion 1. Kurz über die Blockchain und das Ethereum-NetzwerkDas Ziel des Unterrichts: Machen Sie sich mit den Funktionsprinzipien der Ethereum-Blockchain, ihren Anwendungsbereichen und der grundlegenden Terminologie vertraut.
Praktische Aufgaben: nicht in dieser Lektion enthalten.

Es gibt heute kaum noch einen Softwareentwickler, der nichts über Blockchain-Technologie (Blockchain), Kryptowährungen (Kryptowährung oder Kryptowährung), Bitcoin (Bitcoin), Initial Coin Offering (ICO, Initial Coin Offering), Smart Contracts (Smart Contract) gehört hat. sowie andere Konzepte und Begriffe im Zusammenhang mit Blockchain.

Die Blockchain-Technologie eröffnet neue Märkte und schafft Arbeitsplätze für Programmierer. Wenn Sie alle Feinheiten der Kryptowährungstechnologien und Smart-Contract-Technologien verstehen, sollten Sie keine Probleme haben, dieses Wissen in der Praxis anzuwenden.

Man muss sagen, dass rund um Kryptowährungen und Blockchains viel spekuliert wird. Wir lassen Diskussionen über Änderungen der Kryptowährungskurse, die Schaffung von Pyramiden, die Feinheiten der Kryptowährungsgesetzgebung usw. beiseite. In unserer Schulung konzentrieren wir uns hauptsächlich auf die technischen Aspekte der Nutzung von Smart Contracts auf der Ethereum-Blockchain und der Entwicklung sogenannter dezentraler Anwendungen (DApps).

Was ist eine Blockchain?

Blockchain (Block Chain) ist eine Kette von Datenblöcken, die auf eine bestimmte Weise miteinander verbunden sind. Am Anfang der Kette steht der erste Block, der Primärblock (Genesis-Block) oder Genesis-Block genannt wird. Es folgt der zweite, dann der dritte und so weiter.

Alle diese Datenblöcke werden automatisch auf zahlreichen Knoten des Blockchain-Netzwerks dupliziert. Dadurch wird eine dezentrale Speicherung der Blockchain-Daten gewährleistet.
Sie können sich ein Blockchain-System als eine große Anzahl von Knoten (physische oder virtuelle Server) vorstellen, die in einem Netzwerk verbunden sind und alle Änderungen in der Kette von Datenblöcken replizieren. Dies ist wie ein riesiger Multi-Server-Computer, und die Knoten eines solchen Computers (Server) können über die ganze Welt verstreut sein. Und auch Sie können Ihren Computer zum Blockchain-Netzwerk hinzufügen.

Verteilte Datenbank

Eine Blockchain kann man sich als verteilte Datenbank vorstellen, die über alle Knoten des Blockchain-Netzwerks repliziert wird. Theoretisch ist die Blockchain so lange betriebsbereit, wie mindestens ein Knoten arbeitet und alle Blöcke der Blockchain speichert.

Verteiltes Datenregister

Blockchain kann als verteiltes Hauptbuch von Daten und Vorgängen (Transaktionen) betrachtet werden. Ein anderer Name für ein solches Register ist Ledger.

Daten können zu einem verteilten Hauptbuch hinzugefügt, aber nicht geändert oder gelöscht werden. Diese Unmöglichkeit wird insbesondere durch den Einsatz kryptografischer Algorithmen, spezieller Algorithmen zum Hinzufügen von Blöcken zur Kette und dezentraler Datenspeicherung erreicht.

Beim Hinzufügen von Blöcken und Durchführen von Operationen (Transaktionen) werden private und öffentliche Schlüssel verwendet. Sie schränken Blockchain-Benutzer ein, indem sie ihnen nur Zugriff auf ihre eigenen Datenblöcke gewähren.

Transaktionen

Blockchain speichert Informationen über Vorgänge (Transaktionen) in Blöcken. Gleichzeitig können alte, bereits abgeschlossene Transaktionen nicht zurückgesetzt oder geändert werden. Neue Transaktionen werden in neuen, hinzugefügten Blöcken gespeichert.

Auf diese Weise kann der gesamte Transaktionsverlauf unverändert auf der Blockchain aufgezeichnet werden. Daher kann Blockchain beispielsweise zur sicheren Speicherung von Banktransaktionen, Urheberrechtsinformationen, der Historie von Eigentümerwechseln usw. verwendet werden.

Die Ethereum-Blockchain enthält sogenannte Systemzustände. Wenn Transaktionen ausgeführt werden, ändert sich der Status vom Anfangsstatus zum aktuellen Status. Transaktionen werden in Blöcken erfasst.

Öffentliche und private Blockchains

Hierbei ist zu beachten, dass alles Gesagte nur für die sogenannten öffentlichen Blockchain-Netzwerke gilt, die nicht von natürlichen oder juristischen Personen, Regierungsbehörden oder Regierungen kontrolliert werden können.
Sogenannte private Blockchain-Netzwerke stehen unter der vollständigen Kontrolle ihrer Ersteller und dort ist alles möglich, beispielsweise ein vollständiger Austausch aller Blöcke der Kette.

Praktische Anwendungen der Blockchain

Wofür kann Blockchain nützlich sein?

Kurz gesagt ermöglicht die Blockchain die sichere Durchführung von Transaktionen (Transaktionen) zwischen Personen oder Unternehmen, die einander nicht vertrauen. In der Blockchain erfasste Daten (Transaktionen, personenbezogene Daten, Dokumente, Zertifikate, Verträge, Rechnungen etc.) können nach der Erfassung nicht verfälscht oder ersetzt werden. Daher ist es auf Basis der Blockchain möglich, beispielsweise vertrauenswürdige verteilte Register verschiedener Arten von Dokumenten zu erstellen.

Natürlich wissen Sie, dass auf der Basis von Blockchains Kryptowährungssysteme entstehen, die gewöhnliches Papiergeld ersetzen sollen. Papiergeld wird auch Fiat (von Fiat Money) genannt.
Blockchain gewährleistet die Speicherung und Unveränderlichkeit der in Blöcken aufgezeichneten Transaktionen und kann daher zur Erstellung von Kryptowährungssystemen verwendet werden. Es enthält den gesamten Verlauf der Übertragung von Kryptogeldern zwischen verschiedenen Benutzern (Konten) und jeder Vorgang kann verfolgt werden.

Obwohl Transaktionen innerhalb von Kryptowährungssystemen anonym sein können, führt das Abheben der Kryptowährung und deren Umtausch in Fiat-Geld in der Regel dazu, dass die Identität des Eigentümers des Kryptowährungs-Assets preisgegeben wird.

Sogenannte Smart Contracts, bei denen es sich um Software handelt, die im Ethereum-Netzwerk läuft, ermöglichen es Ihnen, den Prozess des Abschlusses von Transaktionen und die Überwachung ihrer Umsetzung zu automatisieren. Dies ist besonders effektiv, wenn die Bezahlung der Transaktion mit der Kryptowährung Ether erfolgt.

Die in der Programmiersprache Solidity geschriebene Ethereum-Blockchain und Ethereum-Smart-Contracts können beispielsweise in folgenden Bereichen eingesetzt werden:

  • eine Alternative zur notariellen Beglaubigung von Dokumenten;
  • Speicherung eines Verzeichnisses von Immobilienobjekten und Informationen über Transaktionen mit Immobilienobjekten;
  • Speicherung von Urheberrechtsinformationen zu geistigem Eigentum (Bücher, Bilder, Musikwerke usw.);
  • Schaffung unabhängiger Abstimmungssysteme;
  • Finanzen und Banken;
  • Logistik auf internationaler Ebene, Verfolgung des Warenverkehrs;
  • Speicherung personenbezogener Daten als Analogon zu einem Personalausweissystem;
  • sichere Transaktionen im kommerziellen Bereich;
  • Speicherung der Ergebnisse ärztlicher Untersuchungen sowie der Historie verordneter Eingriffe

Probleme mit Blockchain

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

Es gibt Probleme bei der Überprüfung von Daten vor dem Hinzufügen zur Blockchain (z. B.: Sind sie gefälscht?), Probleme bei der Sicherheit von System- und Anwendungssoftware, die für die Arbeit mit der Blockchain verwendet werden, Probleme bei der Möglichkeit, mithilfe von Social-Engineering-Methoden den Zugriff zu stehlen zu Kryptowährungs-Wallets usw. .P.

Auch hier gilt: Wenn es sich nicht um eine öffentliche Blockchain handelt, deren Knoten über die ganze Welt verstreut sind, sondern um eine private Blockchain einer Person oder Organisation, dann wird das Vertrauensniveau hier nicht höher sein als das Vertrauensniveau in dieser Person oder dieser Organisation.

Dabei ist auch zu berücksichtigen, dass die in der Blockchain erfassten Daten für jedermann zugänglich werden. In diesem Sinne eignet sich die Blockchain (insbesondere die öffentliche) nicht zur Speicherung vertraulicher Informationen. Die Tatsache, dass Informationen auf der Blockchain nicht geändert werden können, kann jedoch dazu beitragen, verschiedene Arten betrügerischer Aktivitäten zu verhindern oder zu untersuchen.

Dezentrale Anwendungen von Ethereum sind praktisch, wenn Sie ihre Nutzung mit Kryptowährung bezahlen. Je mehr Menschen Kryptowährungen besitzen oder bereit sind, diese zu kaufen, desto beliebter werden DApps und Smart Contracts.

Häufige Probleme der Blockchain, die ihre praktische Anwendung behindern, sind die begrenzte Geschwindigkeit, mit der neue Blöcke hinzugefügt werden können, und die relativ hohen Transaktionskosten. Die Technologie in diesem Bereich entwickelt sich jedoch aktiv weiter und es besteht die Hoffnung, dass technische Probleme im Laufe der Zeit gelöst werden.

Ein weiteres Problem besteht darin, dass Smart Contracts auf der Ethereum-Blockchain in einer isolierten Umgebung virtueller Maschinen laufen und keinen Zugriff auf reale Daten haben. Insbesondere kann das Smart-Contract-Programm selbst keine Daten von Standorten oder physischen Geräten (Sensoren, Kontakten usw.) lesen und auch keine Daten an externe Geräte ausgeben. Wir werden dieses Problem und Möglichkeiten zu seiner Lösung in einer Lektion diskutieren, die den sogenannten Oracles – Informationsvermittlern intelligenter Verträge – gewidmet ist.

Es gibt auch gesetzliche Einschränkungen. In einigen Ländern ist es beispielsweise verboten, Kryptowährungen als Zahlungsmittel zu verwenden, Sie können sie jedoch als eine Art digitalen Vermögenswert wie Wertpapiere besitzen. Solche Vermögenswerte können an der Börse gekauft und verkauft werden. Wenn Sie ein Projekt erstellen, das mit Kryptowährungen arbeitet, müssen Sie sich in jedem Fall mit der Gesetzgebung des Landes vertraut machen, in dessen Zuständigkeitsbereich Ihr Projekt fällt.

Wie eine Blockchain-Kette entsteht

Wie bereits erwähnt, handelt es sich bei der Blockchain um eine einfache Kette von Datenblöcken. Zuerst wird der erste Block dieser Kette gebildet, dann wird der zweite hinzugefügt und so weiter. Es wird davon ausgegangen, dass Transaktionsdaten in Blöcken gespeichert werden und dem neuesten Block hinzugefügt werden.

In Abb. In 1.1 haben wir die einfachste Version einer Blockfolge gezeigt, wobei der erste Block auf den nächsten verweist.

Das Buch „Creating Solidity Smart Contracts for the Ethereum Blockchain. Praxisratgeber“
Reis. 1.1. Einfache Blockfolge

Mit dieser Option ist es jedoch sehr einfach, den Inhalt eines beliebigen Blocks in der Kette zu manipulieren, da die Blöcke keine Informationen zum Schutz vor Änderungen enthalten. Wenn man bedenkt, dass die Blockchain dazu bestimmt ist, von Personen und Unternehmen genutzt zu werden, zwischen denen kein Vertrauen besteht, können wir daraus schließen, dass diese Methode der Datenspeicherung für die Blockchain nicht geeignet ist.

Beginnen wir damit, Blöcke vor Fälschung zu schützen. Im ersten Schritt werden wir versuchen, jeden Block mit einer Prüfsumme zu schützen (Abb. 1.2).

Das Buch „Creating Solidity Smart Contracts for the Ethereum Blockchain. Praxisratgeber“
Reis. 1.2. Hinzufügen von Schutz für diese Blöcke durch eine Prüfsumme

Nun kann ein Angreifer den Block nicht einfach ändern, da er die Prüfsumme der Blockdaten enthält. Die Überprüfung der Prüfsumme zeigt, dass die Daten geändert wurden.

Um die Prüfsumme zu berechnen, können Sie eine der Hashing-Funktionen wie MD-5, SHA-1, SHA-256 usw. verwenden. Hash-Funktionen berechnen einen Wert (z. B. eine Textzeichenfolge konstanter Länge), indem sie irreversible Operationen an einem Datenblock ausführen. Die Operationen hängen von der Art der Hash-Funktion ab.

Selbst wenn sich der Inhalt des Datenblocks geringfügig ändert, ändert sich auch der Hashwert. Durch die Analyse des Hash-Funktionswerts ist es unmöglich, den Datenblock zu rekonstruieren, für den er berechnet wurde.

Wird ein solcher Schutz ausreichen? Leider gibt es keine.

Bei diesem Schema schützt die Prüfsumme (Hash-Funktion) nur einzelne Blöcke, nicht jedoch die gesamte Blockchain. Wenn ein Angreifer den Algorithmus zur Berechnung der Hash-Funktion kennt, kann er den Inhalt eines Blocks leicht ersetzen. Außerdem hindert ihn nichts daran, Blöcke aus der Kette zu entfernen oder neue hinzuzufügen.

Um die gesamte Kette als Ganzes zu schützen, können Sie in jedem Block zusammen mit den Daten einen Hash der Daten des vorherigen Blocks speichern (Abb. 1.3).

Das Buch „Creating Solidity Smart Contracts for the Ethereum Blockchain. Praxisratgeber“
Reis. 1.3. Fügen Sie den Hash des vorherigen Blocks zum Datenblock hinzu

Bei diesem Schema müssen Sie zum Ändern eines Blocks die Hash-Funktionen aller nachfolgenden Blöcke neu berechnen. Es scheint, was ist das Problem?

In realen Blockchains werden zusätzlich künstliche Schwierigkeiten beim Hinzufügen neuer Blöcke geschaffen – es kommen Algorithmen zum Einsatz, die viele Rechenressourcen erfordern. Wenn man bedenkt, dass man, um Änderungen an einem Block vorzunehmen, nicht nur diesen einen Block, sondern alle nachfolgenden neu berechnen muss, wird dies äußerst schwierig sein.

Denken wir auch daran, dass Blockchain-Daten auf zahlreichen Netzwerkknoten gespeichert (dupliziert) werden, d. h. Es wird eine dezentrale Speicherung verwendet. Und das macht es viel schwieriger, einen Block zu fälschen, weil Änderungen müssen an allen Netzwerkknoten vorgenommen werden.

Da Blöcke Informationen über den vorherigen Block speichern, ist es möglich, den Inhalt aller Blöcke in der Kette zu überprüfen.

Ethereum-Blockchain

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

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

Mining oder wie Blöcke entstehen

Mining ist ein ziemlich komplexer und ressourcenintensiver Prozess des Hinzufügens neuer Blöcke zur Blockchain-Kette und überhaupt kein „Kryptowährungs-Mining“. Mining stellt die Funktionalität der Blockchain sicher, denn Es ist dieser Prozess, der für das Hinzufügen von Transaktionen zur Ethereum-Blockchain verantwortlich ist.

Personen und Organisationen, die am Hinzufügen von Blöcken beteiligt sind, werden Miner genannt.
Die auf den Miner-Knoten laufende Software versucht, einen Hashing-Parameter namens Nonce für den letzten Block zu finden, um einen bestimmten, vom Netzwerk angegebenen Hash-Wert zu erhalten. Der in Ethereum verwendete Ethash-Hashing-Algorithmus ermöglicht es Ihnen, den Nonce-Wert nur durch sequentielle Suche zu erhalten.

Findet der Miner-Knoten den richtigen Nonce-Wert, dann handelt es sich um den sogenannten Proof of Work (PoW, Proof-of-Work). Wenn in diesem Fall ein Block zum Ethereum-Netzwerk hinzugefügt wird, erhält der Miner eine bestimmte Belohnung in der Netzwerkwährung Ether. Zum Zeitpunkt des Schreibens beträgt die Belohnung 5 Ether, diese wird jedoch mit der Zeit reduziert.

So stellen Ethereum-Miner den Betrieb des Netzwerks durch das Hinzufügen von Blöcken sicher und erhalten dafür Kryptowährungsgeld. Im Internet gibt es viele Informationen über Miner und Mining, wir werden uns jedoch auf die Erstellung von Solidity-Verträgen und DApps im Ethereum-Netzwerk konzentrieren.

Zusammenfassung der Lektion

In der ersten Lektion haben Sie sich mit der Blockchain vertraut gemacht und erfahren, dass es sich um eine speziell zusammengesetzte Abfolge von Blöcken handelt. Der Inhalt zuvor aufgezeichneter Blöcke kann nicht geändert werden, da dies eine Neuberechnung aller nachfolgenden Blöcke auf vielen Netzwerkknoten erfordern würde, was viel Ressourcen und Zeit erfordert.

Blockchain kann zur Speicherung der Ergebnisse von Transaktionen verwendet werden. Sein Hauptzweck besteht darin, sichere Transaktionen zwischen Parteien (Personen und Organisationen) zu organisieren, zwischen denen kein Vertrauen besteht. Sie haben erfahren, in welchen konkreten Geschäftsbereichen und in welchen Bereichen die Ethereum-Blockchain und Solidity Smart Contracts eingesetzt werden können. Dies ist der Bankensektor, die Registrierung von Eigentumsrechten, Dokumenten usw.

Sie haben außerdem erfahren, dass es bei der Nutzung der Blockchain zu verschiedenen Problemen kommen kann. Dabei handelt es sich um Probleme bei der Überprüfung der der Blockchain hinzugefügten Informationen, um die Geschwindigkeit der Blockchain, um die Kosten von Transaktionen, um das Problem des Datenaustauschs zwischen Smart Contracts und der realen Welt sowie um mögliche Angriffe von Angreifern, die darauf abzielen, Kryptowährungsgelder von Benutzerkonten zu stehlen .

Wir haben auch kurz über Mining als den Prozess des Hinzufügens neuer Blöcke zur Blockchain gesprochen. Mining ist notwendig, um Transaktionen abzuschließen. Die am Mining Beteiligten stellen die Funktionsfähigkeit der Blockchain sicher und erhalten dafür eine Belohnung in Kryptowährung.

Lektion 2. Vorbereiten einer Arbeitsumgebung in Ubuntu und Debian OSAuswahl eines Betriebssystems
Installieren der erforderlichen Dienstprogramme
Geth und Swarm unter Ubuntu installieren
Geth und Swarm unter Debian installieren
Vorbereitende Vorbereitung
Herunterladen der Go-Distribution
Umgebungsvariablen festlegen
Überprüfung der Go-Version
Geth und Swarm installieren
Erstellen einer privaten Blockchain
Vorbereiten der genesis.json-Datei
Erstellen Sie ein Verzeichnis für die Arbeit
Ein Konto erstellen
Starten der Knoteninitialisierung
Knotenstartoptionen
Verbinden Sie sich mit unserem Knoten
Bergbaumanagement und Bilanzprüfung
Herunterfahren der Geth-Konsole
Zusammenfassung der Lektion

Lektion 3. Vorbereiten der Arbeitsumgebung auf Raspberry Pi 3Den Raspberry Pi 3 für die Arbeit vorbereiten
Rasberian installieren
Installiere Updates
SSH-Zugriff aktivieren
Festlegen einer statischen IP-Adresse
Installieren der erforderlichen Dienstprogramme
Go installieren
Herunterladen der Go-Distribution
Umgebungsvariablen festlegen
Überprüfung der Go-Version
Geth und Swarm installieren
Erstellen einer privaten Blockchain
Überprüfen Sie Ihr Konto und Ihren Kontostand
Zusammenfassung der Lektion

Lektion 4. Konten und Geldtransfer zwischen KontenKonten anzeigen und hinzufügen
Sehen Sie sich eine Liste mit Konten an
Ein Konto hinzufügen
Befehlsoptionen für das Geth-Konto
Kontopasswörter
Kryptowährung in Ethereum
Ethereum-Währungseinheiten
Wir ermitteln den aktuellen Saldo unserer Konten
Überweisen Sie Geld von einem Konto auf ein anderes
eth.sendTransaction-Methode
Transaktionsstatus anzeigen
Transaktionsbeleg
Zusammenfassung der Lektion

Lektion 5. Veröffentlichen Sie Ihren ersten VertragIntelligente Verträge in Ethereum
Intelligente Vertragsausführung
Virtuelle Maschine von Ethereum
Integrierte Entwicklungsumgebung Remix Solidity IDE
Laufende Kompilierung
Vertragsfunktionen aufrufen
Veröffentlichung eines Vertrags in einem privaten Netzwerk
Abrufen der ABI-Definition und des Vertragsbinärcodes
Veröffentlichung des Vertrags
Überprüfen des Status der Vertragsveröffentlichungstransaktion
Vertragsfunktionen aufrufen
Batch-Compiler-Solc
Solc unter Ubuntu installieren
Solc unter Debian installieren
Zusammenstellung des HelloSol-Vertrags
Veröffentlichung des Vertrags
Solc auf Rasberian installieren
Zusammenfassung der Lektion

Lektion 6. Intelligente Verträge und Node.jsNode.js installieren
Installation auf Ubuntu
Installation auf Debian
Ganache-cli installieren und ausführen
Web3-Installation
Solc installieren
Node.js auf Rasberian installieren
Skript zum Abrufen einer Liste von Konten in der Konsole
Skript zum Veröffentlichen eines Smart Contracts
Starten und Parameter abrufen
Startoptionen abrufen
Vertragszusammenstellung
Entsperren Sie Ihr Konto
Laden des ABI- und Vertrags-Binärcodes
Schätzung der benötigten Gasmenge
Erstellen Sie ein Objekt und beginnen Sie mit der Veröffentlichung eines Vertrags
Ausführen des Vertragsveröffentlichungsskripts
Aufrufen von Smart-Contract-Funktionen
Ist es möglich, einen veröffentlichten Smart Contract zu aktualisieren?
Arbeiten mit Web3 Version 1.0.x
Eine Liste der Konten abrufen
Veröffentlichung des Vertrags
Vertragsfunktionen aufrufen
Überweisen Sie Geld von einem Konto auf ein anderes
Überweisen Sie Geld auf das Vertragskonto
Aktualisierung des HelloSol-Smart-Vertrags
Erstellen Sie ein Skript, um Ihren Kontostand anzuzeigen
Fügen Sie einen Aufruf der getBalance-Funktion zum Skript call_contract_get_promise.js hinzu
Wir laden das Smart-Contract-Konto auf
Zusammenfassung der Lektion

Lektion 7. Einführung in TrüffelTrüffel installieren
Erstellen Sie ein HelloSol-Projekt
Erstellen des Projektverzeichnisses und der Dateien
Vertragsverzeichnis
Katalogmigrationen
Verzeichnistest
truffle-config.js-Datei
Zusammenstellung des HelloSol-Vertrags
Beginnen Sie mit der Veröffentlichung eines Vertrags
Aufrufen von HelloSol-Vertragsfunktionen in einer Trüffel-Eingabeaufforderung
Aufrufen von HelloSol-Vertragsfunktionen über ein JavaScript-Skript, auf dem Node.js ausgeführt wird
Installation des Truffle-Contract-Moduls
Aufruf der Vertragsfunktionen getValue und getString
Aufruf der Vertragsfunktionen setValue und setString
Vertragsänderung und Neuveröffentlichung
Arbeiten mit Web3 Version 1.0.x
Änderungen am HelloSol-Smart-Vertrag vornehmen
Skripte zum Aufrufen von Vertragsmethoden
Testen in Trüffel
Festigkeitstest
JavaScript-Test
Zusammenfassung der Lektion

Lektion 8. SoliditätsdatentypenVertrag zum Lernen von Datentypen
Boolesche Datentypen
Ganzzahlen ohne Vorzeichen und Ganzzahlen mit Vorzeichen
Festkommazahlen
Adresse
Variablen komplexer Typen
Arrays mit fester Größe
Dynamische Arrays
Auflistung
Struktur
Zuordnung von Wörterbüchern
Zusammenfassung der Lektion

Lektion 9. Migration von Verträgen in das private Netzwerk und in das Rinkeby-NetzwerkVeröffentlichung eines Vertrags von Truffle im privaten Geth-Netzwerk
Vorbereiten eines privaten Netzwerkknotens
Vorbereitung eines Werkvertrages
Erstellen und Migrieren eines Vertrags in das Truffle-Netzwerk
Geth startet die lokale Netzwerkmigration
Trüffelartefakte erhalten
Veröffentlichung eines Vertrags von Truffle im Rinkeby-Testnetz
Vorbereiten eines Geth-Knotens für die Zusammenarbeit mit Rinkeby
Knotensynchronisation
Konten hinzufügen
Laden Sie Ihr Rinkeby-Konto mit Ether auf
Beginn der Vertragsmigration zum Rinkeby-Netzwerk
Vertragsinformationen im Rinkeby-Netzwerk anzeigen
Trüffelkonsole für Rinkeby Network
Einfachere Möglichkeit, Vertragsfunktionen aufzurufen
Vertragsmethoden mit Node.js aufrufen
Überweisen Sie Geld zwischen Konten in der Truffle-Konsole für Rinkby
Zusammenfassung der Lektion

Lektion 10. Dezentrale Datenspeicherung im Ethereum-SchwarmWie funktioniert Ethereum Swarm?
Swarm installieren und starten
Operationen mit Dateien und Verzeichnissen
Hochladen einer Datei auf Ethereum Swarm
Lesen einer Datei von Ethereum Swarm
Zeigen Sie das Manifest einer hochgeladenen Datei an
Laden von Verzeichnissen mit Unterverzeichnissen
Lesen einer Datei aus einem heruntergeladenen Verzeichnis
Verwendung eines öffentlichen Swarm-Gateways
Zugriff auf Swarm über Node.js-Skripte
Perl Net::Ethereum::Swarm-Modul
Installation des Net::Ethereum::Swarm-Moduls
Daten schreiben und lesen
Zusammenfassung der Lektion

Lektion 11. Web3.py-Framework für die Arbeit mit Ethereum in PythonWeb3.py installieren
Aktualisieren und Installieren notwendiger Pakete
Installation des easysolc-Moduls
Einen Vertrag mit Web3.py veröffentlichen
Vertragszusammenstellung
Verbindung zu einem Anbieter herstellen
Vertragsveröffentlichung durchführen
Speicherung der Vertragsadresse und des ABI in einer Datei
Ausführen des Vertragsveröffentlichungsskripts
Vertragsmethoden aufrufen
Adresse und Abi eines Vertrags aus einer JSON-Datei lesen
Verbindung zu einem Anbieter herstellen
Einen Vertragsgegenstand erstellen
Vertragsmethoden aufrufen
Trüffel und Web3.py
Zusammenfassung der Lektion

Lektion 12. OrakelKann ein Smart Contract Daten aus der Außenwelt vertrauen?
Orakel als Blockchain-Informationsvermittler
Datenquelle
Code zur Darstellung von Daten aus der Quelle
Oracle zur Erfassung des Wechselkurses in der Blockchain
USDRateOracle-Vertrag
Aktualisierung des Wechselkurses in einem Smart Contract
Verwendung eines Web-Socket-Anbieters
Warten auf RateUpdate-Ereignis
Behandeln des RateUpdate-Ereignisses
Initiieren einer Datenaktualisierung in einem Smart Contract
Zusammenfassung der Lektion

Source: habr.com

Kommentar hinzufügen