Der Clique-Konsens scheint immer einen neuen Block in festen Intervallen von period
Sekunden zu versiegeln, wo period
ist die Einstellung im Genesis-Block ( config.clique.period
).
Das erscheint verschwenderisch, tatsächlich signiert Parity's Aura nur leere Blöcke, wenn eine Transaktion aufgezeichnet wird oder eine Übertragung zu einem anderen Knoten stattfindet (normalerweise alle 120 Sekunden, siehe --reseal-on-txs
und --reseal-min-period
args).
Kann man so geth
zur Arbeit kommen? Sofortige Wiederversiegelung ist mir egal, aber es wäre wirklich schön, leere Blöcke zu überspringen, wenn auch nicht vollständig.
Geth hat kein vordefiniertes Flag, um dies zu erreichen, aber Sie können und dann --preload
.js-Dateien in Geth schreiben - ich verwende diesen Ansatz in unserem privaten Netzwerk, um Blöcke nur zu versiegeln, wenn es neue Transaktionen gibt.
eth-mine-when-needed
, ich verwende eine JS-Datei, die der oben verlinkten Antwort sehr ähnlich ist. Wir verwenden Clique, da wir PoW in unserem privaten Netzwerk nicht benötigenif(eth.getBlock("pending").transactions.length > 0 || eth.getBlock("latest").transactions.length > 0) {<start mining>...
. Das bedeutet, dass alle Versiegeler mit dem Versiegeln beginnen, wenn ein neues TX hinzugefügt wird, selbst wenn sie den Trigger im TX-Pool verpassenAFAIK ist es mit GETH nicht möglich, ohne wesentliche Änderungen am Quellcode vorzunehmen. Es gibt einige "Tricks", die Sie in PoW-Netzwerken verwenden können, um nur zu schürfen, wenn Transaktionen an die Blockchain übergeben wurden. Ich kann mir vorstellen, dass Sie dasselbe mit PoA tun könnten. Davon abgesehen, wenn Sie leere Blöcke überspringen möchten, warum gehen Sie nicht einfach mit Aura und Parity?
So stoppen Sie das Mining unerwünschter Blöcke im privaten Netz auf Geth Ethereum
Alles, was Sie tun müssen, ist period:0
in der genesis.json-Datei einzustellen, um dieses Versiegelungsverhalten zu erreichen.
Jaydeep Chauhan