Gaslimit in privater Kette überschritten

Ich betreibe derzeit eine private Ethereum-Kette mit 2 Knoten. Meine Coinbase-Adresse auf dem Hauptknoten hat viel Ether, also wollte ich eine Transaktion durchführen, bekam aber den Fehler „Gas Limit überschritten“. Ich bemerkte, dass das Gaslimit auf 5000 eingestellt war, was zu niedrig ist, um eine Transaktion durchzuführen, also ging ich zur angepassten genesis.json-Datei und erhöhte das Limit auf „0xC350“ oder 50000. Trotzdem wurde das Limit nur auf 5003 verschoben. Ich habe Keine Ahnung, warum es das tut, und ich habe die Zahl durch andere größere Zahlen ersetzt, aber es schafft es immer nur, 5003 statt der Standardeinstellung 5000 zu erreichen. Jede Hilfe wäre sehr willkommen.

Hier ist meine Genesis.json-Datei:

{
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x0",
"gasLimit": "0xC350",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc":
{ 
    "0xcf117e46aa225864ed1d0dd7e99b8b006abe3410":
    { "balance": "10000000000000000000000000" } 
}

}

Ich verwende Geth.

Verwenden Sie beim Starten von geth die Datei genesis.json?
Ich führe die angepasste Genesis-Datei von oben aus, hier ist der Befehl: geth --datadir ~/.ethereum_private init ./customGenesis.json

Antworten (3)

Ändern Sie nicht die Genesis-Datei, da dies die Dynamik der Blockchain verändert. Geth hat ein --targetgaslimitFlag, das den Miner veranlasst, sich einer bestimmten Zahl zu nähern, die dem fest codierten Wert entgegengesetzt ist.

Jeder Block hat eine Gasgrenze, die im Block selbst enthalten ist. Dieses Limit kann sich zwischen den Blöcken nur um einen bestimmten Betrag ändern (prev limit/1024, um genau zu sein). Ist die Änderung größer, wird die Sperre nicht mehr übernommen.

Stellen Sie sicher, dass Sie Ihr privates Netzwerk nicht nur einrichten --targetgaslimit, sondern auch mit dem Mining beginnen . --mineDadurch wird die Blockgasgrenze langsam in Richtung der angegebenen Zielgasgrenze verschoben, und Sie werden sehen, wie sich die Gasgrenze mit jedem Block erhöht.

Beachten Sie auch, dass das Target Gas Limit Flag in Geth 1.4.x eingeführt wurde, stellen Sie also sicher, dass Sie einen sehr aktuellen Client haben.

Siehe auch diese ausgezeichnete Antwort .

Ich habe die Anleitung How to Run Multiple Geth Instances on a Private Ethereum Blockchain verwendet . Und kann über 1.000.000 Gas verwenden.

{
"nonce": "0xdeadbeefdeadbeef",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x686f727365",
"gasLimit": "0x8000000",
"difficulty": "0x0400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {
}
}

Neue Versionen von Geth erlauben es nicht, den Genesis-Block zu modifizieren, sobald er gestartet wurde. Sie müssen Ihr Datenverzeichnis zurücksetzen und neu starten.

Sie müssen die Genesis-Datei nicht ändern. Es dient nur dazu, den Ethereum-Knoten zu initialisieren. Sie müssen den neuesten Block mit dem eth.getBlock("latest")Befehl überprüfen und dort erhalten Sie die gasLimit. Sie nimmt zu, wenn der Block im Netzwerk zunimmt. Stellen Sie immer sicher, dass Ihr Transaktionsgaslimit niedriger sein muss.