Buch „Erstellen solider Smart-Verträge für die Ethereum-Blockchain. Praktischer Leitfaden


Mehr als ein Jahr lang arbeitete ich an dem Buch „Erstellen solider Verträge für die Ethereum-Blockchain. Ein praktischer Leitfaden “, und jetzt ist diese Arbeit abgeschlossen, und das Buch ist veröffentlicht und in Litern erhältlich .

Ich hoffe, mein Buch hilft Ihnen dabei, schnell mit der Erstellung intelligenter Solidity-Kontakte und verteilter DApp-Anwendungen für die Ethereum-Blockchain zu beginnen. Es besteht aus 12 Lektionen mit praktischen Übungen. Nach Abschluss kann der Leser seine eigenen lokalen Ethereum-Knoten erstellen, intelligente Verträge veröffentlichen und ihre Methoden aufrufen, Daten zwischen der realen Welt und intelligenten Verträgen mithilfe von Orakeln austauschen und mit dem Rinkeby-Test-Debugging-Netzwerk arbeiten.

Das Buch richtet sich an alle, die sich für fortschrittliche Technologien im Bereich Blockchains interessieren und schnell Kenntnisse erwerben möchten, die es ihnen ermöglichen, interessante und vielversprechende Arbeiten auszuführen.

Unten finden Sie das Inhaltsverzeichnis und das erste Kapitel des Buches (Fragmente des Buches sind auch auf Liter verfügbar). Ich hoffe auf Feedback, Kommentare und Vorschläge. Ich werde versuchen, all dies bei der Vorbereitung der nächsten Ausgabe des Buches zu berücksichtigen.

Inhaltsverzeichnis
Einführung
Unser Buch richtet sich an diejenigen, die nicht nur die Prinzipien der Ethereum-Blockchain verstehen, sondern auch praktische Kenntnisse in der Erstellung verteilter DApp-Anwendungen in der Programmiersprache Solidity für dieses Netzwerk erwerben möchten.

Dieses Buch ist besser, um nicht nur zu lesen, sondern damit zu arbeiten und die in den Lektionen beschriebenen praktischen Aufgaben zu erledigen. Zum Arbeiten benötigen Sie einen lokalen Computer, einen virtuellen oder einen Cloud-Server mit dem installierten Debian- oder Ubuntu-Betriebssystem. Sie können den Raspberry Pi auch verwenden, um viele Aufgaben zu erledigen.

In der ersten Lektion werden wir die Funktionsprinzipien der Ethereum-Blockchain und die grundlegende Terminologie betrachten und darüber sprechen, wo Sie diese Blockchain verwenden können.

Der Zweck der zweiten Lektion besteht darin, einen privaten Ethereum-Blockchain-Knoten für die weitere Arbeit im Rahmen dieses Kurses auf dem Ubuntu- und Debian-Server zu erstellen. Wir werden die Funktionen der Installation grundlegender Dienstprogramme wie geth berücksichtigen, die den Betrieb unseres Blockchain-Knotens sicherstellen, sowie den dezentralen Data Warehouse-Daemon von swarm.

In der dritten Lektion lernen Sie, wie Sie mit Ethereum auf einem kostengünstigen Raspberry Pi-Mikrocomputer experimentieren. Sie installieren das Rasberian-Betriebssystem (OS) auf dem Raspberry Pi, dem Geth-Dienstprogramm, das den Betrieb des Blockchain-Knotens bereitstellt, sowie auf dem dezentralen Data Warehouse-Daemon von Swarm.

Die vierte Lektion befasst sich mit Konten und Kryptowährungseinheiten im Ethereum-Netzwerk sowie mit der Überweisung von Geldern von einem Konto auf ein anderes von der Geth-Konsole. Sie lernen, wie Sie Konten erstellen, Geldtransfertransaktionen initiieren, den Transaktionsstatus und dessen Empfang erhalten.

In der fünften Lektion lernen Sie intelligente Verträge im Ethereum-Netzwerk kennen und erfahren, wie diese von der virtuellen Ethereum-Maschine implementiert werden.

Sie erstellen und veröffentlichen Ihren ersten Smart-Vertrag im privaten Netzwerk von Ethereum und lernen, wie Sie dessen Funktionen aufrufen. Dazu verwenden Sie die Remix Solidity IDE-Entwicklungsumgebung. Außerdem erfahren Sie, wie Sie den Solc-Batch-Compiler installieren und verwenden.
Wir werden auch über die sogenannte ABI-Binärschnittstelle (Application Binary Interface) sprechen und deren Verwendung lehren.

Die sechste Lektion befasst sich mit der Erstellung von JavaScript-Skripten, die unter Node.js ausgeführt werden, und der Ausführung von Vorgängen mit Smart Contracts Solidity.

Sie installieren Node.js unter den Betriebssystemen Ubuntu, Debian und Rasberian, schreiben Skripte, um einen intelligenten Vertrag im lokalen Ethereum-Netzwerk zu veröffentlichen und dessen Funktionen aufzurufen.

Darüber hinaus erfahren Sie, wie Sie mithilfe von Skripten Geld zwischen regulären Konten überweisen und auf intelligente Vertragskonten überweisen.

In der siebten Lektion lernen Sie, wie Sie die integrierte Truffle-Umgebung installieren und verwenden, die bei Entwicklern von Solidity Smart Contracts beliebt ist. Sie erfahren, wie Sie mithilfe des Trüffelvertragsmoduls JavaScript-Skripts erstellen, die Vertragsfunktionen aufrufen, und Ihren Smart-Vertrag mit Truffle testen.

