Ausconsensus/ethash/ethash.go
// Mining related fields
rand *rand.Rand // Properly seeded random source for nonces
threads int // Number of threads to mine on if mining
update chan struct{} // Notification channel to update mining parameters
hashrate metrics.Meter // Meter tracking the average hashrate
Wie können wir diese Zufallsfunktion in einem deterministischen System haben?
Kommt dies von der Miner-Maschine und das ist es, was Entropie im System erzeugt, warum der Blockgenerierungsprozess stochastisch ist?
Ich denke, das OP fragt, wie eine Zufallszahl in einem konsensgesteuerten deterministischen System verwendet werden kann. Die Frage enthält ein Missverständnis über das „Timing“.
Die Zufälligkeit tritt ein, während alle Knoten nach dem gewinnenden Block-Hash suchen – dies geschieht vor dem Konsensschritt. Nachdem der Block-Hash gefunden wurde (zufällig von einem einzelnen Miner), sendet dieser Miner den Block-Hash an jeden Knoten.
Die Knoten bestätigen dann den Hash (was eine deterministische Aufgabe ist), und wenn mindestens einer mehr als die Hälfte der Knoten zustimmt (wiederum deterministisch), wird der Block in die Kette geschrieben.
Als Antwort auf das, was ich denke, ist Ihre Frage: Der zufällige Teil (Finden des Blocks) findet vor dem deterministischen Teil (Kommen zu einem Konsens) statt.
Kommt das von der Maschine des Bergmanns?
Ja, im Fall der Standard-Mining-Funktionalität in Mist/Geth. Wenn Sie ein Mining-Tool erstellen, können Sie Ihre Quelle für Zufallszahlen abrufen, wo immer Sie möchten (könnten auch nur die Ziffern von Pi sein, wenn Sie möchten).
smatthewenglisch
Thomas JayRush
smatthewenglisch