Wie kommt es, dass gleichzeitige Miner die Arbeit des anderen nicht untergraben?

Jedes Mal, wenn ein neuer Block über der Blockchain hinzugefügt wird, müssen die Miner ihre Arbeit neu starten, da der nächste Block einen korrekten Verweis auf den vorherigen Block haben muss.

Nehmen wir an, dass es für jeden Block eine Nonce gibt, so dass es auch einen ausreichend kleinen Hash gibt (kleiner als das Ziel). Im Allgemeinen gibt es 2 256 mögliche Hashes. Das Ziel sei t . Das Ziel kann auch als eine Anzahl akzeptabler Hashes verstanden werden. Es besteht also eine Wahrscheinlichkeit von t / 2 256 , bei jedem Versuch einen richtigen Hash zu finden, dh einen Block zu finden.

Die Anzahl erfolgloser Versuche vor einem Block folgt einer geometrischen Verteilung mit dem Parameter p = t /2 256 . Der erwartete Wert einer Variablen nach einer solchen Verteilung ist EX = 1/ p = 2 256 / t . Jeder Mining-Pool muss also im Durchschnitt 2.256 / t Versuche aufwenden, um einen Block zu finden.

Wie kann gleichzeitiges Mining effizient sein, vorausgesetzt, dass jedes Mal, wenn ein Pool einen neuen Block veröffentlicht, alle anderen Pools ihre Arbeit neu starten müssen und somit ihre Versuche mit Blöcken verwerfen, die jetzt nicht mehr verwendet werden können?

Hinweis: Bitte seien Sie etwas ausführlicher. Ich habe schon Erklärungen gelesen wie: Jeder Versuch hat die gleiche Chance auf Erfolg. Aber ich kann es nicht von so kurzen Hinweisen bekommen.

Sind Sie nicht auch der Meinung, dass jeder Versuch die gleiche Chance auf Erfolg hat? Oder verstehst du die Konsequenzen nicht? (Denn das ist die kanonische Kurzantwort.)
Ich habe nicht verstanden, dass jeder Versuch (genau) eine gleiche Veränderung zum Erfolg hat. Die Diskussion unten und die Frage Wie können wir sicher sein, dass ein neuer Block gefunden wird? hat mir geholfen das zu klären.

Antworten (2)

Die Anzahl der Hashes, die ein Miner in der Vergangenheit ausprobiert hat, hat keinen Einfluss auf die Wahrscheinlichkeit, dass ein Miner bei der nächsten sofortigen Berechnung den richtigen Hash erhält. Daher spielt es für den Miner unter Effizienzgesichtspunkten keine Rolle, ob er mit der Arbeit an einem neuen Block beginnt, da die Wahrscheinlichkeit, den richtigen Hash zu erhalten, genauso hoch ist, als würde er am alten Block weiterarbeiten.

Denken Sie an dieses Münzwurf-Beispiel: Das erste Ziel ist es, zu versuchen, Kopf zu bekommen. Du hast die ersten paar Saltos nicht bestanden und dann ändert sich das Ziel, Zahl zu bekommen. Die Wahrscheinlichkeit, dass Sie Ihr Ziel erreichen, ist immer noch genau gleich.

