Konsens der Geth-Clique leere Blöcke überspringen

Der Clique-Konsens scheint immer einen neuen Block in festen Intervallen von periodSekunden zu versiegeln, wo periodist 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-txsund --reseal-min-periodargs).

Kann man so gethzur Arbeit kommen? Sofortige Wiederversiegelung ist mir egal, aber es wäre wirklich schön, leere Blöcke zu überspringen, wenn auch nicht vollständig.

Wenn Sie in Geth die Clique-Periode auf 0 setzen, wird nur dann ein neuer Block erstellt, wenn eine Transaktion vorhanden ist.

Antworten (3)

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.

Hyperlink behoben, sorry - ich verwende nicht 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ötigen
Interessant, danke. Ich habe eine Variante davon zum Laufen gebracht, obwohl ich für „ X-Bestätigungen “ das Skript nur auf einem der beiden Unterzeichnerknoten ausführen musste. In einem Setup mit 3+ Unterzeichnern wird es wahrscheinlich überhaupt nicht funktionieren.
Es kann bei allen Unterzeichnern in einem Netzwerk funktionieren, wenn Sie das Skript leicht ändern - if(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 verpassen

AFAIK 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:0in der genesis.json-Datei einzustellen, um dieses Versiegelungsverhalten zu erreichen.