Nonce Gültigkeitsbereich

Hallo,

eine Frage zur Nonce, welche meines Wissens in einem gewissen Gültigkeitsbereich liegen muss damit ein Block als gefunden/bestätigt propagiert und angehangen werden kann:

  • Ist dieser Gültigkeitsbereich prozentual im Code festgelegt und wenn ja wieviel % und ist dies immer gleich ?

  • Wenn ja, weshalb dieser Toleranz Bereich bzw. weshalb kann die nonce nicht exakt errechnet werden ?

Danke :raising_hand_man:

Meinst du den block hash? Die nonce ist völlig beliebig (innerhalb des zur Verfügung stehenden 4-byte-Bereichs). Also „beliebig“, was die Formkriterien betrifft – „gültig“ im engeren Sinne ist sie, wenn der resultierende block hash gültig ist, d.h. das difficulty target trifft.

1 „Gefällt mir“

Vielleicht ganz allgemein: Wenn du Hashwerte berechnest (das kannst du selbst ausprobieren), musst du natürlich immer am Eingabewert irgendetwas verändern, damit du einen anderen/neuen Hashwert erzeugst.

Jetzt überträgst du dieses Prinzip auf einen Bitcoin-Block, der sich zunächst erstmal nicht verändert, nachdem du alle Transaktionen usw. reingeschrieben hast. Damit sich irgendetwas verändert, nutzt du unter anderem die Nonce. Es ist einfach nur ein kleines, eigentlich unbedeutendes, Zahlenfeld, um den Block irgendwie zu verändern – in der Hoffnung, einen gültigen Hashwert zu erzeugen.

Theoretisch brauchst du das Nonce-Feld überhaupt nicht. Formal muss es natürlich existieren, aber für den Mining-Prozess könntest du es komplett unberührt lassen, und einfach andere Stellen im Block öfter verändern, z.B. die Reihenfolge/Auswahl der Transaktionen im Block, den Zeitstempel, … irgendetwas halt.

Übrigens: Bitcoin-Miner hashen so schnell, dass der 32 Bit Zahlenraum der Nonce mehrmals innerhalb einer Sekunde ausgeschöpft wird. Es ist also zwingend notwendig, andere Felder ebenfalls zu verändern, um den Miner nicht pausieren zu lassen. Die erste Wahl ist allerdings immer die Nonce, bzw. generell Werte, die im Header stehen, da Änderungen an den Transaktionsdaten rechentechnisch teurer sind.

Das ist für SHA-256, eine kryptografische Hashfunktion, vollkommen irrelevant. Änderst du auch nur ein einziges Bit im Block hast du einen komplett anderen Hashwert. Du kannst keine Vorhersagen und/oder Abhängigkeiten zwischen diesen Hashwerten berechnen.

Ob du jetzt also nur die Nonce um +1 hochzählst oder den kompletten Block-Kandidaten umschreibst, spielt keine Rolle, abgesehen davon, dass ersteres natürlich einfacher ist.

3 „Gefällt mir“

Evtl. auch interessant, insbesondere der untere Teil:

Mining Sicherheit - #6 von skyrmion

2 „Gefällt mir“