Bitcoin so, dass deine Eltern es verstehen...und nutzen könnten. Kapitel 2 - fünfter Teil

0 7
Avatar for mad-readcash
2 years ago

Das Mining Rätsel etwas detailierter

In früheren Sektionen meines Blogs habe ich versucht, die Funktionsweise von Bitcoin möglichst bildhaft und verständlich - ohne technische Details - zu erklären. Schließlich heißt diese Serie ja nicht umsonst:

"Bitcoin so, dass deine Eltern es verstehen [...] könnten."

Der rechnerische, kryptographische und mathematische Miningprozess, der die gesamte Bitcoin Blockchain (und viele andere) aufrecht erhält und erweitert, habe ich bisher immer mit "dem Lösen eines Rätsels" beschrieben.

Jetzt möchte ich dieses Bild des "Rätsels" mit etwas mehr technischem Hintergrund füllen.
Aber Bitcoin ist wie der sprichwörtliche Kaninchenbau, der immer tiefer geht, je mehr Wissen man sich aneignet. Deswegen wirst du feststellen, dass selbst dieser Post nur an der technischen Oberfläche kratzt. Er sollte dir aber dennoch ein grundlegendes Verständnis über den Mining Prozess geben.

Grundlagen: Hashfunktionen

Eine Funktion ist eine mathematische Vorschrift, die einem Input (einem Eingangswert) X genau einen Output (Ausgangswert) Y zuordnet. Ein Beispiel ist die absolut simple und unnötige Funktion:

Y=X+3.

Für z.B. den Input X=2 liefert sie den Output Y=5 (2+3=5).

Kennt man den Output und die Funktionsvorschrift, lässt sich aus dem Output einer Funktion - mit unterschiedlichem Aufwand - der Input bestimmen (5 und +3 => 2, da 5-3=2).

Eine Hashfunktion ist eine Funktion, die einen beliebigen digialen Input verarbeitet und diesem genau einen speziellen Output, genannt Hash zuordnet. Dies kann als digitaler Fingerabdruck des Inputs verstanden werden.

Hashes werden unter anderem verwendet, um die Echtheit einer Datei anzuzeigen. Mittels eines Hashes kannst du z.B. sicherstellen, dass ein Programm, das du dir heruntergeladen hast, auch wirklich so, wie du es heruntergeladen hast, von dem Entwickler stammt und nicht manipuliert wurde - z.B. indem jemand dem Programm nicht sichtbaren Schadcode hinzugefügt hat.
Denn: Wäre die Datei manipuliert worden, wäre sie ein anderer Input und würde entsprechend einen anderen Output in der Hashfunktion liefern.

Übertragen auf unsere unnötige Eingangsfunktion würde der Entwickler als Hash den Wert 5 angeben. Eine minimale Änderung am Startwert bzw. der Software, dargestellt als 2.0001, würde den Output 5.0001 liefern und nicht 5.

Hashfunktionen sind besonders sicher und nützlich, wenn sich der Output leicht bestimmen, aber aus diesem NICHT der Input zurückbestimmen lässt (oder sich der Hash für einen belieben Input vor dem Hashvorgang bestimmen lässt)!
Einige Hashfunktionen erfüllen dieses Kriterium nicht mehr und werden daher seltener (oder am besten gar nicht mehr) verwendet. Dazu gehören z.B. MD2,MD4,MD5 und SHA1. "SHA" steht dabei für Secure Hashing Algorithm (sicherer Hashing Algorithmus).


Die Hashfunktion SHA256 von der NSA (National Security Agency) ist verbreitet, (gilt als bisher) sicher und findet von Anfang an in Bitcoin Anwendung.
In den folgenden Abbildungen zeige ich dir, wie der Hash mittels SHA256 von dem Input "Hallo Welt!" bestimmt wird, wie sich dieser ändert, wenn eine offensichtliche Änderung "HALLO WELT!!" und eine weniger offensichtliche Änderung "Hallo Welt! " vorgenommen wird:

Das Leerzeichen hinter dem "!" ist kein Tippfehler von mir, sondern die absichtlich erzeugte, weniger offensichtliche Änderung. Gut, wenn dir das bereits vor dem Lesen dieser Anmerkung aufgefallen ist ;)

Wie du sehen kannst, ist der Hash in jedem der drei Fälle unterschiedlich. Unabhängig davon wie offensichtlich die Änderung am Input war, kannst du am Hash schnell erkennen, dass der Input nicht dem gewünschten Ergbnis von "Hallo Welt!" entspricht- und somit eine Änderung vorliegen muss.

