Mining bei neuer Transaktion neu starten

Ich habe verstanden, dass die Bergleute, wenn eine neue Transaktion hereinkommt, von vorne beginnen oder zumindest ihren Merkle-Baum ändern müssen, um die neue Transaktion aufzunehmen, und im Wesentlichen wieder von vorne anfangen müssen.

Wenn ich mir die Echtzeit-Transaktionen auf https://blockchain.info/ ansehe , wie könnten Miner jemals einen Block erstellen, wenn es nie eine Pause gibt?

Wenn Sie eine Pause nicht als ein paar Mikrosekunden definieren, und da Sie jede Sekunde, glaube ich, Milliarden möglicher Hashes berechnen können, fällt es mir immer noch schwer zu verstehen, wie ein neuer Block in menschlich verständlichen Begriffen "ausgewählt" oder verifiziert wird.

Jeder neue Hash hat die gleiche Erfolgswahrscheinlichkeit, unabhängig davon, ob es sich um den ersten Hash handelt, der auf einem bestimmten Block ausprobiert wurde, oder ob es zuvor Millionen gegeben hat. "Neustarten" ist kein sinnvolles Konzept; Sie "starten" sowieso milliardenfach pro Sekunde neu, sodass praktisch nichts verloren geht, wenn Sie den Header mit der neuen Transaktion aktualisieren.
@NateEldredge Nehmen wir an, Sie haben 1000 Nonces ausprobiert, ohne einen Block zu finden, also wissen Sie, dass diese 1000 Nonces es nicht sind, zumindest für den aktuellen Block. Aber wenn sich etwas ändert (dh der Hash), muss es in dem Sinne neu beginnen, dass Sie keine 1000 bekannten falschen Nonces haben, sondern 0. Aber ich glaube, ich verstehe Ihren Punkt, dass es wahrscheinlich nicht viel davon gibt ein Unterschied.
Nö. Ich sage, es gibt keinen Unterschied. 1000 Nonces zu kennen, die nicht funktionieren, ist nutzlose Information ; es hat absolut keinen Einfluss auf die Wahrscheinlichkeit, dass die nächste Nonce funktioniert. Beachten Sie, dass es keine Garantie dafür gibt, dass Nonce überhaupt funktioniert; Sie hätten alle bis auf eine der 2 ^ 32 möglichen Nonces für einen Block ausprobieren können, und die Wahrscheinlichkeit, dass die letzte funktioniert, ist immer noch dieselbe wie für die erste, die Sie versucht haben: 1 in (Schwierigkeit * 2 ^ 32). (In der Tat ist es für einen bestimmten Block äußerst unwahrscheinlich, dass einer der 2^32 möglichen Nonce-Werte funktioniert.)
Betrachten Sie das folgende Gedankenexperiment. Ich habe einen roten Würfel mit einer Milliarde Seiten. Ich rolle es und bitte Sie, die Zahl zu erraten. Wenn Sie Recht haben, gewinnen Sie. Wenn nicht, würfele ich erneut und bitte Sie, die neue Nummer zu erraten. Da wir jedes Mal neu würfeln, hilft oder schadet es Ihren Chancen beim nächsten Wurf nicht, 1000 falsche Vermutungen zu haben. Und wenn ich nach 1000 Spielen den roten Würfel wegwerfe und anfange, einen milliardenseitigen grünen Würfel zu verwenden, hast du keinen "Fortschritt" verloren.
Wenn der Nonce-Bereich sagen wir 1-1000000 beträgt (ich glaube, es gibt eine Obergrenze bei Bitcoin?), dann steigt die Wahrscheinlichkeit pro Wahrscheinlichkeit, wenn Sie verstehen, was ich meine. Ich verstehe, dass es möglich ist, dass überhaupt keine Nonce funktioniert, aber dann nähern Sie sich der Verwendung einer extraNonce oder vielleicht nimmt die Schwierigkeit ab?
NEIN! Das Verhalten der Hash-Funktion ist so, dass jede neue Nonce, die versucht wird, ein neuer Würfelwurf ist. „Neu anfangen“ kostet nichts, denn es gibt keinen Fortschritt zu verlieren.
@NateEldredge, ok, aber in diesem Experiment können wir nicht zweimal dieselbe Seite der Würfel würfeln, weil Sie wissen, dass das nicht die Antwort war. Aber ich denke, Ihr Punkt ist, dass Sie mit Würfeln keine Wahl haben. Aber ich frage Sie mit einem Mal, dass Sie das Richtige tun? Oder meinst du, dass du diese Würfel pro Nonce würfelst?
@NateEldredge, Ok, ich glaube, ich verstehe, was du meinst. Das „Neustarten“ des Mining spielt also im Wesentlichen keine Rolle, die Verwendung derselben Nonce mit einem anderen Hash ist nutzlos und hat keinen Bezug zu seinem Ergebnis. (Aber wenn Sie dieselbe Nonce immer wieder mit demselben Hash versuchen, ändert sich offensichtlich nichts. Aber jedes Mal, wenn Sie eine andere Nonce verwenden, werden Ihre Chancen zurückgesetzt.)

Antworten (2)

Mining basiert auf Berechnungen, aber es ist nicht konstant, es ist zufällig. Im Wesentlichen generiert jeder berechnete Hash eine Zufallszahl. Wenn die Zufallszahl unter dem Ziel liegt, ist es gültig, einen Block zu erstellen. Die Wahrscheinlichkeit, dass ein einzelner Hash niedrig genug ist, ist winzig (Sie haben eine bessere Chance, mehrmals hintereinander im Lotto zu gewinnen), aber deshalb müssen Sie viele Hashes berechnen. Der tatsächliche Merkle-Baum macht keinen Unterschied, solange der Baum selbst gültig ist. Miner sind nicht verpflichtet, alle Transaktionen in den Mempool aufzunehmen, daher übermitteln sie normalerweise Blöcke, wenn sie einen gültigen Hash finden.

Die Aktualisierungen des Merkle-Baums spielen also keine Rolle. Tatsächlich kann es hilfreich sein, da es mehr Nonces zum Ausprobieren gibt.

Können Sie erklären, wie hilfreich es ist und wie es bedeutet, dass Sie mehr Nonces ausprobieren müssen? Am besten mit einem Beispiel.

Bergleute wählen aus, welche Transaktionen in ihre Blöcke aufgenommen werden sollen. Sie müssen also nicht ständig neu eingetroffene Transaktionen in die Blöcke integrieren, die sie versuchen. Sie können, wenn sie möchten, zum Beispiel die Möglichkeit nutzen, möglicherweise höhere Transaktionsgebühren zu erheben, die mit neuen Transaktionen verbunden sind.