{"id":39018,"date":"2019-10-31T22:27:25","date_gmt":"2019-10-31T19:27:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\/"},"modified":"2019-10-31T22:27:25","modified_gmt":"2019-10-31T19:27:25","slug":"kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","title":{"rendered":"Buch \u201eSmart Contracts mit Solidity f\u00fcr die Ethereum-Blockchain. Praktischer Leitfaden\u201c","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Buch \u201eSmart Contracts mit Solidity f\u00fcr die Ethereum-Blockchain. Praktischer Leitfaden\u201c\" src=\"\/wp-content\/uploads\/2019\/10\/9549e708e99fef6892045ff854231fa7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\u00dcber ein Jahr habe ich an dem Buch \u201eErstellung von Smart Contracts mit Solidity f\u00fcr die Ethereum-Blockchain. Praktische Anleitung\u201c gearbeitet, und nun ist dieses Werk abgeschlossen und das Buch <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/aleksandr-frolov-198\/sozdanie-smart-kontraktov-solidity-dlya-blokcheyna-et\/\">ver\u00f6ffentlicht und bei Litres erh\u00e4ltlich.<\/a><\/noindex>.<\/p>\n<p>Ich hoffe, mein Buch hilft Ihnen, schnell mit der Erstellung von Smart Contracts mit Solidity und dezentralen Anwendungen (DApps) f\u00fcr 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\u00f6ffentlichen und deren Methoden aufzurufen, Daten zwischen der realen Welt und Smart Contracts mithilfe von Orakeln auszutauschen und mit dem Testnetz Rinkeby zu arbeiten. <\/p>\n<p>Das Buch richtet sich an alle, die sich f\u00fcr moderne Technologien im Bereich Blockchain interessieren und schnell Kenntnisse erwerben m\u00f6chten, um an spannenden und zukunftstr\u00e4chtigen Projekten zu arbeiten.<\/p>\n<p>Unten finden Sie das Inhaltsverzeichnis und das erste Kapitel des Buches (auch auf <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/aleksandr-frolov-198\/sozdanie-smart-kontraktov-solidity-dlya-blokcheyna-et\/\">Litres verf\u00fcgbar). Ich hoffe auf Ihr Feedback, Anmerkungen und Vorschl\u00e4ge. All dies werde ich bei der Vorbereitung der n\u00e4chsten Auflage des Buches ber\u00fccksichtigen.<\/a><\/noindex> Unser Buch ist f\u00fcr diejenigen gedacht, die nicht nur die Prinzipien der Funktionsweise der Ethereum-Blockchain verstehen, sondern auch praktische F\u00e4higkeiten in der Erstellung von dezentralen Anwendungen (DApps) in der Programmiersprache Solidity f\u00fcr dieses Netzwerk erwerben m\u00f6chten.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<b class=\"spoiler_title\">Inhaltsverzeichnis<\/b><b class=\"spoiler_title\">Einf\u00fchrung<\/b>Es ist besser, dieses Buch nicht nur zu lesen, sondern damit zu arbeiten, indem Sie die praktischen Aufgaben in den Lektionen durchf\u00fchren. Sie ben\u00f6tigen einen lokalen Computer, einen virtuellen oder Cloud-Server mit installiertem Debian oder Ubuntu. Au\u00dferdem kann f\u00fcr viele Aufgaben ein Raspberry Pi verwendet werden.<\/p>\n<p>In der ersten Lektion<\/p>\n<p><b>werden wir die Prinzipien der Funktionsweise der Ethereum-Blockchain und die grundlegende Terminologie behandeln und erl\u00e4utern, wo dieser Blockchain eingesetzt werden kann. <\/b>In der zweiten Lektion <\/p>\n<p>Ziel <b>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\u00e4hrleisten, sowie des Daemons f\u00fcr die dezentrale Datenspeicherung swarm untersuchen.<\/b> In der dritten Lektion<\/p>\n<p><b>Die dritte Lektion<\/b> wird Ihnen beibringen, wie Sie Experimente mit Ethereum auf dem kosteng\u00fcnstigen Mikrocomputer Raspberry Pi durchf\u00fchren. Sie werden das Betriebssystem (OS) Rasberian auf dem Raspberry Pi installieren, das Geth-Tool, das den Betrieb eines Blockchain-Knotens erm\u00f6glicht, sowie den Daemon des dezentralen Datenspeichers Swarm.<\/p>\n<p><b>Die vierte Lektion<\/b> besch\u00e4ftigt sich mit Konten und Kryptow\u00e4hrungseinheiten im Ethereum-Netzwerk sowie mit M\u00f6glichkeiten, Gelder von einem Konto auf ein anderes \u00fcber die Geth-Konsole zu \u00fcbertragen. Sie lernen, Konten zu erstellen, Transaktionen einzuleiten, den Status von Transaktionen abzurufen und deren Quittung zu erhalten.<\/p>\n<p><b>In der f\u00fcnften Lektion<\/b> werden Sie mit Smart Contracts im Ethereum-Netzwerk vertraut gemacht und erfahren, wie sie von der Ethereum Virtual Machine ausgef\u00fchrt werden. <\/p>\n<p>Sie werden Ihren ersten Smart Contract in einem privaten Ethereum-Netzwerk erstellen und ver\u00f6ffentlichen und lernen, wie Sie dessen Funktionen aufrufen. Dazu verwenden Sie die Entwicklungsumgebung Remix Solidity IDE. Au\u00dferdem lernen Sie, wie Sie den Paketcompiler solc installieren und nutzen.<br \/>\nWir werden auch \u00fcber die sogenannte Application Binary Interface (ABI) sprechen und Ihnen beibringen, wie Sie sie verwenden.<\/p>\n<p><b>Die sechste Lektion<\/b> besch\u00e4ftigt sich mit der Erstellung von JavaScript-Skripten, die unter Node.js laufen und Operationen mit Solidity-Smart Contracts ausf\u00fchren.<\/p>\n<p>Sie werden Node.js auf Ubuntu, Debian und Rasberian installieren, Skripte schreiben, um einen Smart Contract im lokalen Ethereum-Netzwerk zu ver\u00f6ffentlichen und dessen Funktionen aufzurufen. <\/p>\n<p>Dar\u00fcber hinaus lernen Sie, wie Sie mit Skripten Gelder zwischen regul\u00e4ren Konten \u00fcbertragen und diese auf Smart Contract-Konten gutschreiben.<\/p>\n<p><b>In der siebten Lektion<\/b> 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\u00e4gen mit dem Modul truffle-contract aufrufen, und zudem Ihren Smart Contract mit den Mitteln von Truffle testen.<\/p>\n<p><b>Die achte Lektion<\/b> besch\u00e4ftigt 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.<\/p>\n<p><b>In der neunten Lektion<\/b> Sie werden einen Schritt n\u00e4her am Erstellen von Smart Contracts f\u00fcr das Ethereum-Hauptnetz kommen. Sie lernen, wie man Vertr\u00e4ge mit Truffle in einem privaten Geth-Netz ver\u00f6ffentlicht sowie im Testnetz Rinkeby. Das Debuggen von Smart Contracts im Rinkeby-Netz ist sehr n\u00fctzlich, bevor sie im Hauptnetz ver\u00f6ffentlicht werden \u2013 dort ist alles im Grunde echt, aber kostenlos.<\/p>\n<p>Im Rahmen der Lektion erstellen Sie einen Knoten im Testnetz Rinkeby, f\u00fcgen ihm Mittel hinzu und ver\u00f6ffentlichen einen Smart Contract.<\/p>\n<p><b>Lektion 10<\/b> behandelt verteilte Datenspeicher von Ethereum Swarm. Durch die Nutzung verteilter Speichersysteme sparen Sie Kosten bei der Speicherung gro\u00dfer Datenmengen in der Ethereum-Blockchain. <\/p>\n<p>In dieser Lektion erstellen Sie einen lokalen Swarm-Speicher, f\u00fchren Lese- und Schreiboperationen f\u00fcr Dateien sowie f\u00fcr Verzeichnisse mit Dateien durch. Danach lernen Sie, wie man mit dem \u00f6ffentlichen Swarm-Gateway arbeitet, schreiben Skripte f\u00fcr den Zugriff auf Swarm aus Node.js und nutzen das Perl-Modul Net::Ethereum::Swarm.<\/p>\n<p><b>Ziel der Lektion 11<\/b> 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\u00f6ffentlichen von Smart Contracts sowie zum Aufruf deren Funktionen. Dabei wird Web3.py sowohl eigenst\u00e4ndig als auch zusammen mit der integrierten Entwicklungsumgebung Truffle verwendet.<\/p>\n<p><b>In der Lektion 12<\/b> lernen Sie, Daten zwischen Smart Contracts und der realen Welt mithilfe von Orakeln zu \u00fcbertragen. Dies wird Ihnen helfen, Daten von Websites, IoT-Ger\u00e4ten, verschiedenen Instrumenten und Sensoren zu erhalten und Daten aus Smart Contracts an diese Ger\u00e4te 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\u00f6deration abruft.<\/p>\n<p><b class=\"spoiler_title\">Lektion 1. Kurz \u00fcber Blockchain und das Ethereum-Netz<\/b><b>Ziel der Lektion:<\/b> sich mit den Prinzipien der Funktionsweise der Ethereum-Blockchain, ihren Anwendungsbereichen und der grundlegenden Terminologie vertraut zu machen.<br \/>\n<b>Praktische Aufgaben:<\/b> in dieser Lektion sind nicht vorgesehen.<\/p>\n<p>Es gibt heutzutage kaum einen Softwareentwickler, der noch nichts von der Blockchain-Technologie, Kryptow\u00e4hrungen, Bitcoin, ICOs, Smart Contracts oder anderen Begriffen und Termini geh\u00f6rt hat, die mit Blockchain zu tun haben.<\/p>\n<p>Die Blockchain-Technologie er\u00f6ffnet neue M\u00e4rkte und schafft Arbeitspl\u00e4tze f\u00fcr Programmierer. Wenn Sie die Feinheiten der Kryptow\u00e4hrungstechnologien und der Smart-Contract-Technologien verstehen, sollten Sie keine Probleme haben, dieses Wissen in der Praxis anzuwenden.<\/p>\n<p>Es ist wichtig zu sagen, dass es um Kryptow\u00e4hrungen und Blockchains viele Spekulationen gibt. Wir werden \u00dcberlegungen zu den Kursver\u00e4nderungen von Kryptow\u00e4hrungen, zum Aufbau von Pyramiden, zu den Feinheiten der Kryptow\u00e4hrungslegislation usw. beiseite lassen. In unserem Lehrkurs konzentrieren wir uns haupts\u00e4chlich 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).<\/p>\n<h3>Was ist Blockchain<\/h3>\n<p>\nDie Blockchain (Blockchain, Block Chain) ist eine Kette von Datenbl\u00f6cken, die auf bestimmte Weise miteinander verbunden sind. Am Anfang der Kette befindet sich der erste Block, der als prim\u00e4rer Block (genesis block) oder Genesis-Block bezeichnet wird. Darauf folgt der zweite, dann der dritte und so weiter.<\/p>\n<p>Alle diese Datenbl\u00f6cke werden automatisch auf zahlreichen Knoten des Blockchain-Netzwerks dupliziert. Auf diese Weise wird eine dezentrale Speicherung der Blockchain-Daten gew\u00e4hrleistet. <br \/>\nSie k\u00f6nnen sich das Blockchain-System als eine gro\u00dfe Anzahl von Knoten (physikalischen oder virtuellen Servern) vorstellen, die in einem Netzwerk zusammengefasst sind und alle \u00c4nderungen in der Kette von Datenbl\u00f6cken replizieren. Es ist wie ein riesiger Multi-Server-Computer, wobei die Knoten dieses Computers (Server) auf der ganzen Welt verteilt sein k\u00f6nnen. Und Sie k\u00f6nnen auch Ihren Computer ins Blockchain-Netzwerk einf\u00fcgen. <\/p>\n<h4>Verteilte Datenbank<\/h4>\n<p>\nDie Blockchain kann als verteilte Datenbank betrachtet werden, die auf alle Knoten des Blockchain-Netzwerks repliziert wird. Theoretisch wird die Blockchain funktionsf\u00e4hig sein, solange mindestens ein Knoten aktiv ist, der alle Blockdaten der Blockchain speichert.<\/p>\n<h4>Verteiltes Hauptbuch<\/h4>\n<p>\nDie Blockchain kann als ein verteiltes Hauptbuch von Daten und Transaktionen (Transaktionen) betrachtet werden. Ein weiterer Begriff f\u00fcr dieses Hauptbuch ist das Ledger. <\/p>\n<p>In das verteilte Register k\u00f6nnen Daten hinzugef\u00fcgt werden, aber sie k\u00f6nnen nicht ge\u00e4ndert oder gel\u00f6scht werden. Diese Unm\u00f6glichkeit wird unter anderem durch den Einsatz kryptografischer Algorithmen, spezieller Algorithmen zur Hinzuf\u00fcgung von Bl\u00f6cken zur Kette und die dezentralisierte Speicherung von Daten erreicht.<\/p>\n<p>Beim Hinzuf\u00fcgen von Bl\u00f6cken und der Durchf\u00fchrung von Operationen (Transaktionen) werden private und \u00f6ffentliche Schl\u00fcssel verwendet. Diese schr\u00e4nken die Benutzer der Blockchain ein, indem sie ihnen nur Zugriff auf ihre eigenen Datenbl\u00f6cke gew\u00e4hren.<\/p>\n<h4>Transaktionen<\/h4>\n<p>\nDie Blockchain speichert Informationen \u00fcber Transaktionen (Transaktionen) in Bl\u00f6cken. Dabei k\u00f6nnen alte, bereits durchgef\u00fchrte Transaktionen nicht zur\u00fcckgesetzt oder ge\u00e4ndert werden. Neue Transaktionen werden in neuen, hinzugef\u00fcgten Bl\u00f6cken gespeichert.<\/p>\n<p>So kann in der Blockchain die gesamte Transaktionshistorie unver\u00e4ndert festgehalten werden. Daher kann die Blockchain beispielsweise f\u00fcr die zuverl\u00e4ssige Speicherung von Bankgesch\u00e4ften,Urheberrechtsinformationen, der Historie von Eigent\u00fcmerwechseln von Immobilien usw. verwendet werden.<\/p>\n<p>Die Ethereum-Blockchain enth\u00e4lt sogenannte Systemzust\u00e4nde. Im Laufe der Durchf\u00fchrung von Transaktionen \u00e4ndert sich der Zustand von initial bis aktuell. Transaktionen werden in Bl\u00f6cken festgehalten.<\/p>\n<h4>\u00d6ffentliche und private Blockchains<\/h4>\n<p>\nHier sei angemerkt, dass alles, was gesagt wurde, nur f\u00fcr sogenannte \u00f6ffentliche Blockchain-Netzwerke gilt, die nicht von einzelnen physischen oder juristischen Personen, staatlichen Stellen oder Regierungen kontrolliert werden k\u00f6nnen. <br \/>\nDie sogenannten privaten Blockchain-Netzwerke stehen unter vollst\u00e4ndiger Kontrolle ihrer Sch\u00f6pfer, und dort ist alles m\u00f6glich, zum Beispiel die vollst\u00e4ndige Ersetzung aller Bl\u00f6cke in der Kette.<\/p>\n<h4>Praktische Anwendungen der Blockchain<\/h4>\n<p>\nWof\u00fcr kann die Blockchain n\u00fctzlich sein?<\/p>\n<p>Kurz gesagt, die Blockchain erm\u00f6glicht sichere Transaktionen (Deals) zwischen Personen oder Unternehmen, die einander nicht vertrauen. Die in der Blockchain festgehaltenen Daten (Transaktionen, pers\u00f6nliche Daten, Dokumente, Beglaubigungen, Vertr\u00e4ge, Rechnungen usw.) k\u00f6nnen nach der Speicherung nicht gef\u00e4lscht oder ersetzt werden. Daher lassen sich auf Basis der Blockchain beispielsweise vertrauensw\u00fcrdige dezentrale Register verschiedenster Dokumente erstellen.<\/p>\n<p>Nat\u00fcrlich wissen Sie, dass auf der Grundlage von Blockchains Kryptow\u00e4hrungssysteme geschaffen werden, die dazu gedacht sind, gew\u00f6hnliches Papiergeld zu ersetzen. Papiergeld wird auch als Fiat-W\u00e4hrung bezeichnet (von Fiat Money).<br \/>\nDie Blockchain gew\u00e4hrleistet die Speicherung und Unver\u00e4nderlichkeit von Transaktionen, die in Bl\u00f6cke aufgezeichnet sind, weshalb sie zur Erstellung von Kryptow\u00e4hrungssystemen verwendet werden kann. Sie enth\u00e4lt die gesamte Geschichte der \u00dcbertragung von Krypto-Mitteln zwischen verschiedenen Nutzern (Konten), wobei jede Transaktion nachverfolgt werden kann.<\/p>\n<p>Obwohl Transaktionen innerhalb von Kryptow\u00e4hrungssystemen anonym sein k\u00f6nnen, f\u00fchrt die Auszahlung von Kryptow\u00e4hrung und der Umtausch gegen Fiat-W\u00e4hrung in der Regel zur Offenlegung der Identit\u00e4t des Eigent\u00fcmers des Krypto-Assets. <\/p>\n<p>Die sogenannten Smart Contracts, die Software sind, die im Ethereum-Netzwerk arbeitet, erm\u00f6glichen die Automatisierung des Abschlusses von Vertr\u00e4gen und die Kontrolle ihrer Durchf\u00fchrung. Dies ist besonders effektiv, wenn die Zahlung f\u00fcr den Vertrag in der Kryptow\u00e4hrung Ether (Ethereal) erfolgt.<\/p>\n<p>Die Ethereum-Blockchain und die Smart Contracts von Ethereum, die in der Programmiersprache Solidity geschrieben sind, k\u00f6nnen beispielsweise in folgenden Bereichen verwendet werden:<\/p>\n<ul>\n<li>Alternativen zur notariellen Beglaubigung von Dokumenten;<\/li>\n<li>Speicherung des Registers von Immobilienobjekten und Informationen \u00fcber Transaktionen mit Immobilien;<\/li>\n<li>Speicherung von Informationen \u00fcber Urheberrechte an geistigem Eigentum (B\u00fccher, Bilder, Musikwerke usw.);<\/li>\n<li>Schaffung von Systemen f\u00fcr unabh\u00e4ngige Abstimmungen;<\/li>\n<li>Bereich Finanzen und Bankgesch\u00e4fte;<\/li>\n<li>Logistik im internationalen Ma\u00dfstab, Verfolgung von Warentransporten;<\/li>\n<li>Speicherung personenbezogener Daten als Analog zu Ausweissystemen;<\/li>\n<li>Sichere Transaktionen im kommerziellen Bereich;<\/li>\n<li>Speicherung von Ergebnissen medizinischer Untersuchungen sowie der Geschichte der durchgef\u00fchrten Verfahren.<\/li>\n<\/ul>\n<p><\/p>\n<h4>Probleme mit der Blockchain.<\/h4>\n<p>\nAber nat\u00fcrlich ist nicht alles so einfach, wie es erscheinen mag! <\/p>\n<p>Es gibt Probleme mit der Verifizierung von Daten, bevor sie zur Blockchain hinzugef\u00fcgt werden (zum Beispiel, ob sie f\u00e4lschungs-sicher sind?), Probleme mit der Sicherheit der System- und Anwendungssoftware, die zur Arbeit mit der Blockchain verwendet wird, sowie Probleme mit der M\u00f6glichkeit, soziale Ingenieurmethoden zu nutzen, um den Zugriff auf Krypto-Wallets zu stehlen usw.<\/p>\n<p>Wenn es sich nicht um eine \u00f6ffentliche Blockchain handelt, deren Knoten weltweit verteilt sind, sondern um eine private Blockchain, die einer Person oder einer Organisation geh\u00f6rt, wird das Vertrauensniveau nicht h\u00f6her sein als das Vertrauen, das man dieser Person oder Organisation entgegenbringt.<\/p>\n<p>Es ist auch zu ber\u00fccksichtigen, dass die in der Blockchain gespeicherten Daten f\u00fcr alle zug\u00e4nglich werden. In diesem Sinne eignet sich die Blockchain (insbesondere die \u00f6ffentliche) nicht zur Speicherung vertraulicher Informationen. Allerdings kann die Unver\u00e4nderbarkeit von Informationen in der Blockchain dabei helfen, verschiedene Formen von Betrug zu verhindern oder aufzukl\u00e4ren.<\/p>\n<p>Dezentrale Ethereum-Anwendungen sind praktisch, wenn man f\u00fcr ihre Nutzung mit Kryptow\u00e4hrung bezahlt. Je mehr Menschen Kryptow\u00e4hrung besitzen oder bereit sind, sie zu erwerben, desto beliebter werden DApp-Anwendungen und Smart Contracts.<\/p>\n<p>Unter den allgemeinen Problemen der Blockchain, die ihre praktische Anwendung erschweren, sind die begrenzte Geschwindigkeit, mit der neue Bl\u00f6cke hinzugef\u00fcgt 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\u00f6st werden.<\/p>\n<p>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\u00e4ten (Sensoren, Kontakte usw.) abrufen und auch keine Daten an externe Ger\u00e4te senden. Dieses Problem und m\u00f6gliche L\u00f6sungen werden wir in einer Lektion besprechen, die sich mit den sogenannten Orakeln \u2014 Informationsvermittlern f\u00fcr Smart Contracts \u2014 besch\u00e4ftigt.<\/p>\n<p>Es gibt auch gesetzliche Einschr\u00e4nkungen. In einigen L\u00e4ndern, wie zum Beispiel, ist die Verwendung von Kryptow\u00e4hrung als Zahlungsmittel verboten, es ist jedoch erlaubt, sie als eine Art digitale Verm\u00f6genswerte, \u00e4hnlich wie Wertpapiere, zu besitzen. Solche Verm\u00f6genswerte k\u00f6nnen an der B\u00f6rse 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\u00e4llt, wenn Sie ein Projekt entwickeln, das mit Kryptow\u00e4hrungen arbeitet.<\/p>\n<h3>Wie die Blockchain-Kette gebildet wird<\/h3>\n<p>\nWie bereits erw\u00e4hnt, stellt die Blockchain eine einfache Kette von Datenbl\u00f6cken dar. Zuerst wird der erste Block dieser Kette erstellt, dann wird der zweite hinzugef\u00fcgt und so weiter. Es wird angenommen, dass die Transaktionsdaten in den Bl\u00f6cken gespeichert werden und im letzten Block hinzugef\u00fcgt werden.<\/p>\n<p>In Abb. 1.1 haben wir die einfachste Variante der Reihenfolge der Bl\u00f6cke dargestellt, wobei der erste Block auf den n\u00e4chsten verweist. <\/p>\n<p><img decoding=\"async\" alt=\"Buch \u201eSmart Contracts mit Solidity f\u00fcr die Ethereum-Blockchain. Praktischer Leitfaden\u201c\" src=\"\/wp-content\/uploads\/2019\/10\/23ca04ba2c8914334032523d01bf8b80.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Abb. 1.1. Einfache Reihenfolge von Bl\u00f6cken<\/i><\/p>\n<p>In dieser Variante kann jedoch der Inhalt eines beliebigen Blocks der Kette sehr leicht gef\u00e4lscht werden, da die Bl\u00f6cke keine Informationen zum Schutz vor \u00c4nderungen enthalten. Angesichts der Tatsache, dass die Blockchain f\u00fcr 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\u00fcr die Blockchain ungeeignet ist.<\/p>\n<p>Lassen Sie uns den Schutz der Bl\u00f6cke vor F\u00e4lschungen angehen. In der ersten Phase werden wir versuchen, jeden Block mit einer Pr\u00fcfziffer zu sch\u00fctzen (Abb. 1.2).<\/p>\n<p><img decoding=\"async\" alt=\"Buch \u201eSmart Contracts mit Solidity f\u00fcr die Ethereum-Blockchain. Praktischer Leitfaden\u201c\" src=\"\/wp-content\/uploads\/2019\/10\/141502accec14e868a9382c612cfc791.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Abb. 1.2. Schutz der Datenbl\u00f6cke durch Pr\u00fcfziffer<\/i><\/p>\n<p>Jetzt kann ein Angreifer nicht einfach den Block \u00e4ndern, da darin die Pr\u00fcfziffer der Daten des Blocks enthalten ist. Die \u00dcberpr\u00fcfung der Pr\u00fcfziffer wird zeigen, dass die Daten ge\u00e4ndert wurden.<\/p>\n<p>Zur Berechnung der Pr\u00fcfziffer 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\u00fchrung irreversibler Operationen \u00fcber den Datenblock resultiert. Die Vorg\u00e4nge h\u00e4ngen von der Art der Hash-Funktion ab. <\/p>\n<p>Selbst bei einer kleinen \u00c4nderung des Inhalts des Datenblocks \u00e4ndert sich auch der Wert der Hash-Funktion. Anhand des Wertes der Hash-Funktion ist es unm\u00f6glich, den Datenblock wiederherzustellen, f\u00fcr den sie berechnet wurde.<\/p>\n<p>Wird dieser Schutz ausreichen? Leider nicht.<\/p>\n<p>In diesem Schema sch\u00fctzt die Pr\u00fcfziffer (Hash-Funktion) nur einzelne Bl\u00f6cke, jedoch nicht die gesamte Kette von Bl\u00f6cken. Kennt ein Angreifer den Algorithmus zur Berechnung der Hash-Funktion, kann er den Inhalt des Blocks leicht manipulieren. Nichts hindert ihn auch daran, Bl\u00f6cke aus der Kette zu entfernen oder neue hinzuzuf\u00fcgen.<\/p>\n<p>Um die gesamte Kette als Ganzes zu sch\u00fctzen, kann in jedem Block zus\u00e4tzlich zu den Daten auch der Hash der Daten des vorherigen Blocks gespeichert werden (Abb. 1.3).<\/p>\n<p><img decoding=\"async\" alt=\"Buch \u201eSmart Contracts mit Solidity f\u00fcr die Ethereum-Blockchain. Praktischer Leitfaden\u201c\" src=\"\/wp-content\/uploads\/2019\/10\/f414ab67dbabc763c537a430e01ed065.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Abb. 1.3. Hash des vorherigen Blocks im Datenblock hinzuf\u00fcgen<\/i><\/p>\n<p>In diesem Schema muss man, um einen Block zu \u00e4ndern, die Hash-Funktionen aller folgenden Bl\u00f6cke neu berechnen. Wo liegt also das Problem?<\/p>\n<p>In realen Blockchains wurden zus\u00e4tzlich k\u00fcnstliche Schwierigkeiten geschaffen, um neue Bl\u00f6cke hinzuzuf\u00fcgen \u2014 es werden Algorithmen verwendet, die viele Rechenressourcen erfordern. Da man zur \u00c4nderung eines Blocks nicht nur diesen, sondern alle folgenden Bl\u00f6cke neu berechnen muss, wird es \u00e4u\u00dferst schwierig sein, dies zu tun.<\/p>\n<p>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\u00e4lschung eines Blocks erheblich, da \u00c4nderungen auf allen Knoten des Netzwerks vorgenommen werden m\u00fcssen.<\/p>\n<p>Da die Bl\u00f6cke Informationen \u00fcber den vorherigen Block speichern, kann der Inhalt aller Bl\u00f6cke der Kette \u00fcberpr\u00fcft werden.<\/p>\n<h3>Ethereum-Blockchain<\/h3>\n<p>\nDie Ethereum-Blockchain ist eine Plattform, auf der verteilte Anwendungen (DApp) erstellt werden k\u00f6nnen. Im Gegensatz zu anderen Plattformen erm\u00f6glicht Ethereum die Nutzung sogenannter intelligenter Vertr\u00e4ge (Smart Contracts), die in der Programmiersprache Solidity geschrieben sind.<\/p>\n<p>Diese Plattform wurde 2013 von Vitalik Buterin, dem Gr\u00fcnder 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.<\/p>\n<h3>Mining oder wie Bl\u00f6cke erstellt werden<\/h3>\n<p>\nMining (Mining) ist ein ziemlich komplexer und ressourcenintensiver Prozess, um neue Bl\u00f6cke zur Blockchain hinzuzuf\u00fcgen, und keineswegs eine \u201eRohstoffgewinnung\u201c von Kryptow\u00e4hrungen. Mining sorgt f\u00fcr die Funktionsf\u00e4higkeit der Blockchain, da dieser Prozess f\u00fcr die Hinzuf\u00fcgung von Transaktionen zur Ethereum-Blockchain verantwortlich ist.<\/p>\n<p>Die Menschen und Organisationen, die f\u00fcr das Hinzuf\u00fcgen von Bl\u00f6cken zust\u00e4ndig sind, werden Miner genannt.<br \/>\nDie Software (SO), die auf den Knoten der Miner l\u00e4uft, versucht, f\u00fcr 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\u00f6glicht die Ermittlung des Wertes von Nonce nur durch sequenzielles Ausprobieren. <\/p>\n<p>Wenn der Mining-Knoten den richtigen Nonce-Wert gefunden hat, handelt es sich um den sogenannten Proof of Work (PoW). In diesem Fall erh\u00e4lt der Miner, wenn der Block dem Ethereum-Netzwerk hinzugef\u00fcgt wird, eine bestimmte Belohnung in der W\u00e4hrung des Netzwerks \u2013 Ether. Zum Zeitpunkt der Erstellung unseres Buches betr\u00e4gt die Belohnung 5 Ether, jedoch wird sie im Laufe der Zeit verringert.<\/p>\n<p>Auf diese Weise sichern Ethereum-Miner das Funktionieren des Netzwerks, indem sie Bl\u00f6cke hinzuf\u00fcgen und daf\u00fcr Kryptow\u00e4hrungszahlungen erhalten. Im Internet finden Sie eine F\u00fclle von Informationen \u00fcber Miner und Mining, w\u00e4hrend wir uns auf die Erstellung von Solidity-Vertr\u00e4gen und dezentralen Anwendungen (DApp) im Ethereum-Netzwerk konzentrieren werden.<\/p>\n<h3>Zusammenfassung der Lektion<\/h3>\n<p>\nIn der ersten Lektion haben Sie das Blockchain-System kennengelernt und erfahren, dass es sich um eine speziell angeordnete Sequenz von Bl\u00f6cken handelt. Der Inhalt bereits aufgezeichneter Bl\u00f6cke kann nicht ge\u00e4ndert werden, da dazu alle nachfolgenden Bl\u00f6cke in vielen Knoten des Netzwerks neu berechnet werden m\u00fcssten, was eine erhebliche Menge an Ressourcen und Zeit erfordert.<\/p>\n<p>Die Blockchain kann zur Aufbewahrung von Transaktionsergebnissen verwendet werden. Ihre Hauptfunktion besteht darin, eine sichere Durchf\u00fchrung von Transaktionen zwischen Parteien (Personen und Organisationen) zu organisieren, zwischen denen kein Vertrauen besteht. Sie haben erfahren, in welchen spezifischen Gesch\u00e4ftsbereichen und -sektoren die Ethereum-Blockchain und Solidity-Smart-Vertr\u00e4ge eingesetzt werden k\u00f6nnen. Dazu geh\u00f6ren der Bankensektor, die Registrierung von Eigentumsrechten, Dokumenten usw.<\/p>\n<p>Sie haben auch gelernt, dass bei der Nutzung von Blockchains verschiedene Probleme auftreten k\u00f6nnen. Dazu geh\u00f6ren Probleme bei der Verifizierung von Informationen, die in die Blockchain eingef\u00fcgt werden, die Geschwindigkeit des Blockchain-Betriebs, die Kosten f\u00fcr Transaktionen, die Herausforderung des Datenaustauschs zwischen Smart Contracts und der realen Welt sowie potenzielle Angriffe von Angreifern, die darauf abzielen, Kryptow\u00e4hrungsfonds von Benutzerkonten zu stehlen.<\/p>\n<p>Au\u00dferdem haben wir kurz \u00fcber Mining als den Prozess der Hinzuf\u00fcgung neuer Bl\u00f6cke zur Blockchain gesprochen. Mining ist notwendig, um Transaktionen durchzuf\u00fchren. Diejenigen, die minen, sichern die Funktionsf\u00e4higkeit der Blockchain und erhalten daf\u00fcr Belohnungen in Kryptow\u00e4hrung.<\/p>\n<p><b class=\"spoiler_title\">Lektion 2. Vorbereitung der Arbeitsumgebung unter Ubuntu und Debian<\/b>Auswahl des Betriebssystems<br \/>\nInstallation der erforderlichen Tools<br \/>\nInstallation von Geth und Swarm unter Ubuntu<br \/>\nInstallation von Geth und Swarm unter Debian<br \/>\nDer Firebird 3.0-SQL-Datenbankserver weist eine dynamische Zuweisung und Freigabe von Systemspeicher auf, was zu Fragmentierungen f\u00fchren kann. Beispielsweise k\u00f6nnen nach der gleichzeitigen Trennung einer gro\u00dfen Anzahl von Benutzern vom Superserver Fehler bei neuen Verbindungen auftreten.<br \/>\nLaden des Go-Distributionspakets<br \/>\nUmgebungsvariablen setzen<br \/>\n\u00dcberpr\u00fcfung der Go-Version<br \/>\nInstallierung von Geth und Swarm<br \/>\nPrivaten Blockchain erstellen<br \/>\n\u0413\u043e\u0442\u043e\u0432\u0438\u043c \u0444\u0430\u0439\u043b genesis.json<br \/>\nVerzeichnis f\u00fcr die Arbeit erstellen<br \/>\nKonto erstellen<br \/>\nInitialisierung des Knotens starten<br \/>\nKnoten-Startparameter<br \/>\nMit unserem Knoten verbinden<br \/>\nMining verwalten und Kontostand \u00fcberpr\u00fcfen<br \/>\nBeenden der Geth-Konsole<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 3. Vorbereitung der Arbeitsumgebung auf Raspberry Pi 3<\/b>Vorbereitung des Raspberry Pi 3 f\u00fcr die Arbeit<br \/>\nInstallierung von Rasberian<br \/>\nInstallation von Updates<br \/>\nSSH-Zugriff aktivieren<br \/>\nStatische IP-Adresse installieren<br \/>\nInstallation der erforderlichen Tools<br \/>\nGo installieren<br \/>\nLaden des Go-Distributionspakets<br \/>\nUmgebungsvariablen setzen<br \/>\n\u00dcberpr\u00fcfung der Go-Version<br \/>\nInstallierung von Geth und Swarm<br \/>\nPrivaten Blockchain erstellen<br \/>\n\u00dcberpr\u00fcfung des Kontos und des Kontostands<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 4. Konten und \u00dcbertragung von Mitteln zwischen Konten<\/b>Konten anzeigen und hinzuf\u00fcgen<br \/>\nListe der Konten anzeigen<br \/>\nKonto hinzuf\u00fcgen<br \/>\nParameter des Befehls geth account<br \/>\nKonto-Passw\u00f6rter<br \/>\nKryptow\u00e4hrung in Ethereum<br \/>\nW\u00e4hrungseinheiten von Ethereum<br \/>\nAktuellen Kontostand unserer Konten bestimmen<br \/>\nMittel von einem Konto auf ein anderes \u00fcberweisen<br \/>\nMethode eth.sendTransaction<br \/>\nStatus der Transaktion \u00fcberpr\u00fcfen<br \/>\nTransaktionsquittung<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 5. Ver\u00f6ffentlichung des ersten Vertrags<\/b>Smart Contracts in Ethereum<br \/>\nAusf\u00fchrung eines Smart Contracts<br \/>\nEthereum Virtuelle Maschine<br \/>\nIntegrierte Entwicklungsumgebung Remix Solidity IDE<br \/>\nKompilation starten<br \/>\nFunktionen des Vertrags aufrufen<br \/>\nVertrag in einem privaten Netzwerk ver\u00f6ffentlichen<br \/>\nDefinition von ABI und Bin\u00e4rcode des Vertrags erhalten<br \/>\nVertrag ver\u00f6ffentlichen<br \/>\nStatus der Ver\u00f6ffentlichung des Vertrags \u00fcberpr\u00fcfen<br \/>\nFunktionen des Vertrags aufrufen<br \/>\nBatch-Compiler solc<br \/>\nsolc in Ubuntu installieren<br \/>\nsolc in Debian installieren<br \/>\nHelloSol Vertrag kompilieren<br \/>\nVertrag ver\u00f6ffentlichen<br \/>\nsolc auf Rasberian installieren<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">\u0423\u0440\u043e\u043a 6. \u0421\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b \u0438 Node.js<\/b>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Node.js<br \/>\nInstallierung in Ubuntu<br \/>\nInstallierung in Debian<br \/>\nInstallierung und Start von Ganache-cli<br \/>\nWeb3 installieren<br \/>\nsolc installieren<br \/>\nNode.js auf Rasberian installieren<br \/>\nSkript zum Abrufen der Kontenliste in der Konsole<br \/>\nSkript zur Ver\u00f6ffentlichung eines Smart Contracts<br \/>\nStart und Abruf von Parametern<br \/>\nAbruf der Startparameter<br \/>\nVertrag kompilieren<br \/>\nKonto entsperren<br \/>\nABI und Bin\u00e4rcode des Vertrags laden<br \/>\nBen\u00f6tigte Gasmenge sch\u00e4tzen<br \/>\nObjekt erstellen und Ver\u00f6ffentlichung des Vertrags starten<br \/>\nSkript zur Ver\u00f6ffentlichung des Vertrags ausf\u00fchren<br \/>\nFunktionen des Smart Contracts aufrufen<br \/>\nIst es m\u00f6glich, einen ver\u00f6ffentlichten Smart Contract zu aktualisieren?<br \/>\nArbeiten mit Web3 Version 1.0.x<br \/>\nListe der Konten abrufen<br \/>\nVertrag ver\u00f6ffentlichen<br \/>\nFunktionen des Vertrags aufrufen<br \/>\nMittel von einem Konto auf ein anderes \u00fcberweisen<br \/>\nMittel auf das Konto des Vertrags \u00fcberweisen<br \/>\nSmart Contract HelloSol aktualisieren<br \/>\nSkript zur Anzeige des Kontostands erstellen<br \/>\n\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 getBalance \u0432 \u0441\u043a\u0440\u0438\u043f\u0442 call_contract_get_promise.js<br \/>\nGuthaben des Smart Contracts aufladen<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 7. Einf\u00fchrung in Truffle<\/b>Truffle installieren<br \/>\nProjekt HelloSol erstellen<br \/>\nVerzeichnis und Dateien des Projekts erstellen<br \/>\nVerzeichnis Vertr\u00e4ge<br \/>\nVerzeichnis Migrationen<br \/>\nVerzeichnis Test<br \/>\n\u0424\u0430\u0439\u043b truffle-config.js<br \/>\nHelloSol Vertrag kompilieren<br \/>\nVer\u00f6ffentlichung des Vertrags starten<br \/>\nAufruf der Funktionen des Vertrags HelloSol in der Truffle-Einladung<br \/>\n\u0412\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 HelloSol \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 JavaScript \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Node.js<br \/>\nInstallation des Moduls truffle-contract<br \/>\nAufruf der Funktionen des Vertrags getValue und getString<br \/>\nAufruf der Funktionen des Vertrags setValue und setString<br \/>\n\u00c4nderung des Vertrags und erneute Ver\u00f6ffentlichung<br \/>\nArbeiten mit Web3 Version 1.0.x<br \/>\n\u00c4nderungen am Smart Contract HelloSol vornehmen<br \/>\nSkripte zum Aufruf der Methoden des Vertrags<br \/>\nTesten in Truffle<br \/>\nTest mit Solidity<br \/>\nTest mit JavaScript<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 8. Datentypen in Solidity<\/b>Vertrag zum Studium der Datentypen<br \/>\nLogische Datentypen<br \/>\nUnsigned Integers und Signed Integers<br \/>\nFestkommazahlen<br \/>\nAdresse<br \/>\nVariablen komplexer Typen<br \/>\nArrays fester Gr\u00f6\u00dfe<br \/>\nDynamische Arrays<br \/>\nAuflistung<br \/>\nStrukturen<br \/>\nMapping-Dictionaries<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 9. Migration von Vertr\u00e4gen in private Netzwerke und in das Rinkeby-Netzwerk<\/b>Ver\u00f6ffentlichung des Vertrags aus Truffle in einem privaten Geth-Netzwerk<br \/>\nVorbereitung des Knotens f\u00fcr ein privates Netzwerk<br \/>\nVorbereitung des Vertrags f\u00fcr den Einsatz<br \/>\nKompilierung und Migration des Vertrags in das Truffle-Netzwerk<br \/>\nMigration im lokalen Geth-Netzwerk starten<br \/>\nTruffle-Artefakte generieren<br \/>\nVer\u00f6ffentlichung des Vertrags aus Truffle im Testnetz Rinkeby<br \/>\nVorbereitung des Geth-Knotens f\u00fcr die Arbeit mit Rinkeby<br \/>\nSynchronisierung des Knotens<br \/>\nHinzuf\u00fcgen von Konten<br \/>\nAufladen des Rinkeby-Kontos mit Ether<br \/>\nStarten der Vertragsmigration im Rinkeby-Netzwerk<br \/>\nInformationen \u00fcber den Vertrag im Rinkeby-Netzwerk anzeigen<br \/>\nTruffle-Konsole f\u00fcr das Rinkeby-Netzwerk<br \/>\nEinfacherer Weg, Funktionen des Vertrags aufzurufen<br \/>\n\u0412\u044b\u0437\u043e\u0432 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Node.js<br \/>\n\u00dcberweisung von Mitteln zwischen Konten in der Truffle-Konsole f\u00fcr Rinkeby<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 10. Dezentrale Datenspeicherung mit Ethereum Swarm<\/b>Wie Ethereum Swarm funktioniert<br \/>\nInstallation und Start von Swarm<br \/>\nOperationen mit Dateien und Verzeichnissen<br \/>\nHochladen einer Datei in Ethereum Swarm<br \/>\nLesen einer Datei aus Ethereum Swarm<br \/>\nAnzeigen des Manifests der hochgeladenen Datei<br \/>\nHochladen von Verzeichnissen mit Unterverzeichnissen<br \/>\nLesen einer Datei aus dem hochgeladenen Verzeichnis<br \/>\nVerwendung des \u00f6ffentlichen Swarm-Gateways<br \/>\n\u041e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a Swarm \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 Node.js<br \/>\nPerl-Modul Net::Ethereum::Swarm<br \/>\nInstallation des Moduls Net::Ethereum::Swarm<br \/>\nSchreiben und Lesen von Daten<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 11. Web3.py-Framework zur Arbeit mit Ethereum in Python<\/b>Installation von Web3.py<br \/>\nAktualisierung und Installation erforderlicher Pakete<br \/>\nInstallation des Moduls easysolc<br \/>\nVer\u00f6ffentlichung des Vertrags mit Web3.py<br \/>\nVertrag kompilieren<br \/>\nVerbindung zum Anbieter herstellen<br \/>\nDurchf\u00fchrung der Vertragsver\u00f6ffentlichung<br \/>\nSpeichern der Vertragsadresse und abi in einer Datei<br \/>\nSkript zur Ver\u00f6ffentlichung des Vertrags ausf\u00fchren<br \/>\nAufruf der Methoden des Vertrags<br \/>\nLesen der Adresse und abi des Vertrags aus einer JSON-Datei<br \/>\nVerbindung zum Anbieter herstellen<br \/>\nErstellen eines Vertragsobjekts<br \/>\nAufruf der Methoden des Vertrags<br \/>\nTruffle und Web3.py<br \/>\nZusammenfassung der Lektion<\/p>\n<p><b class=\"spoiler_title\">Lektion 12. Orakel<\/b>Kann ein Smart Contract den externen Daten vertrauen?<br \/>\nOrakel als Informationsvermittler der Blockchain<br \/>\nDatenquelle<br \/>\nCode zur Darstellung von Daten aus der Quelle<br \/>\nOrakel zum Aufzeichnen des Wechselkurses in die Blockchain<br \/>\nVertrag USDRateOracle<br \/>\nAktualisierung des Wechselkurses im Smart Contract<br \/>\nVerwendung des Web Socket-Anbieters<br \/>\nWarten auf das Ereignis RateUpdate<br \/>\nVerarbeitung des Ereignisses RateUpdate<br \/>\nInitiierung der Aktualisierung von Daten im Smart Contract<br \/>\nZusammenfassung der Lektion<\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/467347\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u0433\u043e\u0434\u0430 \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430\u0434 \u043a\u043d\u0438\u0433\u043e\u0439 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb, \u0438 \u0432\u043e\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430, \u0430 \u043a\u043d\u0438\u0433\u0430 \u0438\u0437\u0434\u0430\u043d\u0430 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u041b\u0438\u0442\u0440\u0435\u0441\u0435. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u043c\u043e\u044f \u043a\u043d\u0438\u0433\u0430 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 Solidity \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 DApp \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041e\u043d\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 12 \u0443\u0440\u043e\u043a\u043e\u0432 \u0441 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0437\u0430\u0434\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u0438\u0445, \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29275,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-39018","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u043d\u0438\u0433\u0430 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:27:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:27:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Buch \u201eSmart Contracts mit Solidity f\u00fcr die Ethereum-Blockchain. Praktischer Leitfaden\u201c | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u043d\u0438\u0433\u0430 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 Solidity \u0434\u043b\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 Ethereum. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e\u00bb | ProHoster","og:url":"https:\/\/prohoster.info\/de\/blog\/news\/kniga-sozdanie-smart-kontraktov-solidity-dlya-blokchejna-ethereum-prakticheskoe-rukovodstvo","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:27:25+00:00","article:modified_time":"2019-10-31T19:27:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39018","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 00:24:24","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:58:39","updated":"2026-01-24 00:24:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/39018","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=39018"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/39018\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/29275"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=39018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=39018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=39018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}