Erläuterung der Befehlszeilenoption von Geth: targetgaslimit?

Ich habe versucht herauszufinden, was der targetgaslimitParameter genau für Geth im Zusammenhang mit privaten Blockchains tut.

Ich habe die folgende Erklärung gesehen, aber sie hat mir nie geholfen: "Zielgasgrenze legt den künstlichen Zielgasboden für die zu abbauenden Blöcke fest (Standard: 4712388)".

Könnte jemand bitte eine andere Erklärung geben? Ich habe gesucht, aber keine guten online gefunden?

Antworten (2)

Haftungsausschluss: Ich gehe davon aus, dass ich verstehe, was Gas ist.

Das Gaslimit ist die maximale Gasmenge, die während einer Ethereum-Transaktion ausgegeben werden kann. Diese Zahl ist nicht festgelegt – zu Beginn der Ethereum-Zeit war das Gaslimit viel niedriger als heute.

Es gibt eine Berechnung, die Ethereum-Knoten durchführen, um das Gaslimit nach jeder Transaktion anzupassen, basierend auf der Nutzung im aktuellen Block. Gemäß der Dokumentation im Code: https://github.com/ethereum/go-ethereum/blob/e29c2e43640445e743bb69ab48d6c862d3e964d9/core/block_validator.go#L108

    strategy: gasLimit of block-to-mine is set based on parent's
    gasUsed value.  if parentGasUsed > parentGasLimit * (2/3) then we
    increase it, otherwise lower it (or leave it unchanged if it's right
    at that usage) the amount increased/decreased depends on how far away
    from parentGasLimit * (2/3) parentGasUsed is.

Dies beantwortet zwar technisch Ihre Frage, lässt aber die Frage nach dem Warum offen: Das Gaslimit dient dazu, das Netzwerk vor wuchernden Skripten zu schützen. Die Art und Weise, wie es dies tut, besteht darin, die aktuelle Verwendung zu betrachten und diese als Grundlage zu verwenden.

In privaten Blockchains sind Sie weniger Risiken ausgesetzt (vermutlich kennen Sie alle Akteure in Ihrem Netzwerk) und Sie haben möglicherweise nicht unbedingt eine Baseline. Darüber hinaus möchten Sie möglicherweise ein viel größeres Gaslimit haben als den Wert, den Sie durch Berechnung auf der Grundlage des aktuellen Verbrauchs erhalten würden. Mit diesem Flag können Sie dies tun.

targetgaslimitist die Gasgrenze für jeden Block. Wenn Sie ihn beispielsweise auf 8.000.000 setzen (der aktuelle Wert im Mainnet im Moment), könnte ein Miner so viele Transaktionen wie möglich akzeptieren, deren Gesamtsumme gasLimit<= 8.000.000 beträgt.

Miner haben die Möglichkeit, diesen Wert je nach Zustand des Netzwerks im Laufe der Zeit anzupassen. Zum Beispiel schlug Vitalik den Minern vor, --targetgaslimit 2000000aufgrund von Spam-Angriffen während eines Zeitraums im letzten Jahr zu laufen (das Erhöhen der targetgaslimithätte wahrscheinlich mehr legitime Transaktionen ermöglicht).

Seien Sie jedoch vorsichtig, wenn Sie dies verwenden, wie Péter Szilágyi hier betont, "das Limit kann sich zwischen den Blöcken nur um einen bestimmten Betrag ändern. Wenn die Änderung größer ist, wird der Block nicht akzeptiert." Sie können auf solche Probleme stoßen, die in Ihrer privaten Kette schwer zu debuggen sind.