Geth-Konsole startet nicht im Entwicklermodus (benutzerdefinierte Genesis-Json-Datei)

Ich habe zwei Konten erstellt und für beide Kontoadressen habe ich ihnen etwas Ether in einer angepassten genesis.json bereitgestellt. Dann habe ich den Befehl ausgeführt

geth - datadir "/tmp/ethereum_dev_mode/" -dev unlock 0,1 -rpc -rpcaddr w.x.y.z -rpccorsdomain "*" -rpcport abcd init "/tmp/ethereum_dev_mode/genesis.json"

Dieser Befehl wurde erfolgreich ausgeführt und hat den benutzerdefinierten Genesis-Block erstellt, Cache und Dateihandles zugewiesen, den Genesis-Status geschrieben usw. Dann habe ich den Befehl geth -datadir "/tmp/ethereum_dev_mode/geth/" -fast console "/tmp/ethereum_dev_mode/genesis.json" -dev ausgeführt. Ich habe die folgende Fehlermeldung erhalten-

Fatal: Fehler beim Starten des Protokollstapels: Datenbank enthält bereits einen inkompatiblen Genesis-Block (habe 65e04841b69188e8, neu e5be92145a301820)

Liegt es an einer angepassten Genesis-Datei? Selbst bei Verwendung der angepassten Genesis-Datei wurde der Befehl init erfolgreich ausgeführt, aber das Starten der Dev-Konsole schlug fehl.

Antworten (2)

Wegen Genesis-Block einmal initialisiert. Sie hatten einmal ausgeführt, die Informationen des Genesis-Blocks wurden in die DB geschrieben, aber jetzt haben Sie es erneut ausgeführt, sodass dieser Fehler aufgetreten ist. der richtige Befehl lautet:

geth --datadir "/tmp/ethereum_dev_mode/geth/" --fast --dev console 

Es gibt ein klares Urteil in der Go-Ethereum-Quelldatei wie folgt:

// Check whether the genesis block is already written.
    if genesis != nil {
        block, _ := genesis.ToBlock()
        hash := block.Hash()
        if hash != stored {
            return genesis.Config, block.Hash(), &GenesisMismatchError{stored, hash}
        }
    }

Hoffe, das hilft dir ~

Werfen Sie einen Blick auf diese Frage: Verwendung eines benutzerdefinierten Datenverzeichnisses im Dev-Modus (private Blockchain) . DevMode erzwingt bestimmte Funktionen wie einen bestimmten Genesis-Block, ein bestimmtes Datenverzeichnis usw. Wahrscheinlich ist --dev nicht das, was Sie wollen, wenn Sie versuchen, sich mit Mining und Smart Contracts vertraut zu machen.