Ich versuche, auf meinem Mac einen Genesis-Block für ein lokales Ethereum-Netzwerk zu erstellen, aber ich erhalte den Fehler:
ungültige Genesis-Datei: Hex-String hat ungerade Länge
wenn ich es mache.
Mein Code ist folgender:
{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0x8000000",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": { }
}
Das gleiche Problem ist mir mit Geth 1.6 passiert, mit einer Genesis-Datei, die Ihrer ähnlich ist.
Letzten Freitag wurde Geth auf 1.6 aktualisiert ( https://github.com/ethereum/go-ethereum/releases/tag/v1.6.0 ).
In dieser Version:
Die Handhabung von Genesis-Block-JSON ist strenger und sicherer. Insbesondere erfordern die meisten JSON-Felder jetzt das Präfix „0x“. (#3794)
Ich habe diese Dokumentationsseite gefunden: https://github.com/ethereum/go-ethereum/wiki/Private-network
Auf dieser Seite finden Sie ein Beispiel einer Genesis-Datei, die auf Geth 1.6 funktioniert.
Ich denke, Ihre Genesis-Datei funktioniert mit früheren Versionen.
Ich hatte das gleiche Problem und stellte fest, dass das Problem war:
"zusätzliche Daten": "0x0",
Wenn Sie es ändern zu:
"extraData": "0x00",
Das Problem verschwindet.
An dieser Stelle haben Sie jedoch ein weiteres Problem, da Sie in der neuesten Version von Geth einen Konfigurationsabschnitt benötigen. Fügen Sie das Folgende hinzu und Sie sollten bereit sein.
"config": { }
Ich habe die gleiche JSON-Datei wie oben verwendet und den gleichen "invalid hex"-Fehler erhalten. Gemäß dem obigen Vorschlag habe ich über den Link (siehe unten) zur neuen JSON-Datei gewechselt. Ich kann die Kette jetzt erfolgreich initialisieren, ohne den Hex-Fehler zu erhalten. Ich erhalte jedoch einen anderen Fehler, wenn ich versuche, einen Mining-Knoten zu starten. Ich frage mich, ob es daran liegt, dass dies einige vorfinanzierte Konten beinhaltet. Gibt es eine Syntax für den obigen Genesis-JSON, aber mit einer leeren Datei? (ohne vorfinanzierte Konten).
{
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "200000000",
"gasLimit": "2100000",
"alloc": {
"7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
"f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
}
}
Wie in einer anderen Antwort erwähnt, scheint dies eine Änderung mit der Veröffentlichung von geth 1.6.0 zu sein.
Da die genesis.json
heruntergeladen statt generiert wurde, bin ich mir nicht sicher, ob es angemessen ist, die genesis.json
.
Ich habe geth 1.5.9 installiert und konnte $ geth init genesis.json
das in der Frage gezeigte alte Format verwenden.
Ich stehe vor dem gleichen Problem und löse es, indem ich einige Regeln befolge. Diese Regeln sind "mixhash" = Sie müssen Daten 64 mal nach 0x schreiben, "coinbase" = Sie müssen Daten 40 mal nach 0x schreiben, "timestamp" = 0x00, "parenthash" = Sie müssen Daten 64 mal nach 0x schreiben , "extraData"= "0x00" In diesem Fall meine json-Daten wie:
{
"nonce": "0x000000142",
"difficulty": "0x4000",
"alloc": {
"6b3fb267ff816af81091946a7e8": {
"balance": "1000"
},
"70604ec24664b629abfa3604fc0140": {
"balance": "100000"
}
},
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parenthash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0xfffff"
}
Aniket
FugueWeb