Wie funktioniert das Mining auf dem sich bewegenden Ziel (Variablen ändern sich jede Sekunde)?

Bei Bitcoin hashen Miner den Header zweimal mit der SHA256-Funktion. Dieser Header besteht aus den unten aufgeführten Feldern:

  • Fassung (v)
  • vorherigerHashBlock (p)
  • merkleWurzel (m)
  • Zeit (t)
  • Schwierigkeit (d)
  • einmal (n)

Lassen Sie uns vereinfachen und sagen, dass ich ein Pool-Miner mit einem Nonce-Bereich von 1-100 bin. Wenn ich also meinen Teil leiste und feststelle, dass in der 9. Minute der Nonce-Wert 91 beträgt, ist das Rätsel gelöst (Proof of Work). Aber bis ich an das Netzwerk sende, haben sich merkleRoot und die Zeit geändert, sodass die Nonce, die ich gefunden habe, nicht mehr wahr ist. Wir wissen, dass sich Hash bei der geringsten Änderung der Eingabe dramatisch ändert, aber in dieser Formel ändern sich während meiner Mining-Periode (in diesem Fall 9 Minuten) nicht eine, sondern ZWEI Variablen ständig. Transaktion stattgefunden und Zeit geändert. Wie gilt diese Formel während der Mining-Zeit?

SHA256(v + p + m + t + d + n(91)) => 0000000asd8f686asd6das

Wo sich m und t ständig ändern? Wäre 91 zum Zeitpunkt der Feststellung nicht irrelevant?

Antworten (2)

Realistische Miner durchlaufen alle 2^32 möglichen Nonces in weniger als einer Sekunde.

Wenn eine Transaktion stattgefunden hat, nachdem Sie Ihre Nonce-Suche gestartet haben, enthält Ihr Block diese Transaktion nicht. Das ist kein Problem.

Wenn sich die Zeit geändert hat, nachdem Sie Ihren Block abgebaut haben, dann hat Ihr Block nicht genau die richtige Zeit. Wieder kein Problem damit.

Und wenn Sie darüber nachdenken, kann es kein Problem damit geben. Wie würde jemand wissen, wann Sie den Block abgebaut haben oder ob die Transaktion vor oder nach dem Abbau des Blocks stattgefunden hat? Es ist das Mining, das es Bitcoin ermöglicht, sich auf diese Dinge zu einigen. Wenn Sie also den Block abgebaut haben, sind Sie derjenige, der wählen kann.

Woher kommt 2^32? ist es die maximal mögliche einmal? oder ist es ein vereinbarter Anteil am Pool-Mining? Wenn es nur eine Sekunde dauert, was mache ich die restlichen 10 Minuten?
Es gibt 2^32 mögliche Nonces, da die Nonce 32-Bit ist. Vielleicht haben Sie den Irrglauben, dass es einen magischen Block gibt, den jeder Miner abzubauen versucht. Ein Miner versucht, jeden gültigen Block abzubauen, der ihm die Belohnung zahlt. Wenn er einen bestimmten Block nicht abbauen kann, versucht er es einfach mit einem etwas anderen Block erneut. Wenn er viel schnelle Hardware hat, versucht er möglicherweise, Hunderte möglicher unterschiedlicher Blöcke auf einmal abzubauen. Im Durchschnitt gelingt es jemandem alle 10 Minuten einmal. So schwer ist Mining.
danke für die antwort btw! Sie haben Recht, ich hatte dieses Missverständnis ... aber bedeutet es, dass es unmöglich sein könnte, einen Jackpot mit bestimmten Kriterien zu finden ... ich meine, es existiert einfach nicht ... also sagen wir, ich habe m und t, und egal was ich benutze, es ist unmöglich, einen Hash mit bestimmten 0 zu bekommen? das bedeutet also, dass du time oder merkleRoot ändern musst?
@ Prostak Richtig. Es ist trivial, einen neuen merkleRoot zu erhalten, indem Sie die Transaktion, die Ihnen die Mining-Belohnung auszahlt, nur geringfügig ändern. Das bringt Ihnen also einen ganz neuen Block, um alle 2 ^ 32 Nonces anzuprobieren.
Was meinen Sie, wenn Sie "100 mögliche unterschiedliche Blöcke gleichzeitig" sagen? Welche Varianten führen sie zum Blockieren ein? Zeit? und Transaktionsliste ändern? oder gibt es eine Möglichkeit, etwas anderes zu ändern?
Typischerweise ändern sie die Transaktion, die ihnen die Blockbelohnung und die Transaktionsgebühren zahlt. Das Ändern eines Bytes in der Transaktion reicht aus, um ihnen einen völlig neuen Block zu geben, an dem sie alle 2^32 Nonces ausprobieren können.