Ich verstehe das Beispiel des Münzwurfs. Ich sehe jedoch einen Unterschied zwischen dem Münzwerfen und dem Finden der richtigen Nonce. Ich denke, dass es eine endliche Anzahl aller möglichen Hashes (2^256) und eine endliche Anzahl akzeptabler Hashes t gibt . Nachdem ich also (2^256 - t ) Nonces ausprobiert habe, kann ich sicher sein (bis auf Hash-Kollisionen), dass ich mindestens einen richtigen Hash getroffen habe. Obwohl es also nicht möglich ist, ein Konzept zum Erreichen eines Blockfunds zu etablieren (die Verteilung der richtigen Hashes ist zufällig), ist es möglich zu sagen, dass man den Punkt erreicht, an dem es sicher ist, einen Block zu finden. Warum ist diese Begründung falsch?
Ihre Argumentation ist richtig, aber 2 ^ 256 ist eine so große Zahl (1,15 x 10 ^ 77), dass der Unterschied in der Wahrscheinlichkeit extrem gering sein wird, wenn man bedenkt, dass die aktuelle Gesamtnetzwerk-Hash-Rate bei etwa 300 GigaHash / Sek. (3 * 10 ^ 11).
@czerny, ich bin nicht überzeugt, dass das, was Sie sagen, wahr ist, da Sie nicht garantiert jedes Mal einen anderen Wert erhalten, und es ist auch nicht garantiert, dass Sie jemals eine Nonce finden, die niedrig genug ist. Es ist, als würde man 8 Münzen werfen und hoffen, dass die ersten 4 alle Kopf sind. Es gibt nur 2 ^ 8 mögliche Ergebnisse, 2 ^ 4 positive Ergebnisse, und wenn Sie beim vorherigen Versuch fehlschlagen, ist es nicht wahrscheinlicher, dass Sie beim nächsten Erfolg haben.
@czerny: Obwohl es eine endliche Anzahl von 2 ^ 256 Ergebnissen des Hashs gibt, ist die Anzahl der möglichen Eingaben für die Hash-Funktion unendlich . Daher können Sie nicht sicher sein, dass Sie nach 2^256 Eingaben einen Gewinner gefunden haben, da Sie einige Hash-Ergebnisse mehrmals getroffen hätten und andere nie.
@Murch, richtig, daher ist es bei einem Versuch nicht wahrscheinlicher als beim nächsten. Obwohl technisch nicht unendlich, da der Blockheader 80 Bytes groß ist und das das einzige ist, was Sie beim Mining hashen. Version, hashPrevBlock, nBits und nTime können sich auch nicht wirklich ändern. Das lässt Merkle Root (32 Bytes) und Nonce (4 Bytes) übrig. Es gibt also wirklich nur ~2^288 mögliche Eingaben.
Mit anderen Worten: Um einen Term zu erreichen (bis zu dem Punkt, an dem mindestens eine richtige Nonce gefunden wird), ist eine kollisionsfreie Hash-Funktion (die sha256 nicht verwendet) und eine Zusicherung erforderlich, dass diese Nonce existiert, so dass Block-Hash ist kleiner als das Ziel (eine solche Versicherung kann es nicht geben). Daher ist das Finden eines geeigneten Haschischs genau wie das Werfen einer Münze mit einer Seite des Münzfeuerzeugs. Richtig?
@ StephenM347 Ich bin nicht sehr überzeugt von der Analogie zum Werfen von 8 Münzen. Die Erfolgswahrscheinlichkeit bei einem Wurf ist p=2^4/2^8. Die Erfolgswahrscheinlichkeit, wenn man es lange genug versucht, ist q=lim n->inf (1-(1-p)^n)=1. Es besteht also immer die Möglichkeit zum Erfolg. Beim Block-Hashing gibt es jedoch möglicherweise keine geeignete Nonce, sodass es Fälle geben kann, in denen es keine Änderung für den Erfolg gibt.
@czerny: Selbst wenn es keine funktionierende Nonce gibt, können Sie die Reihenfolge der Transaktionen ändern, die zusätzliche Nonce ändern, eine Sekunde warten, um eine neue Zeit zu erhalten, und so weiter, sodass der durchsuchte Speicherplatz viel größer ist. Siehe auch: Wie können wir sicher sein, dass ein neuer Block gefunden wird?
Ich verstehe irgendwie, was Sie sagen, @czerny, denn es gibt eine unbegrenzte Anzahl von Versuchen im Münzwurfspiel, aber eine endliche Anzahl von Versuchen (2 ^ (36 * 8) ish) im Bergbau. Also, ja, ich sehe, dass die Analogie nicht perfekt ist, aber ich sehe keinen Grund, warum dies die Erfolgswahrscheinlichkeit von Versuch zu Versuch ändern würde.

Eine Analogie für das Mining wäre die folgende:

Sie befinden sich an einer Lotteriestelle. Die Lotteriekabine hat 1.000 Lottoscheine in einer Schüssel (die immer perfekt gemischt sind). Es gibt nur ein Ticket mit einem Preis in der Schüssel. Jedes Mal, wenn jemand einen Lotterieschein kauft, druckt der Standbesitzer einen neuen Schein und fügt ihn der Schüssel hinzu, wobei ein Verlierer durch einen neuen Verliererschein und ein Gewinner durch einen Gewinnschein ersetzt wird, sodass es immer 1 Gewinnschein und 999 Verlierer gibt Tickets in der Schüssel.

Wenn jemand ein Ticket kauft, stehen die Chancen 1 zu 1.000, dass er gewinnt.

Sie könnten mit Ihrem ersten Ticket gewinnen, aber Sie könnten mit Ihrem 10.000. gewinnen.

Wie Sie bereits erwähnt haben, hat jeder Versuch, einen neuen Block zu finden, die gleiche Chance, das Gewinnlos zu sein. Das heißt, es gibt keinen „Fortschritt zum Block“. Entweder es funktioniert oder es funktioniert nicht.

Also, jetzt hat jemand einen Block gefunden . Wenn die Leute auf dem alten Block weiter schürfen, müssten sie zwei Blöcke hintereinander finden, um davon zu profitieren, denn sie müssten einen finden, um aufzuholen, und einen anderen, um die derzeit beste Kette zu überholen. Vielmehr werden sie wieder um den nächsten Block kämpfen wollen!

Bergbau soll nicht effizient sein. Mining soll ineffizient sein, da es darauf abzielt zu beweisen, dass ausreichend Rechenarbeit aufgewendet wurde, um das Netzwerk vor Unterwanderung zu schützen.

Bedeutet dies, dass die Berechnung privater paralleler Zweige rechnerisch einfacher ist als die Berechnung öffentlicher Blockchains, da es keine Konkurrenz geben würde? (Ich verstehe, dass das Berechnen von Privatzweigen in der Hoffnung, dass es länger als die Hauptkette wird, unwahrscheinlich viel Rechenleistung erfordert. Nur theoretische Frage.)
Basierend auf @kaykurokawas Kommentar würde ich die Analogie ein wenig umformulieren. Es gibt so viele Schalen, dass sich die Wahrscheinlichkeit, den Gewinner zu ziehen, nur unwesentlich ändert, wenn einige Schalen entfernt werden.
@czerny: Nun, wenn Sie die richtigen Zahlen haben möchten, sollte die Schüssel 2^256 Tickets haben, und targetdarunter wären Gewinnertickets. Sie würden dann jedes Mal, wenn jemand einen Bowl gewinnt, einen neuen Bowl beginnen.