Wie haben wir zufällige Nonces in einem deterministischen System?

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?

Antworten (2)

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.

Ja, ich verstehe, was du meinst – ich glaube, ich bin auch darüber gestolpert – das Fehlen von Zufälligkeit von Solidität und so weiter
Wenn es in Solidity echte Zufälligkeit gäbe, würden verschiedene Knoten zu unterschiedlichen Schlussfolgerungen über die Ausführung der Software kommen. Ich bin mir nicht sicher, aber ich denke, aus diesem Grund wird der Zufall niemals Teil von Solidity sein. Vielleicht weiß es aber jemand anders besser.
Richtig, aber dann habe ich mich über diese Zufälligkeit gewundert, aber ich sehe jetzt, dass es nur von einem einzelnen Miner kommt und es notwendig ist, die Entropie des Netzwerks bereitzustellen

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).