
Über ein Jahr habe ich an dem Buch „Erstellung von Smart Contracts mit Solidity für die Ethereum-Blockchain. Praktische Anleitung“ gearbeitet, und nun ist dieses Werk abgeschlossen und das Buch .
Ich hoffe, mein Buch hilft Ihnen, schnell mit der Erstellung von Smart Contracts mit Solidity und dezentralen Anwendungen (DApps) für die Ethereum-Blockchain zu beginnen. Es besteht aus 12 Lektionen mit praktischen Aufgaben. Nach dem 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 Orakeln auszutauschen und mit dem Testnetz Rinkeby zu arbeiten.
Das Buch richtet sich an alle, die sich für moderne Technologien im Bereich Blockchain interessieren und schnell Kenntnisse erwerben möchten, um an spannenden und zukunftsträchtigen Projekten zu arbeiten.
Unten finden Sie das Inhaltsverzeichnis und das erste Kapitel des Buches (auch auf Unser Buch ist für diejenigen gedacht, die nicht nur die Prinzipien der Funktionsweise der Ethereum-Blockchain verstehen, sondern auch praktische Fähigkeiten in der Erstellung von dezentralen Anwendungen (DApps) in der Programmiersprache Solidity für dieses Netzwerk erwerben möchten.
InhaltsverzeichnisEinführungEs ist besser, dieses Buch nicht nur zu lesen, sondern damit zu arbeiten, indem Sie die praktischen Aufgaben in den Lektionen durchführen. Sie benötigen einen lokalen Computer, einen virtuellen oder Cloud-Server mit installiertem Debian oder Ubuntu. Außerdem kann für viele Aufgaben ein Raspberry Pi verwendet werden.
In der ersten Lektion
werden wir die Prinzipien der Funktionsweise der Ethereum-Blockchain und die grundlegende Terminologie behandeln und erläutern, wo dieser Blockchain eingesetzt werden kann. In der zweiten Lektion
Ziel werden wir einen Knoten einer privaten Ethereum-Blockchain erstellen, um damit im Rahmen dieses Kurses auf einem Ubuntu- und Debian-Server zu arbeiten. Wir werden die Besonderheiten der Installation der wichtigsten Utilities wie geth, die den Betrieb unseres Blockchain-Knotens gewährleisten, sowie des Daemons für die dezentrale Datenspeicherung swarm untersuchen. In der dritten Lektion
Die dritte Lektion wird Ihnen beibringen, wie Sie Experimente mit Ethereum auf dem kostengünstigen Mikrocomputer Raspberry Pi durchführen. Sie werden das Betriebssystem (OS) Rasberian auf dem Raspberry Pi installieren, das Geth-Tool, das den Betrieb eines Blockchain-Knotens ermöglicht, sowie den Daemon des dezentralen Datenspeichers Swarm.
Die vierte Lektion beschäftigt sich mit Konten und Kryptowährungseinheiten im Ethereum-Netzwerk sowie mit Möglichkeiten, Gelder von einem Konto auf ein anderes über die Geth-Konsole zu übertragen. Sie lernen, Konten zu erstellen, Transaktionen einzuleiten, den Status von Transaktionen abzurufen und deren Quittung zu erhalten.
In der fünften Lektion werden Sie mit Smart Contracts im Ethereum-Netzwerk vertraut gemacht und erfahren, wie sie von der Ethereum Virtual Machine ausgeführt werden.
Sie werden Ihren ersten Smart Contract in einem privaten Ethereum-Netzwerk erstellen und veröffentlichen und lernen, wie Sie dessen Funktionen aufrufen. Dazu verwenden Sie die Entwicklungsumgebung Remix Solidity IDE. Außerdem lernen Sie, wie Sie den Paketcompiler solc installieren und nutzen.
Wir werden auch über die sogenannte Application Binary Interface (ABI) sprechen und Ihnen beibringen, wie Sie sie verwenden.
Die sechste Lektion beschäftigt sich mit der Erstellung von JavaScript-Skripten, die unter Node.js laufen und Operationen mit Solidity-Smart Contracts ausführen.
Sie werden Node.js auf Ubuntu, Debian und Rasberian installieren, Skripte schreiben, um einen Smart Contract im lokalen Ethereum-Netzwerk zu veröffentlichen und dessen Funktionen aufzurufen.
Darüber hinaus lernen Sie, wie Sie mit Skripten Gelder zwischen regulären Konten übertragen und diese auf Smart Contract-Konten gutschreiben.
In der siebten Lektion lernen Sie, wie Sie die bei Entwicklern von Smart Contracts beliebte integrierte Entwicklungsumgebung Truffle installieren und verwenden. Sie werden JavaScript-Skripte erstellen, die Funktionen von Verträgen mit dem Modul truffle-contract aufrufen, und zudem Ihren Smart Contract mit den Mitteln von Truffle testen.
Die achte Lektion beschäftigt sich mit Datentypen in Solidity. Sie werden Smart Contracts schreiben, die mit Datentypen wie vorzeichenbehafteten und vorzeichenlosen Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, Adressen, Variablen komplexer Typen, Arrays, Enumerationen, Strukturen und Dictionaries arbeiten.
In der neunten Lektion Sie werden einen Schritt näher am Erstellen von Smart Contracts für das Ethereum-Hauptnetz kommen. Sie lernen, wie man Verträge mit Truffle in einem privaten Geth-Netz veröffentlicht sowie im Testnetz Rinkeby. Das Debuggen von Smart Contracts im Rinkeby-Netz ist sehr nützlich, bevor sie im Hauptnetz veröffentlicht werden – dort ist alles im Grunde echt, aber kostenlos.
Im Rahmen der Lektion erstellen Sie einen Knoten im Testnetz Rinkeby, fügen ihm Mittel hinzu und veröffentlichen einen Smart Contract.
Lektion 10 behandelt verteilte Datenspeicher von Ethereum Swarm. Durch die Nutzung verteilter Speichersysteme sparen Sie Kosten bei der Speicherung großer Datenmengen in der Ethereum-Blockchain.
In dieser Lektion erstellen Sie einen lokalen Swarm-Speicher, führen Lese- und Schreiboperationen für Dateien sowie für Verzeichnisse mit Dateien durch. Danach lernen Sie, wie man mit dem öffentlichen Swarm-Gateway arbeitet, schreiben Skripte für den Zugriff auf Swarm aus Node.js und nutzen das Perl-Modul Net::Ethereum::Swarm.
Ziel der Lektion 11 ist es, das Arbeiten mit Smart Contracts in Solidity unter Verwendung der beliebten Programmiersprache Python und des Frameworks Web3.py zu meistern. Sie installieren dieses Framework, schreiben Skripte zum Kompilieren und Veröffentlichen von Smart Contracts sowie zum Aufruf deren Funktionen. Dabei wird Web3.py sowohl eigenständig als auch zusammen mit der integrierten Entwicklungsumgebung Truffle verwendet.
In der Lektion 12 lernen Sie, Daten zwischen Smart Contracts und der realen Welt mithilfe von Orakeln zu übertragen. Dies wird Ihnen helfen, Daten von Websites, IoT-Geräten, verschiedenen Instrumenten und Sensoren zu erhalten und Daten aus Smart Contracts an diese Geräte zu senden. Im praktischen Teil der Lektion erstellen Sie ein Oracle und einen Smart Contract, der den aktuellen Wechselkurs von USD zu Rubel von der Website der Zentralbank der Russischen Föderation abruft.
Lektion 1. Kurz über Blockchain und das Ethereum-NetzZiel der Lektion: sich mit den Prinzipien der Funktionsweise der Ethereum-Blockchain, ihren Anwendungsbereichen und der grundlegenden Terminologie vertraut zu machen.
Praktische Aufgaben: in dieser Lektion sind nicht vorgesehen.
Es gibt heutzutage kaum einen Softwareentwickler, der noch nichts von der Blockchain-Technologie, Kryptowährungen, Bitcoin, ICOs, Smart Contracts oder anderen Begriffen und Termini gehört hat, die mit Blockchain zu tun haben.
Die Blockchain-Technologie eröffnet neue Märkte und schafft Arbeitsplätze für Programmierer. Wenn Sie die Feinheiten der Kryptowährungstechnologien und der Smart-Contract-Technologien verstehen, sollten Sie keine Probleme haben, dieses Wissen in der Praxis anzuwenden.
Es ist wichtig zu sagen, dass es um Kryptowährungen und Blockchains viele Spekulationen gibt. Wir werden Überlegungen zu den Kursveränderungen von Kryptowährungen, zum Aufbau von Pyramiden, zu den Feinheiten der Kryptowährungslegislation usw. beiseite lassen. In unserem Lehrkurs konzentrieren wir uns hauptsächlich auf die technischen Aspekte der Anwendung von Smart Contracts auf der Ethereum-Blockchain (Ethereum, Ether) und der Entwicklung von sogenannten dezentralen Anwendungen (Distributed Application, DApp).
Was ist Blockchain
Die Blockchain (Blockchain, Block Chain) ist eine Kette von Datenblöcken, die auf bestimmte Weise miteinander verbunden sind. Am Anfang der Kette befindet sich der erste Block, der als primärer Block (genesis block) oder Genesis-Block bezeichnet wird. Darauf folgt der zweite, dann der dritte und so weiter.
Alle diese Datenblöcke werden automatisch auf zahlreichen Knoten des Blockchain-Netzwerks dupliziert. Auf diese Weise wird eine dezentrale Speicherung der Blockchain-Daten gewährleistet.
Sie können sich das Blockchain-System als eine große Anzahl von Knoten (physikalischen oder virtuellen Servern) vorstellen, die in einem Netzwerk zusammengefasst 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) auf der ganzen Welt verteilt sein können. Und Sie können auch Ihren Computer ins Blockchain-Netzwerk einfügen.
Verteilte Datenbank
Die Blockchain kann als verteilte Datenbank betrachtet werden, die auf alle Knoten des Blockchain-Netzwerks repliziert wird. Theoretisch wird die Blockchain funktionsfähig sein, solange mindestens ein Knoten aktiv ist, der alle Blockdaten der Blockchain speichert.
Verteiltes Hauptbuch
Die Blockchain kann als ein verteiltes Hauptbuch von Daten und Transaktionen (Transaktionen) betrachtet werden. Ein weiterer Begriff für dieses Hauptbuch ist das Ledger.
In das verteilte Register können Daten hinzugefügt werden, aber sie können nicht geändert oder gelöscht werden. Diese Unmöglichkeit wird unter anderem durch den Einsatz kryptografischer Algorithmen, spezieller Algorithmen zur Hinzufügung von Blöcken zur Kette und die dezentralisierte Speicherung von Daten erreicht.
Beim Hinzufügen von Blöcken und der Durchführung von Operationen (Transaktionen) werden private und öffentliche Schlüssel verwendet. Diese schränken die Benutzer der Blockchain ein, indem sie ihnen nur Zugriff auf ihre eigenen Datenblöcke gewähren.
Transaktionen
Die Blockchain speichert Informationen über Transaktionen (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 in der Blockchain die gesamte Transaktionshistorie unverändert festgehalten werden. Daher kann die Blockchain beispielsweise für die zuverlässige Speicherung von Bankgeschäften,Urheberrechtsinformationen, der Historie von Eigentümerwechseln von Immobilien usw. verwendet werden.
Die Ethereum-Blockchain enthält sogenannte Systemzustände. Im Laufe der Durchführung von Transaktionen ändert sich der Zustand von initial bis aktuell. Transaktionen werden in Blöcken festgehalten.
Öffentliche und private Blockchains
Hier sei angemerkt, dass alles, was gesagt wurde, nur für sogenannte öffentliche Blockchain-Netzwerke gilt, die nicht von einzelnen physischen oder juristischen Personen, staatlichen Stellen oder Regierungen kontrolliert werden können.
Die sogenannten privaten Blockchain-Netzwerke stehen unter vollständiger Kontrolle ihrer Schöpfer, und dort ist alles möglich, zum Beispiel die vollständige Ersetzung aller Blöcke in der Kette.
Praktische Anwendungen der Blockchain
Wofür kann die Blockchain nützlich sein?
Kurz gesagt, die Blockchain ermöglicht sichere Transaktionen (Deals) zwischen Personen oder Unternehmen, die einander nicht vertrauen. Die in der Blockchain festgehaltenen Daten (Transaktionen, persönliche Daten, Dokumente, Beglaubigungen, Verträge, Rechnungen usw.) können nach der Speicherung nicht gefälscht oder ersetzt werden. Daher lassen sich auf Basis der Blockchain beispielsweise vertrauenswürdige dezentrale Register verschiedenster Dokumente erstellen.
Natürlich wissen Sie, dass auf der Grundlage von Blockchains Kryptowährungssysteme geschaffen werden, die dazu gedacht sind, gewöhnliches Papiergeld zu ersetzen. Papiergeld wird auch als Fiat-Währung bezeichnet (von Fiat Money).
Die Blockchain gewährleistet die Speicherung und Unveränderlichkeit von Transaktionen, die in Blöcke aufgezeichnet sind, weshalb sie zur Erstellung von Kryptowährungssystemen verwendet werden kann. Sie enthält die gesamte Geschichte der Übertragung von Krypto-Mitteln zwischen verschiedenen Nutzern (Konten), wobei jede Transaktion nachverfolgt werden kann.
Obwohl Transaktionen innerhalb von Kryptowährungssystemen anonym sein können, führt die Auszahlung von Kryptowährung und der Umtausch gegen Fiat-Währung in der Regel zur Offenlegung der Identität des Eigentümers des Krypto-Assets.
Die sogenannten Smart Contracts, die Software sind, die im Ethereum-Netzwerk arbeitet, ermöglichen die Automatisierung des Abschlusses von Verträgen und die Kontrolle ihrer Durchführung. Dies ist besonders effektiv, wenn die Zahlung für den Vertrag in der Kryptowährung Ether (Ethereal) erfolgt.
Die Ethereum-Blockchain und die Smart Contracts von Ethereum, die in der Programmiersprache Solidity geschrieben sind, können beispielsweise in folgenden Bereichen verwendet werden:
- Alternativen zur notariellen Beglaubigung von Dokumenten;
- Speicherung des Registers von Immobilienobjekten und Informationen über Transaktionen mit Immobilien;
- Speicherung von Informationen über Urheberrechte an geistigem Eigentum (Bücher, Bilder, Musikwerke usw.);
- Schaffung von Systemen für unabhängige Abstimmungen;
- Bereich Finanzen und Bankgeschäfte;
- Logistik im internationalen Maßstab, Verfolgung von Warentransporten;
- Speicherung personenbezogener Daten als Analog zu Ausweissystemen;
- Sichere Transaktionen im kommerziellen Bereich;
- Speicherung von Ergebnissen medizinischer Untersuchungen sowie der Geschichte der durchgeführten 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, bevor sie zur Blockchain hinzugefügt werden (zum Beispiel, ob sie fälschungs-sicher sind?), Probleme mit der Sicherheit der System- und Anwendungssoftware, die zur Arbeit mit der Blockchain verwendet wird, sowie Probleme mit der Möglichkeit, soziale Ingenieurmethoden zu nutzen, um den Zugriff auf Krypto-Wallets 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 einer Organisation gehört, wird das Vertrauensniveau nicht höher sein als das Vertrauen, das man dieser Person oder Organisation entgegenbringt.
Es ist auch zu berücksichtigen, dass die in der Blockchain gespeicherten Daten für alle zugänglich werden. In diesem Sinne eignet sich die Blockchain (insbesondere die öffentliche) nicht zur Speicherung vertraulicher Informationen. Allerdings kann die Unveränderbarkeit von Informationen in der Blockchain dabei helfen, verschiedene Formen von Betrug zu verhindern oder aufzuklären.
Dezentrale Ethereum-Anwendungen sind praktisch, wenn man für ihre Nutzung mit Kryptowährung bezahlt. Je mehr Menschen Kryptowährung besitzen oder bereit sind, sie zu erwerben, desto beliebter werden DApp-Anwendungen und Smart Contracts.
Unter den allgemeinen Problemen der Blockchain, die ihre praktische Anwendung erschweren, sind die begrenzte Geschwindigkeit, mit der neue Blöcke hinzugefügt werden, und die relativ hohen Transaktionskosten zu nennen. Doch die Technologien in diesem Bereich entwickeln sich schnell weiter, und es gibt die Hoffnung, dass technische Probleme im Laufe der Zeit gelöst werden.
Ein weiteres Problem besteht darin, dass Smart Contracts der Ethereum-Blockchain in einer isolierten Umgebung von virtuellen Maschinen operieren und keinen Zugang zu Daten aus der realen Welt haben. Insbesondere kann das Programm des Smart Contracts keine Daten von Websites oder physischen Geräten (Sensoren, Kontakte usw.) abrufen und auch keine Daten an externe Geräte senden. Dieses Problem und mögliche Lösungen werden wir in einer Lektion besprechen, die sich mit den sogenannten Orakeln — Informationsvermittlern für Smart Contracts — beschäftigt.
Es gibt auch gesetzliche Einschränkungen. In einigen Ländern, wie zum Beispiel, ist die Verwendung von Kryptowährung als Zahlungsmittel verboten, es ist jedoch erlaubt, sie als eine Art digitale Vermögenswerte, ähnlich wie Wertpapiere, zu besitzen. Solche Vermögenswerte können an der Börse gekauft und verkauft werden. In jedem Fall ist es notwendig, sich mit der Gesetzgebung des Landes vertraut zu machen, in dessen Jurisdiktion Ihr Projekt fällt, wenn Sie ein Projekt entwickeln, das mit Kryptowährungen arbeitet.
Wie die Blockchain-Kette gebildet wird
Wie bereits erwähnt, stellt die Blockchain eine einfache Kette von Datenblöcken dar. Zuerst wird der erste Block dieser Kette erstellt, dann wird der zweite hinzugefügt und so weiter. Es wird angenommen, dass die Transaktionsdaten in den Blöcken gespeichert werden und im letzten Block hinzugefügt werden.
In Abb. 1.1 haben wir die einfachste Variante der Reihenfolge der Blöcke dargestellt, wobei der erste Block auf den nächsten verweist.

Abb. 1.1. Einfache Reihenfolge von Blöcken
In dieser Variante kann jedoch der Inhalt eines beliebigen Blocks der Kette sehr leicht gefälscht werden, da die Blöcke keine Informationen zum Schutz vor Änderungen enthalten. Angesichts der Tatsache, dass die Blockchain für die Nutzung durch Menschen und Unternehmen gedacht ist, zwischen denen kein Vertrauen besteht, kann man zu dem Schluss kommen, dass diese Art der Datenspeicherung für die Blockchain ungeeignet ist.
Lassen Sie uns den Schutz der Blöcke vor Fälschungen angehen. In der ersten Phase werden wir versuchen, jeden Block mit einer Prüfziffer zu schützen (Abb. 1.2).

Abb. 1.2. Schutz der Datenblöcke durch Prüfziffer
Jetzt kann ein Angreifer nicht einfach den Block ändern, da darin die Prüfziffer der Daten des Blocks enthalten ist. Die Überprüfung der Prüfziffer wird zeigen, dass die Daten geändert wurden.
Zur Berechnung der Prüfziffer kann eine der Hash-Funktionen verwendet werden, wie z. B. MD-5, SHA-1, SHA-256 usw. Hash-Funktionen berechnen einen bestimmten Wert (z. B. in Form einer konstanten Textzeile), der aus der Ausführung irreversibler Operationen über den Datenblock resultiert. Die Vorgänge hängen von der Art der Hash-Funktion ab.
Selbst bei einer kleinen Änderung des Inhalts des Datenblocks ändert sich auch der Wert der Hash-Funktion. Anhand des Wertes der Hash-Funktion ist es unmöglich, den Datenblock wiederherzustellen, für den sie berechnet wurde.
Wird dieser Schutz ausreichen? Leider nicht.
In diesem Schema schützt die Prüfziffer (Hash-Funktion) nur einzelne Blöcke, jedoch nicht die gesamte Kette von Blöcken. Kennt ein Angreifer den Algorithmus zur Berechnung der Hash-Funktion, kann er den Inhalt des 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 in jedem Block zusätzlich zu den Daten auch der Hash der Daten des vorherigen Blocks gespeichert werden (Abb. 1.3).

Abb. 1.3. Hash des vorherigen Blocks im Datenblock hinzufügen
In diesem Schema muss man, um einen Block zu ändern, die Hash-Funktionen aller folgenden Blöcke neu berechnen. Wo liegt also das Problem?
In realen Blockchains wurden zusätzlich künstliche Schwierigkeiten geschaffen, um neue Blöcke hinzuzufügen — es werden Algorithmen verwendet, die viele Rechenressourcen erfordern. Da man zur Änderung eines Blocks nicht nur diesen, sondern alle folgenden Blöcke neu berechnen muss, wird es äußerst schwierig sein, dies zu tun.
Wir erinnern uns auch daran, dass die Daten der Blockchain auf zahlreichen Knoten im Netzwerk gespeichert (dupliziert) werden, d.h. es wird ein dezentralisiertes Speichern verwendet. Das erschwert die Fälschung eines Blocks erheblich, da Änderungen auf allen Knoten des Netzwerks vorgenommen werden müssen.
Da die 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 verteilte Anwendungen (DApp) erstellt werden können. Im Gegensatz zu anderen Plattformen ermöglicht Ethereum die Nutzung sogenannter intelligenter Verträge (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 Schulungskurs lernen oder tun werden, bezieht sich direkt auf die Ethereum-Blockchain und die Solidity-Smart-Contracts.
Mining oder wie Blöcke erstellt werden
Mining (Mining) ist ein ziemlich komplexer und ressourcenintensiver Prozess, um neue Blöcke zur Blockchain hinzuzufügen, und keineswegs eine „Rohstoffgewinnung“ von Kryptowährungen. Mining sorgt für die Funktionsfähigkeit der Blockchain, da dieser Prozess für die Hinzufügung von Transaktionen zur Ethereum-Blockchain verantwortlich ist.
Die Menschen und Organisationen, die für das Hinzufügen von Blöcken zuständig sind, werden Miner genannt.
Die Software (SO), die auf den Knoten der Miner läuft, versucht, für den letzten Block den Parameter des Hashing-Algorithmus mit dem Namen Nonce zu finden, damit ein bestimmter Wert der vom Netzwerk vorgegebenen Hashfunktion entsteht. Der in Ethereum verwendete Hashalgorithmus Ethash ermöglicht die Ermittlung des Wertes von Nonce nur durch sequenzielles Ausprobieren.
Wenn der Mining-Knoten den richtigen Nonce-Wert gefunden hat, handelt es sich um den sogenannten 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, jedoch wird sie im Laufe der Zeit verringert.
Auf diese Weise sichern Ethereum-Miner das Funktionieren des Netzwerks, indem sie Blöcke hinzufügen und dafür Kryptowährungszahlungen erhalten. Im Internet finden Sie eine Fülle von Informationen über Miner und Mining, während wir uns auf die Erstellung von Solidity-Verträgen und dezentralen Anwendungen (DApp) im Ethereum-Netzwerk konzentrieren werden.
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 bereits aufgezeichneter Blöcke kann nicht geändert werden, da dazu alle nachfolgenden Blöcke in vielen Knoten des Netzwerks neu berechnet werden müssten, was eine erhebliche Menge an Ressourcen und Zeit erfordert.
Die Blockchain kann zur Aufbewahrung von Transaktionsergebnissen verwendet werden. Ihre Hauptfunktion besteht darin, eine sichere Durchführung von Transaktionen zwischen Parteien (Personen und Organisationen) zu organisieren, zwischen denen kein Vertrauen besteht. Sie haben erfahren, in welchen spezifischen Geschäftsbereichen und -sektoren die Ethereum-Blockchain und Solidity-Smart-Verträge eingesetzt werden können. Dazu gehören der Bankensektor, die Registrierung von Eigentumsrechten, Dokumenten usw.
Sie haben auch gelernt, dass bei der Nutzung von Blockchains verschiedene Probleme auftreten können. Dazu gehören Probleme bei der Verifizierung von Informationen, die in die Blockchain eingefügt werden, die Geschwindigkeit des Blockchain-Betriebs, die Kosten für Transaktionen, die Herausforderung des Datenaustauschs zwischen Smart Contracts und der realen Welt sowie potenzielle Angriffe von Angreifern, die darauf abzielen, Kryptowährungsfonds von Benutzerkonten zu stehlen.
Außerdem haben wir kurz über Mining als den Prozess der Hinzufügung neuer Blöcke zur Blockchain gesprochen. Mining ist notwendig, um Transaktionen durchzuführen. Diejenigen, die minen, sichern die Funktionsfähigkeit der Blockchain und erhalten dafür Belohnungen in Kryptowährung.
Lektion 2. Vorbereitung der Arbeitsumgebung unter Ubuntu und DebianAuswahl des Betriebssystems
Installation der erforderlichen Tools
Installation von Geth und Swarm unter Ubuntu
Installation von Geth und Swarm unter Debian
Der Firebird 3.0-SQL-Datenbankserver weist eine dynamische Zuweisung und Freigabe von Systemspeicher auf, was zu Fragmentierungen führen kann. Beispielsweise können nach der gleichzeitigen Trennung einer großen Anzahl von Benutzern vom Superserver Fehler bei neuen Verbindungen auftreten.
Laden des Go-Distributionspakets
Umgebungsvariablen setzen
Überprüfung der Go-Version
Installierung von Geth und Swarm
Privaten Blockchain erstellen
Готовим файл genesis.json
Verzeichnis für die Arbeit erstellen
Konto erstellen
Initialisierung des Knotens starten
Knoten-Startparameter
Mit unserem Knoten verbinden
Mining verwalten und Kontostand überprüfen
Beenden der Geth-Konsole
Zusammenfassung der Lektion
Lektion 3. Vorbereitung der Arbeitsumgebung auf Raspberry Pi 3Vorbereitung des Raspberry Pi 3 für die Arbeit
Installierung von Rasberian
Installation von Updates
SSH-Zugriff aktivieren
Statische IP-Adresse installieren
Installation der erforderlichen Tools
Go installieren
Laden des Go-Distributionspakets
Umgebungsvariablen setzen
Überprüfung der Go-Version
Installierung von Geth und Swarm
Privaten Blockchain erstellen
Überprüfung des Kontos und des Kontostands
Zusammenfassung der Lektion
Lektion 4. Konten und Übertragung von Mitteln zwischen KontenKonten anzeigen und hinzufügen
Liste der Konten anzeigen
Konto hinzufügen
Parameter des Befehls geth account
Konto-Passwörter
Kryptowährung in Ethereum
Währungseinheiten von Ethereum
Aktuellen Kontostand unserer Konten bestimmen
Mittel von einem Konto auf ein anderes überweisen
Methode eth.sendTransaction
Status der Transaktion überprüfen
Transaktionsquittung
Zusammenfassung der Lektion
Lektion 5. Veröffentlichung des ersten VertragsSmart Contracts in Ethereum
Ausführung eines Smart Contracts
Ethereum Virtuelle Maschine
Integrierte Entwicklungsumgebung Remix Solidity IDE
Kompilation starten
Funktionen des Vertrags aufrufen
Vertrag in einem privaten Netzwerk veröffentlichen
Definition von ABI und Binärcode des Vertrags erhalten
Vertrag veröffentlichen
Status der Veröffentlichung des Vertrags überprüfen
Funktionen des Vertrags aufrufen
Batch-Compiler solc
solc in Ubuntu installieren
solc in Debian installieren
HelloSol Vertrag kompilieren
Vertrag veröffentlichen
solc auf Rasberian installieren
Zusammenfassung der Lektion
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Installierung in Ubuntu
Installierung in Debian
Installierung und Start von Ganache-cli
Web3 installieren
solc installieren
Node.js auf Rasberian installieren
Skript zum Abrufen der Kontenliste in der Konsole
Skript zur Veröffentlichung eines Smart Contracts
Start und Abruf von Parametern
Abruf der Startparameter
Vertrag kompilieren
Konto entsperren
ABI und Binärcode des Vertrags laden
Benötigte Gasmenge schätzen
Objekt erstellen und Veröffentlichung des Vertrags starten
Skript zur Veröffentlichung des Vertrags ausführen
Funktionen des Smart Contracts aufrufen
Ist es möglich, einen veröffentlichten Smart Contract zu aktualisieren?
Arbeiten mit Web3 Version 1.0.x
Liste der Konten abrufen
Vertrag veröffentlichen
Funktionen des Vertrags aufrufen
Mittel von einem Konto auf ein anderes überweisen
Mittel auf das Konto des Vertrags überweisen
Smart Contract HelloSol aktualisieren
Skript zur Anzeige des Kontostands erstellen
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Guthaben des Smart Contracts aufladen
Zusammenfassung der Lektion
Lektion 7. Einführung in TruffleTruffle installieren
Projekt HelloSol erstellen
Verzeichnis und Dateien des Projekts erstellen
Verzeichnis Verträge
Verzeichnis Migrationen
Verzeichnis Test
Файл truffle-config.js
HelloSol Vertrag kompilieren
Veröffentlichung des Vertrags starten
Aufruf der Funktionen des Vertrags HelloSol in der Truffle-Einladung
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Installation des Moduls truffle-contract
Aufruf der Funktionen des Vertrags getValue und getString
Aufruf der Funktionen des Vertrags setValue und setString
Änderung des Vertrags und erneute Veröffentlichung
Arbeiten mit Web3 Version 1.0.x
Änderungen am Smart Contract HelloSol vornehmen
Skripte zum Aufruf der Methoden des Vertrags
Testen in Truffle
Test mit Solidity
Test mit JavaScript
Zusammenfassung der Lektion
Lektion 8. Datentypen in SolidityVertrag zum Studium der Datentypen
Logische Datentypen
Unsigned Integers und Signed Integers
Festkommazahlen
Adresse
Variablen komplexer Typen
Arrays fester Größe
Dynamische Arrays
Auflistung
Strukturen
Mapping-Dictionaries
Zusammenfassung der Lektion
Lektion 9. Migration von Verträgen in private Netzwerke und in das Rinkeby-NetzwerkVeröffentlichung des Vertrags aus Truffle in einem privaten Geth-Netzwerk
Vorbereitung des Knotens für ein privates Netzwerk
Vorbereitung des Vertrags für den Einsatz
Kompilierung und Migration des Vertrags in das Truffle-Netzwerk
Migration im lokalen Geth-Netzwerk starten
Truffle-Artefakte generieren
Veröffentlichung 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
Starten der Vertragsmigration im Rinkeby-Netzwerk
Informationen über den Vertrag im Rinkeby-Netzwerk anzeigen
Truffle-Konsole für das Rinkeby-Netzwerk
Einfacherer Weg, Funktionen des Vertrags aufzurufen
Вызов методов контракта при помощи Node.js
Überweisung von Mitteln zwischen Konten in der Truffle-Konsole für Rinkeby
Zusammenfassung der Lektion
Lektion 10. Dezentrale Datenspeicherung mit Ethereum SwarmWie Ethereum Swarm funktioniert
Installation und Start von Swarm
Operationen mit Dateien und Verzeichnissen
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 des ö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 zur Arbeit mit Ethereum in PythonInstallation von Web3.py
Aktualisierung und Installation erforderlicher Pakete
Installation des Moduls easysolc
Veröffentlichung des Vertrags mit Web3.py
Vertrag kompilieren
Verbindung zum Anbieter herstellen
Durchführung der Vertragsveröffentlichung
Speichern der Vertragsadresse und abi in einer Datei
Skript zur Veröffentlichung des Vertrags ausführen
Aufruf der Methoden des Vertrags
Lesen der Adresse und abi des Vertrags aus einer JSON-Datei
Verbindung zum Anbieter herstellen
Erstellen eines Vertragsobjekts
Aufruf der Methoden des Vertrags
Truffle und Web3.py
Zusammenfassung der Lektion
Lektion 12. OrakelKann ein Smart Contract den externen Daten vertrauen?
Orakel als Informationsvermittler der Blockchain
Datenquelle
Code zur Darstellung von Daten aus der Quelle
Orakel zum Aufzeichnen des Wechselkurses in die Blockchain
Vertrag USDRateOracle
Aktualisierung des Wechselkurses im Smart Contract
Verwendung des Web Socket-Anbieters
Warten auf das Ereignis RateUpdate
Verarbeitung des Ereignisses RateUpdate
Initiierung der Aktualisierung von Daten im Smart Contract
Zusammenfassung der Lektion
Quelle: habr.com
