Tutorial: Stellen Sie Ihr eigenes ICO-Token mit Geth (Teil I)

bereit

Hey Leute! Wir freuen uns sehr, dieses Tutorial mit Ihnen zu teilen. Seit einigen Wochen haben wir eine Reihe von Blogs veröffentlicht, die sich mit der Entwicklung intelligenter Verträge befassen, wie Remix, Truffle und viele Testtools. Dieses Mal beschließen wir, wie üblich, ein Anfänger-Tutorial über die Verwendung von Geth, der offiziellen Golang-Implementierung des Ethereum-Protokolls, zu schreiben. Mit diesem Tool können wir unsere eigenen intelligenten Verträge in jedem Netzwerk bereitstellen, das von leistungsstarken Funktionen unterstützt wird. Fangen wir also einfach an!

Installieren Sie Geth

Unter Linux

Unter OSX

Danach können Sie geth --help eingeben, um zu überprüfen, ob geth erfolgreich installiert wurde. Wenn Hilfeinformationen angezeigt werden, können Sie loslegen.

Neues Konto erstellen

Jetzt haben wir unser Geth bereit und um Transaktionen durchführen zu können, benötigen wir ein Konto. Wenn wir bereits ein eigenes Konto haben, können wir die private Schlüsseldatei mit dem folgenden Befehl in Geth importieren:

Dann müssen wir nur noch den Anweisungen folgen.

Wenn wir jedoch keinen haben, können wir ein neues Konto bei Geth erstellen. Geben Sie einfach Folgendes ein:

Danach speichert Geth Ihre private Schlüsseldatei global. Wir können dies an diesen Standorten gemäß Ihrem Betriebssystem überprüfen.

Zum Beispiel erstellen wir ein neues Konto und seine öffentliche Adresse lautet

0x2f5e0ff2c960852e76be73b7cff8ea20d42d2ec

Und wenn wir Folgendes eingeben:

Wir werden feststellen, dass wir derzeit ein Konto haben. Wenn wir die neu erstellte öffentliche Adresse vergessen, machen Sie sich keine Sorgen. Wir können es auf diese Weise überprüfen.

Erstellen Sie genesis.json

Jetzt können wir zuerst unseren ersten Block mit genesis.json erstellen.

Grundsätzlich ist genesis.json eine Datei, die eine Reihe von Regeln und Konfigurationen für die gesamte Blockchain angibt, einschließlich chainID, schwierigkeit, gasLimit usw. Jede getätigte Transaktion folgt diesen Regeln. Im Moment müssen wir nur unsere Kontoadresse hier ändern und alle anderen Dinge in Ruhe lassen.

Wir können diese Datei überall speichern, wo wir möchten. Die folgenden Schritte zum Initialisieren einer Blockchain sind davon nicht betroffen.

Blockchain erstellen

Wie wir alle wissen, wird jeder Block der Blockchain auf der lokalen Festplatte jedes Knotens gespeichert, wenn der Knoten vollständig synchronisiert ist. Daher sollten wir auch einen Ordner angeben, in dem die gesamte Blockchain gespeichert wird. Um dies zu erreichen, können wir diesen Befehl verwenden:

Es wird zuerst ein Ordner mit dem Namen LocalNode1 im aktuellen Ordner erstellt, dann die Blockchain mit genesis.json initialisiert und die Datendateien in LocalNode1 gespeichert. Hier sollte der Pfad von genesis.json korrekt angegeben werden, da er sonst nicht funktioniert.

Wenn alles gut geht, erhalten wir die Meldung “Erfolgreich geschriebener Genesis-Status”. Wenn Sie in den Ordner LocalNode1 schauen, finden Sie zwei Ordner geth und keystore sowie eine Datei geth.ipc .

Interagiere mit Blockchain

Um mit der soeben erstellten Blockchain zu interagieren, geben Sie einfach Folgendes ein:

Dieser Befehl gibt verschiedene Dinge an:

Vorhandenes Konto hinzufügen

Derzeit haben wir kein Konto in LocalNode1 . Obwohl wir zuvor ein neues Konto erstellt haben, konnte es von Geth nicht gefunden werden, da derzeit Daten von LocalNode1 ausgeführt werden. Um ein vorhandenes Konto zu LocalNode1 hinzuzufügen, müssen Sie ein neues Terminal öffnen und Folgendes eingeben:

Alles klar. Überprüfen Sie das Konto in LocalNode1 mit:

Wir können auch den Kontostand überprüfen.

Denken Sie daran, dass wir in genesis.json 10¹¹ für den Kontostand angeben.

Verbindung zu anderen Knoten herstellen

Jetzt öffnen wir ein neues Terminal und erstellen einen neuen Ordner mit dem Namen LocalNode2 unter demselben Ordner wie LocalNode1 . Wir machen den gleichen Prozess wie der alte Knoten, da wir genau die gleichen Blockchain-Informationen benötigen, um zwei Knoten miteinander zu verbinden. Davon abgesehen sollte der neue Knoten alle Informationen mit genesis.json initialisieren und alle vergangenen Transaktionen innerhalb dieser Blockchain synchronisieren.

Erstellen Sie einen neuen Datenordner und initialisieren Sie ihn mit genesis.json:

Öffnen Sie die Geth-Konsole:

Beachten Sie, dass sich die Portnummer von der vorherigen unterscheiden sollte.

Erstellen Sie ein neues Konto für Knoten2:

OK. Jetzt können wir mit unserem Verbindungsprozess beginnen. Wenn Sie unser Tutorial sorgfältig befolgen, werden Sie feststellen, dass wir nodiscover zuvor festgelegt haben, und Sie könnten verwirrt sein. Ja, die Eigenschaft nodiscover verhindert, dass unser Knoten automatisch mit den anderen Knoten interagiert. Wenn wir also aktiv einen Knoten hinzufügen, ist dies in Ordnung.

Rufen Sie zuerst im Terminal des Knotens 2 die Informationen des Knotens 2 ab, indem Sie:

Zweitens fügen Sie im Terminal von Knoten1 die Informationen von Knoten2 hinzu, indem Sie:

Überprüfen Sie dann die Verbindung durch:

oder

Stellen Sie den Bergmann ein

Ein Miner ist ein Knoten, der Rechenleistung bereitstellt, um Belohnungen zu erhalten. Jede Transaktion muss abgebaut werden, um einen Block zu erstellen. Es gibt also Tausende von Bergleuten, die miteinander konkurrieren, um die Transaktion auszuführen. Manchmal ist der Wettbewerb umso intensiver, je höher die Gasmenge ist, die die Transaktion bereitstellt.

Um den Miner einzustellen, geben Sie einfach Folgendes in das Terminal des Knotens 1 ein:

Dies bedeutet, dass eth.accounts [0] nicht nur die Rolle eines Anrufers, sondern auch die eines Bergmanns spielt. Wir können definitiv andere Konten als Bergmann festlegen.

Stellen Sie außerdem im Terminal des Knotens 2 den Miner ein:

Schlussfolgerung

Das war’s! Durch das Herumspielen dieser Tools können wir besser verstehen, wie die Blockchain tatsächlich funktioniert, wie Knoten miteinander interagieren und so weiter. Beim nächsten Mal werden wir weitere Details zum Kompilieren eines Vertrags, zum Ausführen einer Vertragserstellungstransaktion und zum Starten des Miners zum Minen der Transaktion veröffentlichen. Bis nächste Woche!

Von Zhiyuan Li und Quan Sun , Sicherheitsforscher von HaloBlock.io