Wie dauert es bei der aktuellen Hashrate noch 10 Minuten, um einen Bitcoin-Block zu lösen?

Egal wie hoch die Schwierigkeit ist (oder wie niedrig das Ziel ist), ich verstehe nicht, wie das Bitcoin-Netzwerk durchschnittlich 10 Minuten braucht, um jeden Block zu lösen.

Für jeden gegebenen Blockheader gibt es nur 2^32 mögliche Werte für die Nonce. Selbst wenn wir berücksichtigen, dass der Zeitstempel beispielsweise um bis zu 1 Stunde geändert werden kann, sind das 3600 x 2^32 mögliche Kombinationen, was ungefähr 1,5e13 entspricht

Auf blockchain.info heißt es, dass die aktuelle Hash-Rate des Netzwerks 7.991.378.504 GH/s beträgt, was bedeutet, dass jede Sekunde mehrere Größenordnungen mehr Hashes berechnet werden als die Anzahl möglicher Hashes, die sich aus dem aktuellen Block-Header ergeben können .

Howcome-Blöcke werden also nicht in nur wenigen Sekunden gelöst, sondern dauern stattdessen etwa 10 Minuten?

Ich verstehe, dass Bergleute so viele Transaktionen wie möglich in einen Block aufnehmen wollen, um die Gebühren zu erheben, also könnte man argumentieren, dass es am besten ist, zu warten, bis es viele Transaktionen in einem Block gibt, bevor man ihn löst. Aber selbst das macht keinen Sinn, denn es gibt sowieso absolut nichts zu verlieren, wenn man jeden Block so schnell wie möglich löst.

Antworten (1)

Mining funktioniert grundsätzlich so:

  1. Erstellen Sie einen Kandidatenblock, probieren Sie alle Nonces aus.
  2. Wenn keiner einen gültigen Block ergab, ändern Sie etwas in der Coinbase-Transaktion.
  3. Ab Schritt 1 wiederholen.

Miner sammeln Transaktionen und versuchen dann, durch Brute-Forcing-Nonces einen gültigen Block zu erstellen. Die Schwierigkeit, einen Block zu erstellen, hängt mit dem maximalen Hash-Wert zusammen, den ein gültiger Block haben kann.

Zum Beispiel hat der aktuelle Blockchain-Kopf (während er dies postet) einen Block-Hash von 00000000000000000077d9c18fdbd5cf45b2652fe6db9089558eb8fc9fc3b397. Wie Sie sehen können, hat es viele führende Nullen, da die meisten Hashes über diesem Wert zurückgewiesen werden. Mit den 2^32-Nonce-Werten und anderen Header-Feldern können Sie nicht genügend Blöcke ausprobieren, um wahrscheinlich einen Block-Hash zu treffen, der klein genug ist. Miner tauschen einige Bytes in Transaktionen (normalerweise in der Coinbase), um noch mehr neue Blockkandidaten zu erstellen.

Darüber hinaus werden verschiedene Miner verschiedene Blöcke ausprobieren, da sie unterschiedliche Empfänger der Coinbase-Transaktionen haben sollten.

Die aktuelle Schwierigkeit ist also so hoch, dass selbst wenn ein Miner die Hashes für alle möglichen 2^32 Nonces berechnet, es immer noch unwahrscheinlich ist, dass er einen unterhalb des aktuellen Ziels findet. Daher muss es so lange mit einer anderen Coinbase versucht werden, bis eine der 2^32 Ankündigungen tatsächlich funktioniert. Könnten Sie mir bitte eine Dokumentation zeigen, die alles über Coinbase-Transaktionen und neue Blockkandidaten erklärt? Ich denke, das ist es, was in meinem Puzzle fehlt.
@EdwardEisenberg: Grundsätzlich können Miner frei wählen, welche Transaktionen sie in einen geschürften Block aufnehmen möchten, oder ob überhaupt welche. Alle Nonces durchlaufen? Kein Problem, fügen Sie einfach eine Transaktion hinzu oder entfernen Sie sie und Sie haben sofort ein paar weitere Billionen Hashes zum Ausprobieren.
Es ist nicht erforderlich, Transaktionen zu entfernen oder hinzuzufügen. Es gibt einige böswillige Miner, die sogar leere Blöcke abbauen (abgesehen von der Coinbase), also müssen Sie daran nichts ändern. Die Coinbase-Transaktion kann beliebige Daten enthalten, und es reicht aus, nur einige zusätzliche Nonce-Bytes einzufügen.