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:
version(4b) + prevBlockHash(32b) + merkleHash(32b) + ctimestamp(4b) + ctarget(4b) + nonce(4b);
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). .
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.
Mursch
Tim S.
Greg Hewgill