Dann dürfte ich pro Block ja eigentlich maximal eine "confirmed DL" bekommen, und alle schlechteren sollten verworfen werden?
Hin und wieder kriege ich mehrere DL confirmed pro Block, selten gar keine.
Jetzt schwanken die DL ja schon sehr stark, manchmal Tage, manchmal Stunden (eher selten) - ist das dann eher Zufall?
Weil wenn es ja von der Größe abhängig ist (dachte eigentlich von der Lesegeschwindigkeit und der CPU) müsste die DL eigentlich bei gleichbleibender Größe, gleich bleiben? Oder anders gefragt, wie ergeben sich die deutlichen Unterschiede der DL von Block zu Block?
Ich versuche es mal anschaulich zu erklären. Technisch werden in meiner Erklärung jetzt bestimmt einige Fehler sein. Aber es geht mir darum das generelle Prinzip zu verdeutlichen:
Stell dir Burst Mining wie eine Lotterie vor und jeder Block ist eine neue Ziehungsrunde.
Deine Plotdateien sind deine Lose. Aber eine PLotdatei ist nicht nur ein Los, sondern besteht aus wahnsinnig vielen Losen. Genauer gesagt ist 1 Los immer 256 kByte groß und nennt sich "nounce". Bei einer "Nounce" handelt es sich also sozusagen um ein "ganzes " Los. Jetzt sind diese Lose aber nochmal in Teillose unterteilt. (Das kennt man auch von der Norddeutschen Klassenlotterie oder so. Da kann man auch 1/8 Los kaufen oder so was). Bei Burst ist es so, dass jedes ganze Los, also jede "nounce" noch mal in 4096 Teillose unterteilt ist, die sogenannten "Scoops". Auf jeden dieser Teillose (Scoops) steht eine zufällige Zahl. DEr Einfachheit halber sagen wir jetzt mal eine zufällige Zahl zwischen 1 und 1000. (In Wirklichkeit ist der Zahlenbereich deutlich höher... Irgendwas mit mehreren Billionen glaub ich).
Jetzt gehen wir davon aus, wir plotten nur 1 Megabyte. Das bedeutet wir haben 4 Lose geplottet mit jeweils 4096 Teillosen. In jedem dieser Teillose steht jetzt eine fufälige Zahl zwischen 1 und 1000.
Jetzt geht das Mining los: Wir sind bei Block 1. Der Burst Algorithmus errechnet nun aus Blockhöhe und irgendeinem Zufallsalgorithmus ebenfalls eine Zahl zwischen 1 und 1000. Außerdem wird durch einen anderen Zufallsalgorithmus eine Zahl zwischen 1 und 4096 errechnet. Diese zweite Zahl bestimmt um welches Teillos ("scoop") es in dieser Lotterierunde (bei diesem Block) überhaupt geht.
In unserem Beispiel wird nun als erste Zahl die 546 und als zweite Zahl die 2046 errechnet. Die Miner bekommen jetzt die Mitteilung alle ihre Lose (nounces) nach dem Teillos(Scoop) 2046 zu durchsuchen und die Zahl, die auf diesem einen Teillos steht zurückzumelden. In dieser Runde(Block) geht es also um nichts anderes als um diese 4 Teillose(Scoops).
Unser Miner legt jetzt los und schaut sich die jeweils passenden Teillosse(Scoops) in unseren 4 Losen (nounces) jetzt an. Jetzt sagen wir mal da steht folgendes drinnen:
nounce 1 - Scoop 2046 : 900
nounce 2 - Scoop 2046 : 956
nounce 3 - Scoop 2046 : 850
nounce 4 - Scoop 2046 : 200
Sobald der Miner das erste Teillos (Scoop) eingelesen hat vergleicht er es mit der durch den Burst Algorithmus errechnet Zufallszahl (546) und rechnet 900-546 = 354. Daraufhin meldet er zurück. Meine (bis jetzt) beste Deadline beträgt 354 (Sekunden).
Jetzt kommt das nächste Teillos (Scoop) dran (956). Der Miner rechnet wieder 956-546=410. Er erkennt, dass diese Deadline länger ist als die erste und verwirft Sie. Sendet Sie also nicht, da Sie ncihts mehr bringen würde.
3. Teillos(Scoop): 850-546=304. Aha!! Die Deadline ist kürzer als die erste. Also sendet der Miner eine Deadline von 304 (Sekunden)
4. nounce: 200-546=-346 (das minus wird ignoriert) 346 ist größer als 304 also wird auch diese Deadline verworfen.
Wenn nun alle Miner ihre Deadlines gemeldet haben und die Anzahl der Sekunden der kürzesten Deadline abgelaufen ist ist die Runde beendet und derjenige der die kürzeste Deadline gefunden hat wird belohnt.
Daraufhin fängt die zweite Runde (Block) an und alles geht von vorne Los. Eine neue Zufallszahl zwischen 1 und 1000 wird errechnet und eine zweite zwischen 1 und 4096 die bestimmt um welches Teillos(Scoop) es diesmal geht.
Umso größer die Plotdateien also sind die man hat umso mehr Lose(nounces) hat man. Und mit jedem Los erhöht sich natürlich in jeder Runde die Chance, dass man zufällig genau das Teillos dabei hat, dass gerade ganz besonders nah an der Zufallszahl dran ist, die der Algorithmus gerade vorgibt.
In das ganze Spiel kommt jetzt noch die difficulty mit rein. Grob gesagt kann man es sich so vorstellen, dass das oben genannte bei einer difficulty von 1 gilt. Bei einer difficulty von 2 könnte man sich grob gesagt vorstellen, dass der Algorithmus einfach nur noch jede 2. gemeldete Deadline akzeptiert. Damit halbiert sich natürlich die Wahrscheinlichkeit, dass man eine gute Deadline hat.
(Ich weiß, das Verfahren mit der difficulty läuft eigentlich ganz anders. Aber es geht mir rein ums Verständnis, dass die difficulty die Wahrscheinlichkeit beeinflusst eine gute Deadline zu finden.