Probleme beim Ausführen von Transaktionen in einem privaten PoA-Netzwerk mit Blockzeit auf 0 gesetzt

Ich versuche, ein privates PoA-Netzwerk (Proof of Authority) mit blockTime (clique.period im Gensis-Block) auf 0 zu betreiben.

Ich teste einen Truffle-Vertrag gegen dieses Netzwerk, und wenn ich die Truffle-Befehle ausführe (sowohl Truffle Migration als auch Truffle Test [eines einfachen Vertrags]), scheinen die Operationen nur mit der Protokollierung der Geth-Instanzen zu hängen, und das Netzwerk zeigt null ausstehende Transaktionen Block sealing failed err="waiting for transactions"an .

Ich habe die Befehle sowohl mit testrpc als auch mit demselben privaten Netzwerk getestet, wobei blockTime auf 1 gesetzt war, und es wird jedes Mal einwandfrei ausgeführt. Wenn es etwas Einfaches gibt, das ich vermisse, oder wenn Sie mich in die richtige Richtung weisen könnten, wäre ich sehr dankbar.

Das private Netzwerk betreibt drei Knoten (alle Unterzeichner)

Antworten (1)

Ich hatte das gleiche Problem. Truffle scheint mit blocktime = 0 nicht zu funktionieren.

Ich habe drei Lösungen gefunden:

  • Stellen Sie eine Verbindung zu Ihren Knoten her und stoppen Sie den Mining-Prozess ( miner.stop()), starten Sie die Truffle-Migration, starten Sie den Mining-Prozess auf den Knoten neu ( miner.start()). Diese Lösung ist nicht immer ein Erfolg, ich empfehle sie nicht.

  • Testen Sie Ihren Smart Contract in einem anderen Netzwerk (das Ihrem tatsächlichen Netzwerk wie Rinkeby möglichst ähnlich ist).

  • Ändern Sie die Blockzeit Ihrer privaten Kette.

Oh, ich verstehe, das ist sehr seltsam. Ja, ich konnte die Transaktionen in anderen Netzwerken oder mit einer anderen Blockzeit ausführen. Konnten Sie bestätigen, dass dieses Problem nur bei Trüffeln auftritt und nicht bei anderen Methoden zum Erstellen einer Transaktion?
Ich habe ein Github-Problem gefunden, das intern bei Truffle für alle verfolgt wird, die später darauf stoßen: github.com/trufflesuite/truffle/issues/624