Was ist, wenn es für einen Block keine Lösung gibt?

Bitte lassen Sie mich wissen, wenn ich etwas falsch verstehe.

Nehmen wir an, ich möchte einen neuen Block erstellen und frühere Transaktionen überprüfen. Dazu muss ich:

  • Wählen Sie aus, welche Transaktionen ich in meinen Block aufnehmen möchte
  • Berechnen Sie die Merkle Root dieser Transaktionen
  • Ich wähle (?) einen Zeitstempel, wo ich erwarte, diesen Block zu „erstellen“ (Ist das ein allgemeiner Konsens?)
  • Ich beginne mit der Berechnung von Hashes, indem ich die obigen Werte verkette und bei Nonce 0 beginne und auf 2^32-1 erhöhe
  • Wenn ich einen Hash mit genügend Nullen finde, kündige ich meinen Beweis dem Netzwerk an und kassiere meine Gebühr

Hier gibt es ein Problem: Es gibt keine Möglichkeit zu garantieren, dass eine Lösung existiert. Da ich erwarte, dass die Mitglieder des Mining-Pools sich alle darauf einigen, welche Transaktionen enthalten sein sollen und welcher Zeitstempel verwendet werden soll, kann es möglich sein, dass für den angegebenen Block keine Lösung existiert.

Natürlich haben auch andere Miner dieses Problem. Was ist, wenn alle „großen“ Miner Blöcke wählen, die keine Lösung haben? Könnte das Netzwerk ins Stocken geraten?

Antworten (1)

Da ich erwarte, dass die Mitglieder des Mining-Pools sich alle darauf einigen, welche Transaktionen enthalten sein sollen und welcher Zeitstempel verwendet werden soll, kann es möglich sein, dass für den angegebenen Block keine Lösung existiert.

Das ist normalerweise nicht der Fall. Mit dem am weitesten verbreiteten Stratum-Protokoll haben Miner kein Mitspracherecht darüber, was in einen Block kommt, mit Ausnahme von Nonce und Extranonce (Extranonce ist Teil der Coinbase-Transaktion). Wenn also ein bestimmter Block und alle seine Nonces zu keiner Lösung führen, erstellt der Mining-Pool einfach einen neuen Block mit entweder neuen Transaktionen, einer anderen Transaktionsreihenfolge oder nur einem anderen Zeitstempel und weist die Miner an, daran zu arbeiten.

Der Zeitstempel muss überhaupt nicht mit der Echtzeit übereinstimmen. Der Zeitstempel muss nur größer sein als die mittlere vergangene Zeit des vorherigen Blocks (mittlerer Zeitstempel der letzten 11 Blöcke), sodass der Zeitstempel von der Echtzeit abweichen kann.

Was ist, wenn alle „großen“ Miner Blöcke wählen, die keine Lösung haben? Könnte das Netzwerk ins Stocken geraten?

Ein Miner ist nicht darauf beschränkt, nur an dem Block zu arbeiten, den er ausgewählt hat. Sie können einen weiteren Block bauen und daran arbeiten. Das Netzwerk weiß es nicht und kümmert sich nicht darum, ob ein Miner einen anderen Block bauen musste, um ihn abzubauen.

Die überwiegende Mehrheit der Blöcke hat überhaupt keine Lösung. Der normale Zustand des Netzwerks besteht darin, im Durchschnitt zehn Minuten anzuhalten, bis jemand das Glück hat, einen Block zu erstellen, der eine Lösung hat, und diese Lösung dann findet.
Hallo @DavidSchwartz Ich habe das Konzept nicht verstanden, dass die überwiegende Mehrheit der Blöcke überhaupt keine Lösung hat . Gibt es nicht mehrere Lösungen für einen Block? Das Kriterium zum Lösen eines Blocks besteht darin, eine Nonce zu erhalten, die zufällig einen Hash-Wert erzeugt, der niedriger als das angegebene Ziel ist. Sollte es nicht mehrere Lösungen unter den 2^32-1 Möglichkeiten geben, die wir haben.
@shubhamkumar Nein. Genau in dieser Sekunde ist die Schwierigkeit so hoch, dass nur einer von 15 Billionen Blöcken eine Nonce hat, die einen ausreichend niedrigen Hash produziert. Sie müssen nur alle 2^32 Nonces auf Milliarden von Blöcken ausprobieren, bis jemand einen Block (und Nonce) mit einem ausreichend niedrigen Hash findet.
@shubhamkumar 2^32 ist unglaublich klein im Vergleich zur Netzwerk-Hashrate. Das Netzwerk verarbeitet derzeit ~2^66 Hashes pro Sekunde. Diese 2^32 Nonces für einen einzelnen Block werden in einem winzigen Bruchteil einer Sekunde abgeschlossen.
@AndrewChow Fairer Punkt, einverstanden! Aber wenn ein Miner versucht, die Lösung zu finden, warum sollte er dann irgendwann einen weiteren Block bauen? Er/sie hat aufgrund der Willkür von SHA-256 keine Ahnung, ob er/sie der Lösung nahe ist. Wie wird jemand feststellen, ob es innerhalb von 10 Minuten eine Lösung gibt oder nicht? Wenn der Miner versucht, einen neuen Block zu lösen, hat er dann nicht weniger Wahrscheinlichkeit, die Lösung zu finden?
@shubhamkumar Der Miner löst die 2^32-1 Nonces und geht dann zu einem neuen Block über. Jeder Block-Header ist ein unabhängiger Versuch und hat die gleiche Wahrscheinlichkeit, einen gültigen Block-Hash zu haben wie jeder andere Block-Header, unabhängig davon, ob die Blockinhalte gleich sind. Die Wahrscheinlichkeit ist immer gleich.