Die achte Lektion befasst sich mit Solidity-Datentypen. Sie schreiben intelligente Verträge, die mit Datentypen wie vorzeichenbehafteten und vorzeichenlosen Ganzzahlen, vorzeichenbehafteten Zahlen, Zeichenfolgen, Adressen, komplexen Typvariablen, Arrays, Aufzählungen, Strukturen und Wörterbüchern arbeiten.

In der neunten Lektion kommen Sie der Erstellung intelligenter Verträge für das Ethereum-Kernnetzwerk einen Schritt näher. Sie erfahren, wie Sie Verträge mit Truffle im privaten Geth-Netzwerk sowie im Rinkeby-Testnetzwerk veröffentlichen. Das Debuggen eines intelligenten Vertrags im Rinkeby-Netzwerk ist sehr nützlich, bevor Sie ihn im Hauptnetzwerk veröffentlichen - dort ist fast alles real, aber kostenlos.

Im Rahmen der Lektion erstellen Sie einen Rinkeby-Testnetzwerkknoten, füllen ihn mit Geldern auf und veröffentlichen einen intelligenten Vertrag.

Lektion 10 konzentriert sich auf verteiltes Data Warehousing von Ethereum Swarm. Durch die Verwendung von verteiltem Speicher sparen Sie beim Speichern großer Datenmengen in der Ethereum-Blockchain.

Im Rahmen dieser Lektion erstellen Sie einen lokalen Schwarmspeicher, führen das Schreiben und Lesen von Dateien sowie Verzeichnisse mit Dateien aus. Als Nächstes lernen Sie, wie Sie mit dem öffentlichen Swarm-Gateway arbeiten, Skripte schreiben, um über Node.js auf Swarm zuzugreifen, und das Perl Net :: Ethereum :: Swarm-Modul verwenden.

Der Zweck von Lektion 11 besteht darin, Solidity-Smart-Verträge mit der beliebten Programmiersprache Python und dem Web3.py-Framework zu meistern. Sie installieren dieses Framework, schreiben Skripte, um einen intelligenten Vertrag zu kompilieren und zu veröffentlichen sowie seine Funktionen aufzurufen. Gleichzeitig wird Web3.py sowohl alleine als auch in Verbindung mit der integrierten Entwicklungsumgebung von Truffle verwendet.

In Lektion 12 lernen Sie, wie Sie mithilfe von Orakeln Daten zwischen intelligenten Verträgen und der realen Welt übertragen. Dies ist nützlich, um Daten von Websites, IoT Internet of Things-Geräten, verschiedenen Geräten und Sensoren zu empfangen und Daten von intelligenten Verträgen an diese Geräte zu senden. Im praktischen Teil der Lektion erstellen Sie ein Orakel und einen intelligenten Vertrag, der den aktuellen Wechselkurs von USD zu Rubel von der Website der Zentralbank der Russischen Föderation erhält.

Lektion 1. Kurz über die Ethereum-Blockchain und das Netzwerk
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öcken

In 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 hinzu

Jetzt 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 hinzu

In 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. , , ..

, . , , , , - , , .

. . , , .

2. Ubuntu Debian


Geth Swarm Ubuntu
Geth Swarm Debian

Go

Go
Geth Swarm

genesis.json






Geth


3. Raspberry Pi 3
Raspberry Pi 3
Rasberian

SSH
IP

Go
Go

Go
Geth Swarm




4.



geth account

Ethereum
Ethereum


eth.sendTransaction




5.
- Ethereum
-
Ethereum
Remix Solidity IDE



ABI



solc
solc Ubuntu
solc Debian
HelloSol

solc Rasberian


6. - Node.js
Node.js
Ubuntu
Debian
Ganache-cli
Web3
solc
Node.js Rasberian

-




ABI



-
-
Web3 1.0.x





- HelloSol

getBalance call_contract_get_promise.js
-


7. Truffle
Truffle
HelloSol

contracts
migrations
test
truffle-config.js
HelloSol

HelloSol Truffle
HelloSol JavaScript Node.js
truffle-contract
getValue getString
setValue setString

Web3 1.0.x
- HelloSol

Truffle
Solidity
JavaScript


8. Solidity




Die Adresse





mapping


9. Rinkeby
Truffle Geth


Truffle
geth
Truffle
Truffle Rinkeby
Geth Rinkeby


Rinkeby
Rinkeby
Rinkeby
Truffle Rinkeby

Node.js
Truffle Rinkby


10. Ethereum Swarm
Ethereum Swarm
Swarm

Ethereum Swarm
Ethereum Swarm



Swarm
Swarm Node.js
Perl Net::Ethereum::Swarm
Net::Ethereum::Swarm



11. Web3.py Ethereum Python
Web3.py

easysolc
Web3.py



abi


abi JSON



Truffle Web3.py


12.
-




USDRateOracle
-
Web Socket
RateUpdate
RateUpdate
-






, , Ethereum, . .

Fatal: Failed to write genesis block: unsupported fork ordering: eip150Block not enabled, but eip155Block enabled at 0
Fügen Sie den Parameter eip150Block zur Datei genesis.json hinzu:
{
"config": {
"chainId": 1999,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "10",
"gasLimit": "5100000",
"alloc": {}
}

Source: https://habr.com/ru/post/de467347/


All Articles