Warum kann ich nicht mehr Transaktionen aus einem Stapel im selben Block erhalten?

Neulich habe ich also versucht, viele Transaktionen von ~100 vom selben Konto zu bündeln und sie an Ethereum zu senden. Ich habe programmgesteuert viele TXs erstellt, die Nonce entsprechend erhöht, signiert und gesendet (alles über web3js 1.0).

Alle von ihnen wurden schließlich verarbeitet, aber ich konnte selten sehen, dass 2 oder mehr TXs in denselben Block gehen. Sie wurden meistens jeden zweiten Block einzeln abgebaut. Selbst als ich den gasPrice stark erhöhte, konnte ich keine Verbesserung darin feststellen, wie schnell die Charge abgebaut wurde.

Hat jemand eine Idee warum das passiert?

Bevor ich zum Mainnet wechselte, habe ich auf Ropsten getestet und eine ganze Charge von 30 txs wurde im selben Block abgebaut. Hängt dies damit zusammen, wie Miner auswählen, welche TX in Blöcke eingefügt werden sollen? Ich verstehe, warum ein Miner keinen TX in einen Block aufnimmt, der seine Nonce in der Zukunft hat, aber ich verstehe nicht, warum er nicht mehr TXs von demselben Konto enthalten würde, wenn sie aufeinanderfolgende Nonces haben, sie gültig sind und der Gaspreis hoch ist . Das Lustige ist, dass hin und wieder ein Block mit 2 oder mehr aufeinanderfolgenden TXs herauskam, aber das war selten.

Könnten Sie überprüfen, ob die Blöcke, in denen Ihre Transaktionen abgebaut wurden, voll waren oder freien Speicherplatz hatten? Sie sagten, dass Sie selten zwei oder mehr Ihrer Transaktionen in einem Block gesehen haben, aber wie oft haben Sie mehrere Ihrer Transaktionen in aufeinanderfolgenden Blöcken gesehen? Wahrscheinlich gab es zu diesem Zeitpunkt einfach zu viele ausstehende Transaktionen im Speicherpool.

Antworten (1)

Meine Vermutung ist, dass Miner im Allgemeinen keine Transaktionen, die sie nicht ausführen können, in ihrem TX-Pool aufbewahren. Der Miner erhält sie also möglicherweise außer Betrieb und löscht sie einfach, wobei er nur diejenige behält, die er ausführen kann, und später sendet ihnen einer seiner Kollegen die nächsten Transaktionen. Da es so viele Knoten im Netzwerk gibt, bleiben Ihre Transaktionen im Allgemeinen lange auf einem Knoten, sodass es kein Problem darstellt, wenn einige Knoten sie löschen.

Ich habe nicht bedacht, dass ein Bergmann sie außer Betrieb erhalten könnte. Und ich denke, dass dies von der Politik des Miners abhängt, bestimmte TXs fallen zu lassen oder bestimmte TXs sogar nicht zu verbreiten. Ich habe irgendwo gelesen, dass bestimmte Node-Implementierungen nach einer gewissen Zeit ungeminte TXs löschen, und ich denke, dass es keine gute Strategie ist, einige TXs zu lange zu behalten, da man einen Node mit viel Unmining (einmal weit in der Zukunft) spammen könnte, um ihn zum Laufen zu bringen aus Speicher oder Speicher. Aber ich denke, es wäre nicht so schlimm, die mit Nonces in der Nähe des aktuellen zu halten.