Der Zweck der Lektion: sich mit den Prinzipien der Ethereum-Blockchain, ihren Anwendungsbereichen und der grundlegenden Terminologie vertraut zu machen.
Praktische Übungen: in dieser Lektion nicht vorgesehen.
Es gibt heutzutage kaum einen Softwareentwickler, der nichts über Blockchain-Technologie, Kryptowährungen (Kryptowährung oder Kryptowährung), Bitcoins (Bitcoin), anfängliches Münzangebot (ICO, anfängliches Münzangebot) und intelligente Verträge hören würde (Smart Contract) sowie andere Konzepte und Begriffe im Zusammenhang mit der Blockchain.
Die Blockchain-Technologie eröffnet neue Märkte und schafft Arbeitsplätze für Programmierer. Wenn Sie alle Feinheiten von Kryptowährungstechnologien und intelligenten Vertragstechnologien verstehen, sollten Sie keine Probleme haben, dieses Wissen in der Praxis anzuwenden.
Ich muss sagen, dass über Kryptowährungen und Blockchains viel spekuliert wird. Wir werden Diskussionen über Änderungen der Kryptowährungsraten, über die Schaffung von Pyramiden, über die Feinheiten der Kryptowährungsgesetzgebung usw. beiseite lassen. In unserer Schulung konzentrieren wir uns hauptsächlich auf die technischen Aspekte der Anwendung von Ethereum-Blockchain-Smart-Verträgen (Ethereum, Ether) und die Entwicklung der sogenannten Distributed Application (DApp).
Was ist Blockchain?
Blockchain (Blockchain, Block Chain) ist eine Kette von Datenblöcken, die auf bestimmte Weise verbunden sind. Am Anfang der Kette befindet sich der erste Block, der als Genesis-Block oder Genesis-Block bezeichnet wird. Es folgt eine Sekunde, dann eine dritte und so weiter.
Alle diese Datenblöcke werden automatisch auf zahlreichen Knoten des Blockchain-Netzwerks dupliziert. Dies stellt die dezentrale Speicherung von Blockchain-Daten sicher.
Sie können sich das Blockchain-System als eine große Anzahl von Knoten (physische oder virtuelle Server) vorstellen, die vernetzt sind und alle Änderungen in der Kette von Datenblöcken replizieren. Dies ist wie ein riesiger Multiserver-Computer, und die Knoten eines solchen Computers (Server) können auf der ganzen Welt verstreut sein. Und auch Sie können Ihren Computer zum Blockchain-Netzwerk hinzufügen.
Verteilte Datenbank
Blockchain kann als verteilte Datenbank vorgestellt werden, die auf alle Knoten des Blockchain-Netzwerks repliziert wird. Theoretisch ist die Blockchain betriebsbereit, solange mindestens ein Knoten arbeitet, auf dem alle Blöcke der Blockchain gespeichert sind.
Verteilte Datenregistrierung
Blockchain kann als verteilte Registrierung von Daten und Operationen (Transaktionen) vorgestellt werden. Ein anderer Name für eine solche Registrierung ist Ledger.
Sie können einer verteilten Registrierung Daten hinzufügen, diese jedoch nicht ändern oder löschen. Eine solche Unmöglichkeit wird insbesondere durch die Verwendung kryptografischer Algorithmen, spezieller Algorithmen zum Hinzufügen von Blöcken zur Kette und einer dezentralen Datenspeicherung erreicht.
Beim Hinzufügen von Blöcken und Ausführen von Operationen (Transaktionen) werden private und öffentliche Schlüssel verwendet. Sie beschränken Blockchain-Benutzer, indem sie ihnen nur Zugriff auf ihre Datenblöcke gewähren.
Transaktionen
Die Blockchain speichert Informationen über Operationen (Transaktionen) in Blöcken. Gleichzeitig können bereits abgeschlossene alte Transaktionen nicht zurückgesetzt oder geändert werden. Neue Transaktionen werden in neuen, hinzugefügten Blöcken gespeichert.
Somit kann der gesamte Transaktionsverlauf unverändert in der Blockchain aufgezeichnet werden. Daher kann die Blockchain beispielsweise verwendet werden, um Bankgeschäfte, Copyright-Informationen, eine Vorgeschichte von Änderungen im Eigentum an Immobilien usw. sicher zu speichern.
Die Ethereum-Blockchain enthält die sogenannten Systemzustände. Nach Abschluss der Transaktionen ändert sich der Status von anfänglich zu aktuell. Transaktionen werden in Blöcken geschrieben.
Öffentliche und private Blockchains
Es ist zu beachten, dass all dies nur für die sogenannten öffentlichen Blockchain-Netzwerke gilt, die nicht von einzelnen Personen oder juristischen Personen, staatlichen Stellen oder Regierungen kontrolliert werden können.
Die sogenannten privaten Blockchain-Netzwerke stehen unter der vollen Kontrolle ihrer Schöpfer, und dort ist alles möglich, zum Beispiel der vollständige Austausch aller Blöcke der Kette.
Blockchain Praktische Anwendungen
Wofür kann Blockchain kommen?
Kurz gesagt, die Blockchain ermöglicht es Ihnen, Transaktionen (Transaktionen) zwischen Personen, die sich nicht vertrauen, oder Unternehmen sicher durchzuführen. Die in der Blockchain aufgezeichneten Daten (Transaktionen, personenbezogene Daten, Dokumente, Zertifikate, Verträge, Rechnungen usw.) können nach der Aufzeichnung nicht gefälscht oder ersetzt werden. Daher können Sie auf der Grundlage der Blockchain beispielsweise vertrauenswürdige verteilte Register verschiedener Arten von Dokumenten erstellen.
Natürlich wissen Sie, dass Kryptowährungssysteme auf der Basis von Blockchains erstellt werden, die das normale Papiergeld ersetzen sollen. Papiergeld wird auch Fiat-Geld genannt (von Fiat Money).
Die Blockchain bietet Speicherung und Unveränderlichkeit von Transaktionen, die in Blöcken aufgezeichnet wurden, und kann daher auch zum Erstellen von Kryptowährungssystemen verwendet werden. Es enthält den gesamten Verlauf der Übertragung von Kryptoguthaben zwischen verschiedenen Benutzern (Konten), und jeder Vorgang kann verfolgt werden.
Obwohl Transaktionen innerhalb von Kryptowährungssystemen anonym sein können, führt das Zurückziehen von Kryptowährung und das Umtauschen gegen Fiat-Geld normalerweise zur Offenlegung der Identität des Eigentümers des Kryptowährungs-Assets.
Die sogenannten Smart Contracts, bei denen es sich um Software handelt, die im Ethereum-Netzwerk ausgeführt wird, automatisieren den Abschluss von Geschäften und die Steuerung ihrer Ausführung. Dies ist besonders effektiv, wenn die Zahlung für die Transaktion mit Ether Cryptocurrency erfolgt.
Die in der Programmiersprache Solidity geschriebenen Ethereum-Blockchain- und Ethereum-Smart-Verträge können beispielsweise in folgenden Bereichen verwendet werden:
- Alternative zur Beglaubigung von Dokumenten;
- Speicherung des Immobilienregisters und Information über Transaktionen mit Immobilien;
- Speicherung von urheberrechtlichen Informationen über geistiges Eigentum (Bücher, Bilder, Musik usw.);
- Schaffung unabhängiger Abstimmungssysteme;
- Finanzen und Bankwesen;
- internationale Logistik, Verfolgung des Warenverkehrs;
- Speicherung personenbezogener Daten als Analogon eines Ausweissystems;
- sichere Transaktionen im kommerziellen Bereich;
- Speicherung der Ergebnisse medizinischer Untersuchungen sowie der Vorgeschichte vorgeschriebener Verfahren
Blockchain-Probleme
Aber natürlich ist nicht alles so einfach, wie es scheint!
Es gibt Probleme bei der Überprüfung der Daten vor dem Hinzufügen zur Blockchain (z. B. sind sie nicht gefälscht?), Probleme bei der Sicherheit des Systems und der Anwendungssoftware, die für die Arbeit mit der Blockchain verwendet werden, Probleme bei der Verwendung von Social-Engineering-Methoden zum Diebstahl des Zugriffs auf Kryptowährungs-Wallets usw. .p.
Wenn es sich nicht um eine öffentliche Blockchain handelt, deren Knoten auf der ganzen Welt verstreut sind, sondern um eine private Blockchain, die einer Person oder Organisation gehört, ist der Vertrauensgrad hier nicht höher als der Vertrauensgrad in diese Person oder diese Organisation.
Es sollte auch berücksichtigt werden, dass die in der Blockchain aufgezeichneten Daten für alle verfügbar sind. In diesem Sinne ist die Blockchain (insbesondere die öffentliche) nicht zum Speichern vertraulicher Informationen geeignet. Die Tatsache, dass die Informationen in der Blockchain nicht geändert werden können, kann jedoch dazu beitragen, alle Arten von betrügerischen Aktivitäten zu verhindern oder zu untersuchen.
Dezentrale Ethereum-Anwendungen sind praktisch, wenn Sie für ihre Verwendung mit Kryptowährung bezahlen. Je mehr Leute eine Kryptowährung besitzen oder bereit sind, sie zu kaufen, desto beliebter werden DApp-Anwendungen und intelligente Verträge.
Unter den allgemeinen Problemen der Blockchain, die ihre praktische Anwendung behindern, kann man die begrenzte Geschwindigkeit des Hinzufügens neuer Blöcke und die relativ hohen Transaktionskosten erwähnen. Die Technologien in diesem Bereich entwickeln 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 Ethereum-Blockchain-Smart-Verträge in einer isolierten Umgebung für virtuelle Maschinen funktionieren und keinen Zugriff auf reale Daten haben. Insbesondere kann das Smart Contract-Programm weder Daten von Standorten oder physischen Geräten (Sensoren, Kontakte usw.) selbst lesen noch Daten an externe Geräte ausgeben. Wir werden dieses Problem und seine Lösungsmethoden in einer Lektion diskutieren, die den sogenannten Orakeln gewidmet ist - Informationsvermittlern intelligenter Verträge.
Es gibt auch gesetzliche Einschränkungen. In einigen Ländern ist es beispielsweise verboten, Kryptowährung als Zahlungsmittel zu verwenden, aber Sie können sie als eine Art digitales Gut wie Wertpapiere besitzen. Solche Vermögenswerte können an der Börse gekauft und verkauft werden. In jedem Fall müssen Sie sich beim Erstellen eines Projekts, das mit Kryptowährungen arbeitet, mit der Gesetzgebung des Landes vertraut machen, in dessen Zuständigkeitsbereich Ihr Projekt fällt.
Wie entsteht die Blockchain-Kette?
Wie bereits erwähnt, ist Blockchain eine einfache Kette von Datenblöcken. Zuerst wird der erste Block dieser Kette gebildet, dann wird der zweite Block hinzugefügt und so weiter. Es wird angenommen, dass Transaktionsdaten in Blöcken gespeichert und zum allerletzten Block hinzugefügt werden.
In Abb. 1.1 Wir haben die einfachste Version einer Folge von Blöcken gezeigt, wobei sich der erste Block auf den nächsten bezieht.
Abb. 1.1. Einfache Folge von BlöckenIn dieser Ausführungsform ist es jedoch sehr einfach, den Inhalt eines Blocks in der Kette zu fälschen, da die Blöcke keine Informationen zum Schutz vor Änderungen enthalten. Da die Blockchain für die Verwendung von Personen und Unternehmen bestimmt ist, zwischen denen kein Vertrauen besteht, können wir den Schluss ziehen, dass diese Methode zum Speichern von Daten für die Blockchain nicht geeignet ist.
Schützen wir die Blöcke vor Fälschungen. In der ersten Phase werden wir versuchen, jeden Block mit einer Prüfsumme zu schützen (Abb. 1.2).
Abb. 1.2. Fügen Sie den Datenblockschutz mit einer Prüfsumme hinzuJetzt kann ein Angreifer einen Block nicht einfach ändern, da er eine Prüfsumme der Blockdaten enthält. Wenn Sie die Prüfsumme überprüfen, wird angezeigt, dass die Daten geändert wurden.
Zur Berechnung der Prüfsumme können Sie eine der Hash-Funktionen verwenden, z. B. MD-5, SHA-1, SHA-256 usw. Hash-Funktionen berechnen einen bestimmten Wert (z. B. als Textzeichenfolge konstanter Länge) als Ergebnis der Ausführung irreversibler Operationen an einem Datenblock. Operationen 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. Durch die Analyse des Werts der Hash-Funktion kann der Datenblock, für den er berechnet wurde, nicht wiederhergestellt werden.
Wäre ein solcher Schutz ausreichend? Leider gibt es keine.
In diesem Schema schützt die Prüfsumme (Hash-Funktion) nur einzelne Blöcke, nicht jedoch die gesamte Blockkette. 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, ist es möglich, in jedem Block einen Hash von Daten aus dem vorherigen Block zusammen mit Daten zu speichern (Abb. 1.3).
Abb. 1.3. Fügen Sie den Hash des vorherigen Blocks zum Datenblock hinzuIn 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 entstehen zusätzlich künstliche Schwierigkeiten beim Hinzufügen neuer Blöcke - es werden Algorithmen verwendet, die viel Rechenaufwand erfordern. Angesichts der Tatsache, dass nicht nur ein Block gezählt werden muss, sondern alle nachfolgenden, um Änderungen an einem Block vorzunehmen, ist dies äußerst schwierig.
Es sei auch daran erinnert, dass Blockchain-Daten auf zahlreichen Netzwerkknoten gespeichert (dupliziert) sind, d.h. dezentraler Speicher wird verwendet. , .. .
, .
Ethereum
Ethereum , DApp. , Ethereum (-, smart contracts), Solidity.
2013 , Bitcoin Magazine, 2015 . , , Ethereum - Solidity.
(mining) , « ». , .. Ethereum.
, , (miner).
(), , Nonce, -, . Ethash, Ethereum, Nonce .
Nonce, (PoW, Proof-of-work). , Ethereum, — Ether. 5 Ether, .
, Ethereum , , . , Solidity DApp Ethereum.
, . , , .
. — ( ), . , Ethereum - Solidity. , , ..
, . , , , , - , , .
. . , , .