Als Miner wählen Sie Ihre eigenen merkleRootund time.

Dies ist der gleiche Grund, warum verschiedene Bergleute nach unterschiedlichen Nonces suchen – Ihre merkleRootenthält Ihre Belohnungstransaktion, während die merkleRootfür einen anderen Bergmann ihre Belohnungstransaktion enthält.

was meinst du mit "du wählst"? meinst du, dass du Transaktionen auswählst, um sie in den Block zu holen? aber in diesem Fall wählen Sie auch nicht, weil Sie Transaktionen nehmen müssen, die zuvor stattgefunden haben ... wie ich verstehe, sind die maximalen Transaktionen 2400, also müssen Sie mindestens dieses Maximum nehmen
Sie müssen keine Transaktionen übernehmen, die zuvor stattgefunden haben. Sie haben die Wahl zwischen gültigen Transaktionen. Und Sie können Ihre eigenen Transaktionen einführen, wenn Sie möchten. Beim Mining einigen wir uns darauf, welche Transaktionen stattgefunden haben. Wenn Sie also einen Block minen, können Sie sich für diesen Block entscheiden. Natürlich solange sie gültig sind.
Ja, ich meine, dass Miner die Transaktionen auswählen, die sie in einen Block aufnehmen möchten. Auf diese Weise können Bergleute die Transaktionskosten in die Höhe treiben, indem sie sich dafür entscheiden, nur Transaktionen mit hohen enthaltenen Transaktionsgebühren einzubeziehen. Wenn Miner irgendwie verpflichtet wären, die ältesten Transaktionen einzubeziehen, würde sich niemand die Mühe machen, Transaktionsgebühren einzubeziehen.
@DavidSchwartz korrigieren Sie mich, wenn ich falsch liege, aber Sie müssen Transaktionen auswählen, BEVOR Sie mit der Auswahl der Nonce beginnen? weil merkleRoot das Ergebnis verändert? Mit anderen Worten, wenn Sie die erfolgreiche Nonce abgebaut haben, können Sie die Transaktionsliste danach nicht mehr ändern? Sie müssen also die genauen Transaktionen auswählen, bevor Sie mit dem Minen beginnen?
@GregHewgill gleiche Frage bitte ^^
@Prostak Sie müssen entscheiden, welchen Block Sie abbauen möchten, bevor Sie versuchen, ihn abzubauen. Dann versuchen Sie, es abzubauen, indem Sie alle 2 ^ 32 Nonces ausprobieren. Sie scheitern fast immer, also starten Sie den Prozess einfach noch einmal mit einem anderen Block. Und jeder realistische Bergbaubetrieb versucht, Hunderte von möglichen Blöcken gleichzeitig abzubauen. Sobald Sie eine Nonce finden, haben Sie genau diesen Block abgebaut. Wenn Sie es auf irgendeine Weise ändern, wird der Hash zerstört und somit ungültig.
Ja, Sie wählen die Transaktionen aus, die Sie einbeziehen möchten, bevor Sie mit dem Mining beginnen. Wenn Sie eine erfolgreiche Nonce finden, ist es in Ihrem besten Interesse, diese sofort zu übertragen, da Sie Ihre Blockbelohnung erhalten möchten.
Danke Leute, ich habe von euch gelernt, dass Nonce eine relativ kleine Zahl ist ... Ich dachte, dass alle 10 Minuten alle Miner auf der ganzen Welt versuchen, über Hash-Möglichkeiten zu iterieren ... Ich meine, dass Nonce selbst ein Hash mit 2 ^ war 160 Möglichkeiten ... also alle 10 Minuten, Miner iterieren auf ihre eigene Weise diese 2 ^ 160 ... aber es scheint, dass Miner das Ratespiel mit Variablen selbst spielen, nicht mit nur einer Minute ... @GregHewgill