Wie wird die Difficulty oder Schwierigkeit im Bitcoin-System angepasst?

Was bedeutet Difficulty im Bitcoin-System?

Im Bitcoin-System muss jeder Block mit Transaktionen durch Rechnungen bestätigt werden. Diese sind für die sichere Verkettung des neuen Blocks mit dem letzten bereits vorliegenden Block und damit mit der ganzen Blockkette oder Blockchain erforderlich. Die Difficulty oder Schwierigkeit bezieht sich auf den Aufwand, der für diese Rechnungen nötig ist.
Das System sieht vor, dass diese Bestätigungsrechnungen im Durchschnitt etwa 10 Minuten dauern sollten. Nachdem sich die Technologie entwickelt und die verfügbare Rechenleistung immer höher wird, muss dieser Aufwand regelmäßig angepasst werden, um auf diese 10 Minuten zu kommen.
Diese Anpassung erfolgt automatisch und hängt vom Durchschnittswert der Zeit ab, die für die Bestätigung eines neuen Blocks gebraucht wird. Würden die Miners aus welchem Grund auch immer das Interesse an dieser Tätigkeit verlieren und weniger Rechenleistung aufwenden, dann würde das System die Difficulty wieder nach unten anpassen.

Wie funktionieren die Bestätigungsrechnungen?

Für diese Rechnungen wird ein neuer Block mit einer beliebig wählbaren Zahl erweitert und vom so erweiterten Block ein Hash berechnet. Bei diesem Hash handelt es sich um eine Art Kennzahl fixer Länge für den Block, wobei ein einzelner Hash schnell zu berechnen ist. Das Verfahren ist jedoch so gewählt, dass man mit bewältigbarem Aufwand keine Datei und also auch keinen Block und keine Erweiterungszahl finden kann, der einen vorgegebenen Hash besitzt. Das Verfahren ist also schnell in die eine und extrem langsam in die andere Richtung.
Die nur mit einigem Aufwand erfüllbare Bedingung zur Bestätigung eines Blocks besteht in einer vorgegebenen Anzahl von Nullen, mit denen der Hash beginnen muss. Um einen solchen Hash zu finden, müssen hinreichend viele Erweiterungszahlen durchprobiert werden.

Wozu wird der Hash verwendet?

Der Hash mit der geforderten Anzahl von Nullen am Anfang wird von einem Block berechnet und in den nächsten Block aufgenommen. Wird nun der Block mit diesem Hash in irgendeiner Weise verändert, beispielsweise durch Änderung einer Transaktion, muss ein neuer Hash mit der notwendigen Anzahl von Nullen für diesen Block gefunden werden. Nachdem dieser Hashwert in den nächsten Block aufgenommen werden muss, ist auch dieser Block damit verändert und muss ebenso einen neuen akzeptablen Hash bekommen.
Auf diese Weise entsteht die Verkettung der Blöcke. Eine Änderung in einem Block erfordert Änderungen und neue Bestätigungsrechnungen für alle nachfolgenden Blöcke. Eine neue Kette mit veränderten Transaktionen müsste also in einem Wettrennen die bestehende Kette an Länge überbieten, was enorme Rechenleistung in Anspruch nehmen würde.

Wie erfolgt die Anpassung der Schwierigkeit oder Difficulty?

Aus den Eigenschaften des Hash folgt, dass die Wahrscheinlichkeit für eine Null am Anfang 0,5 beträgt, für zwei Nullen 0,25 und so weiter. Mit jeder zusätzlichen Null halbiert sich also die Wahrscheinlichkeit, dass ein Hash mit dieser Anzahl von Nullen beginnt.
Um einen entsprechenden Hash zu finden, muss man bei einer Null also im Durchschnitt zwei Möglichkeiten ausprobieren. Für zwei Nullen sind es vier Möglichkeiten und mit jeder weiteren geforderten Null verdoppelt sich diese Zahl. Der im Bitcoin-System verwendete Hash hat eine Länge von 256 Bits. Es ist also ohne Weiteres möglich, die Zahl der geforderten Nullen am Anfang so hoch zu wählen, dass auch die schnellsten Geräte für das Auffinden eines akzeptablen Hash etwa 10 Minuten benötigen.

>> Wöchentliche Neuigkeiten zur Marktentwicklung des Bitcoins könnt ihr hier beantragen: On-Chain-Analysen

Schreibe einen Kommentar