Dieses Verhalten ist die Grundlage für das Rätsel beim Bitcoin Mining...

Grundlagen: Hashfunktionen beim Mining

Ein Bitcoin Block besteht, unter anderem, aus den folgenden vier wichtigen Teilen:
1) Der Hash des vorangegangen Blocks (also dem Fingerabdruck der Daten aus dem Block davor)
2) Einem Satz aktueller Transaktionsdaten
3) Ein spezieller Wert, der als Nonce bezeichnet wird
4) Der Blockhash, der alle Informationen des Blocks zusammenfasst

Ziel des Minings ist es jetzt, diese ersten drei Werte durch Probieren so zusammenzuzufügen, dass Hashwert einen bestimmten Wert erreicht.

Zum Beispiel: Wenn der vorherige Hash h =1, der Satz aktueller Transaktionen t =2 und das Ziel 5 ist, welche Nonce n brauche ich, um die folgende Bedingung zu erfüllen:

h+t+n=5 => 1+2+n=5

Die dafür benötigte Nonce ist aber nicht bekannt und muss durch Ausprobieren bestimmt werden, da sich SHA256 bisher noch nicht zurückrechnen lässt. Diesen Vorgang habe ich mit "das Rätsel durch Raten lösen" bezeichnet.

Stell dir folgende Analogie aus dem obigen Beispiel vor:

Hash des vorangegangen Blocks = Hallo
Satz aktueller Transaktionen = Welt
Nonce = ??

Welchen Wert muss man für die Nonce wählen, damit der Hash "426F3445FA7E83C915959C7636630243D6C4E6E607DCFA95BAFBF046D6CA9579" erhalten wird?

Dieses Rätsel ist nach der Beispiellogik sehr leicht, da es nur die Möglichkeiten "!","." und "?" als Satzzeichen gibt.

Wenn du nach und nach einen der Werte auf der Website https://passwordsgenerator.net/sha256-hash-generator/ eingibst, um den angegebenen Hash zu finden, machst du im Prinzip nichts Anderes als Bitcoinminer.

Sie suchen nach einer Nonce, die zusammen mit den anderen beiden Informationen einen Zielhashwert erreichen (oder unterschreiten). Der Hashwert selbst hat keinen ökonomischen oder wissenschaftlichen Nutzen!

Begründung: Darum sind Bitcointransaktionen praktisch unveränderbar

Wie du sehen kannst, werden nicht nur aktuelle Informationen, sodern auch die vorherigen gehasht und andauernd verknüpft und bestätigt.
Das bedeutet:


Wenn man nachträglich zu einem beliebigen, vergangenen Zeitpunkt Daten auf der Blockchain ändern wollen würde, würde dieselbe Nonce des manipulierten Blocks nicht mehr denselben Blockhash liefern (sondern ein anderer, da ja der Input geändert wurde). Es müsste also eine neue Nonce erraten werden und gehasht werden müssen.

Anschließend würde in dem darauf folgenden Block ein anderer Hash als "Hash des vergangengen Blocks" verwendet werden müssen, da ja Nonce und Transaktionsdaten nicht mehr übereinstimmen. Es muss muss dann wieder eine Nonce gefunden werden, die mit den Transaktionen des folgenden Blocks einen gegebenen Hashwert erreicht oder unterschreitet. Diese Infos kombiniert ergeben zusammen gehasht aber nicht denselben Wert wie "Hash des vergangenen Blocks" im darauf folgenden Block. Und so weiter...

Bei einer Manipulation an der Stelle X in der Blockchain würde also die komplette Blockchain auseinanderbrechen und müsste von dort an neu zusammengesetzt werden. Bitcoin akzeptiert aber nur diejenige Kette als gültig, die die meiste Rechenpower auf sich vereinen kann.

Um dies zu realisieren, müsste ein Angreifer aber mehr Rechenleistung aufbringen als das gesamte Bitcoinnetzwerk, damit sich seine manipulierte Blockchain als diejenige mit der meisten Rechenleistung durchsetzt.

Und hierin liegt der Haken, denn wie aus diesem Artikel von 2013 hervorgeht, hatte das Bitcoinnetzwerk bereits 2013 deutlich mehr Rechenleistung als die weltweit besten 500 Supercomputer! nicht einzeln, nein zusammen!



1
$ 0.00
Avatar for mad-readcash
2 years ago

Comments