Wie oft aktualisieren Miner ihre Blocktransaktionsliste?

Unter der Annahme eines Intervalls, in dem kein Block gefunden wird, wissen wir, wie oft der typische Miner seine Blocktransaktionsliste mit neuen Transaktionen aus dem Mempool aktualisiert?

Ich habe eine Referenz gefunden , die darauf hindeutet, dass die Standardaktualisierungszeit 60 Sekunden beträgt, aber ich bin mir nicht sicher, welche Software die Pools verwenden, um ihre Sperrtransaktionslisten zu generieren.

Diese Frage ist ähnlich, aber die Antwort beantwortet Ihre Frage nicht wirklich: bitcoin.stackexchange.com/questions/3335/…

Antworten (1)

Willkommen auf der Seite!

Dies hängt vom verwendeten Protokoll ab.

Bei einigen Protokollen bestimmt der Pool, wie oft die Transaktionsliste aktualisiert wird, und bei anderen wird sie vom Mining-Client definiert.

Schicht

In Stratum sendet der Pool dem Miner einen neuen Merkle-Zweig, wenn er einen neuen Block sieht oder wenn eine bestimmte Zeit vergangen ist. Standardmäßig aktualisiert es die Liste der Transaktionen alle 60 Sekunden .

Dies ist natürlich nur eine Vorgabe; ein Poolbetreiber kann dies ändern.

GBT

In getblocktemplate mit longpoll sendet der Pool neue Arbeit bei Blockwechsel oder nach 60 Sekunden. (Zumindest für Bitcoin.)

// Wait to respond until either the best block changes, OR a minute has passed and there are more transactions
...
checktxtime = boost::get_system_time() + boost::posix_time::minutes(1);

(Quelle)

In getblocktemplate ohne Longpoll sucht der Miner hin und wieder nach neuer Arbeit. „Hin und wieder“ ist Miner-definiert.

cgminer macht es alle 60 Sekunden:

static void gen_gbt_work(struct pool *pool, struct work *work)
...
if (now.tv_sec - pool->tv_lastwork.tv_sec > 60)

(Quelle)

bfgminer kann vom Benutzer konfiguriert werden, ist jedoch standardmäßig auf 60 Sekunden eingestellt:

--scan-time <arg>   Upper bound on time spent scanning current work, in seconds (default: 60)

(Quelle)

Fazit

Das Ändern der Arbeit, nachdem das Netzwerk einen neuen Block gefunden hat, und alle 60 Sekunden ist bei weitem die häufigste Vorgehensweise.

Das Stratum-Protokoll hat kein Standardintervall, um neue Arbeit zu pushen. Ich denke, die meisten Pools benötigen jedoch 30 Sekunden.
stratum protocol doesn't have a default interval to push new workTechnisch gesehen definiert das Stratum-Protokoll nicht, wie oft Sie neue Arbeit pushen. In der Praxis verwendet jeder die Implementierung von slush, und die Implementierung von slush tut dies standardmäßig alle 60 Sekunden.
Dies ist eine wirklich großartige Antwort, Nick, und viel mehr, als ich mir erhofft hatte.
Ich habe die „Mindestvorlaufzeit“ für Transaktionen untersucht, das ist die Mindestzeit, die ein an das Netzwerk gepushter TX benötigt, um die Blockerkennungszeit zu überholen, damit er eine Chance hat, aufgenommen zu werden. Die Ergebnisse scheinen mit den von Ihnen beschriebenen Aktualisierungsintervallen von 60s/30s übereinzustimmen. Siehe hier für Grafiken der geschätzten minimalen Vorlaufzeit. Die Daten sind dem Corti-Organ zu verdanken .
Die meisten Pools haben ihre eigene Mining-Pool-Software, sie verwenden nicht die Beispielimplementierung von Slush.