Cryptocurrency

Einführung #

Das Cryptocurrency Thema ist allgegenwärtig und hier sollen die allgemeinen Grundlagen auf verständliche Art festgehalten werden. Es gibt eine sehr gute Website, auf der mit Hash, Blöcken, Blockchain und zum Schluss auch mit Coinbase gespielt werden kann. Im Wiki wird an geeigneter Stelle darauf verwiesen.

Hash Funktion #

Eine Hashfunktion bildet eine grosse Eingabemenge auf eine kleinere Zielmenge ab. Die Eingabemenge kann beispielsweise ein Text oder eine Datei sein. Diese wird dann auf eine kleine Zielmenge, meist nur wenige Zeichen reduziert.“To Hash” kommt vom englischen Verb zerhacken. Hashes haben in der Informatik viele Anwendungen. Da sie sehr klein sind, kann man mit ihnen erkennen, ob eine Datei bei der Übertragung verändert wurde. Dabei überträgt der Absender die Datei und den Hash. Im Anschluss berechnet der Empfänger den Hash der empfangenen Datei und vergleicht ihn mit dem empfangenen Hash.

Da beim Hashen Informationen verloren gehen, können aus den Hashes die ursprünglichen Eingaben nicht wiederhergestellt werden.

Eine Eingabe zu finden, die auf einen gewünschten Hash führt, ist nicht leicht möglich. Es müssen alle möglichen Eingaben durchprobiert werden. Der Grund dafür ist, dass jeder Buchstabe vom Hash von der kompletten Eingabe abhängt und eine kleine Anpassung in der Eingabe folglich den kompletten Hash ändern kann.

Wenn aus zwei Eingaben der gleiche Hash resultiert, ist das eine Kollision. Das ist eigentlich immer unerwünscht. Ein üblicher Hash hat 256 Bit und es gibt folglich \(2^{256}\) bzw. etwa \(10^{77}\) verschiedene Hashes. Das Risiko für eine Kollision ist deshalb relativ gering.

Das unten stehende Abbild verdeutlicht dies nochmals grafisch. Der Text auf der linken Seite ist die Eingabe, die Zahl auf der rechten Seite ist der Hash. Der rote Eintrag zeigt eine Kollision.

Hash Beispiel aus Wikipedia https://de.wikipedia.org/wiki/Hashfunktion

Es gibt eine Website, auf der mit Hashes sehr einfach gespielt werden kann.

Block #

Ein Block enthält in der Regel Metadaten und Nutzdaten. Zu den Metadaten gehören beispielsweise Ersteller, Nonce, Uhrzeit und immer der Vorgängerblock. In den Nutzdaten sind dann die konkrete Information, wie Transaktionen gespeichert.

Am Beispiel von Bitcoin ist das:

  • Block Version (wenn das Protokoll aktualisiert werden soll)
  • Hash vom Vorgänger-Block
  • Merkel-Root-Hash der Transaktionen
  • Uhrzeit
  • Schwierigkeit (Anzahl beginnende Nullen im Hash des Blocks)
  • Nonce
  • Anzahl Transaktionen
  • Als Nutzdaten die Transaktionen

Auch das Verhalten von Blöcken lässt sich auf der gleichen Website simulieren. Dort ist ein Block abgebildet, dessen Hash sich bei der Eingabe von Daten verändert.

Blockchain #

Die Blockchain wurde erstmals 1991 und später 1998 von Bruce Schneier beschrieben. Das Konzept der Blockchain als verteiltes Datenbankmanagementsystem wurde erstmals 2008 von Satoshi Nakamoto beschrieben.

Der Begriff Datenbankmanagementsystem ist wichtig. Alle Daten werden in einer Datenbank gespeichert, die meistens von einem Datenbankmanagementsystem verwaltet werden. So ein System kann auch oftmals mehrere Datenbanken parallel verwalten. Es gibt zeilenbasierte Datenbanken (relationale Datenbanken wie MS Access / Excel) sowie auch NoSQL Datenbanken. Die relationalen Datenbanken sind sehr weit verbreitet.

Dass eine Blockchain im Grunde eine Verkettung von Blöcken ist, lässt sich im unten stehenden Bild gut erkennen. Dort ist auch ersichtlich, dass zwei Blöcke den gleichen Vorgänger haben kann. Das passiert bei Bitcoin häufig, da zwei Miner einen gültigen Block zur gleichen Zeit finden können. Die längere Kette gewinnt mit der Zeit und die Kürzere wird (mit allen Daten / Transaktionen gelöscht).

Blockchain Beispiel aus Wikipedia https://de.wikipedia.org/wiki/Blockchain

Was in den Blöcken gespeichert ist, ist nicht relevant für eine Blockchain. Es könnte alles sein, solange jeder Block seinen Vorgänger referenziert. Der erste Block kann seinen Vorgänger nicht referenzieren und heisst Genesis-Block.

In diesem Blockchain Beispiel kann mit einer Blockchain gespielt werden.

Eigenschaften einer dezentralen Blockchain #

Eine dezentrale Blockchain ist grundsätzlich öffentlich und kann von jedem Teilnehmer verwendet werden. Deshalb kann man den Teilnehmern nicht vertrauen.

Eine dezentrale Blockchain…

  • …besteht aus verketteten Blöcken.
  • …wird dezentral gespeichert.
  • …muss einen Konsensmechanismus beinhalten, damit sich die Teilnehmer auf einen nächsten Block einigen können.
  • …muss manipulationssicher sein.
  • …müssen nicht abstreitbar sein, da sonst ein Fälschungsproblem bestünde.

Konsensverfahren #

Als Konsensverfahren gibt es einige verschiedene Methoden, die wichtigsten sicherlich Proof-of-Work und Proof-of-Stake. Es gibt aber auch Proof-of-Space und weitere.

Um einen gültigen Block zu erstellen, muss der Proof geleistet werden. Deshalb können nicht schnell viele Blöcke erstellt werden.

Proof of Work #

Bei einem gegebenen Block muss eine Nonce gefunden werden, sodass im Hash des Blocks die ersten n Bits Null sind. Je mehr Null-Bit verlangt werden, desto schwieriger ist es, eine Nonce zu finden. Eine Nonce ist ein Zahlenfeld im Block.

Die Wahrscheinlichkeit kann mit einem Würfel erklärt werden. Die Wahrscheinlichkeit, dass eine 6 gewürfelt wird, ist \(\frac{1}{6}\) . Die Wahrscheinlichkeit, zwei Mal hintereinander die 6 zu würfeln, ist unwahrscheinlicher und beträgt \(\frac{1}{6} * \frac{1}{6} = \frac{1}{36}\)

Das lässt sich einfacher verstehen, wenn auf dieser Webseite damit gespielt wird.

Calendar December 26, 2021