Was machen Pools in Anbetracht der aktuellen Hashing-Befugnisse tatsächlich in der Praxis?

Was tun Pools angesichts der aktuellen Hashing-Möglichkeiten in der Praxis tatsächlich, um einen Block zu finden?

Ok, also hier ist meine Meinung, bitte korrigiert mich, wenn ich irgendwo falsch liege:

  1. Hier ist das Format des Block-Headers, das eigentlich gehasht wird:

version(4b) + prevBlockHash(32b) + merkleHash(32b) + ctimestamp(4b) + ctarget(4b) + nonce(4b);

  1. Was Miner also kanonisch tun, ist, alle möglichen Werte der letzten NONCE (4 Bytes) durchzugehen.
  2. Wenn wir das als unsigned int behandeln, wäre der Bereich 0-4294967295.
  3. Im Moment können Sie einen 2-GHz-Miner für < 100 US-Dollar kaufen.
  4. Angesichts der Tatsache, dass Sie etwas haben, das 2GHs hashen kann (sehr billige Lösung, ich spreche nicht einmal von THs-Systemen, die Pools angeblich haben), könnten Sie den Bereich von 0:4294967295 in weniger als 3 Sekunden brutal erzwingen.

Die Frage ist also, was den Bergbau in dieser ~10-Minuten-Periode aufrechterhält?

Mein Verdacht ist, dass es nicht mehr so ​​​​ein Problem ist, eine Nonce zu finden, sondern eher ein Problem, den richtigen Block zu finden, der tatsächlich eine Nonce hat.

Wenn das stimmt:

a) Was machen Bergleute in der Praxis, spielen mit dem Zeitstempel herum oder generieren einige Transaktionen, um die Merkle-Wurzel zu ändern?

b) Gibt es einen mathematischen Beweis dafür, dass ein solcher Block jemals gefunden wird? Ich meine, Bitcoin bleibt nicht hängen, weil ein unglücklicher Block eine so schlechte Koinzidenz von Bits hat, die am Ende das Ergebnis daran hindern, am Ende genügend Nullen zu erhalten, um zum Ziel zu passen (ich frage nach einem mathematischen Beweis, dass es unmöglich ist). .

Der Zeitstempel sollte sich ohnehin jede Sekunde ändern, erst wenn Sie über 2^32 Hash/Sek. kommen, wird dies zu einem Problem. (Die Frage ist immer noch vollkommen gültig, nur mit einem > 4,3-GH-Miner, nicht mit einem 2-GH-Miner.)

Antworten (1)

Für eine bestimmte Kombination von

version(4b) + prevBlockHash(32b) + merkleHash(32b) + ctimestamp(4b) + ctarget(4b),

Es gibt keine Garantie, dass es eine gültige Nonce gibt. Normalerweise nicht - die Wahrscheinlichkeit dafür ist 1 geteilt durch die Schwierigkeit, die derzeit 9 Milliarden beträgt. Miner probieren also verschiedene Kombinationen aus, probieren den Nonce-Bereich für jede aus, bis sie eine gültige Lösung finden.

a) Die allgemeinste Methode besteht darin, irrelevante Daten in der Generierungstransaktion zu ändern, um die Merkle-Wurzel zu ändern. Um den Kommunikationsaufwand zwischen dem Pool und den Minern zu reduzieren, wird derzeit eine Methode wie GBT verwendet, bei der der Miner eine Blockvorlage erhält und die Generierungstransaktion selbst ausfüllen kann.

b) Nein; Hashing ist, wie viele der wichtigsten kryptografischen Primitive, eine Art „dunkle Kunst“ – es gibt kaum Beweise dafür, dass alles funktioniert. Angenommen, Sie reparieren nur den prevBlockHash, es gibt keinen Beweis dafür, dass Sie die anderen Details eingeben können, um einen gültigen Hash zu erhalten. Wenn sich Hash-Funktionen jedoch mehr oder weniger so verhalten, wie wir denken, ist es äußerst unwahrscheinlich, dass es keine Lösung gibt.

b) Wenn es passiert, könnten wir immer einen Block (oder mehr) zurückgehen und eine längere Kette bilden, vorausgesetzt, dass eine längere Kette existiert (dh dass wir keinen weiteren unlösbaren Block treffen). Natürlich würde dies einige Transaktionen rückgängig machen.