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