In unserer dreiteiligen Serie zum Bitcoin erklären wir, was Bitcoin ist und die Grundkonzepte der ältesten und wohl weltweit bekanntesten Kryptowährung. In Teil 3 geht es um Blöcke, Bitcoin Mining und UTXOs. Wer Teil 1 und Teil 2 noch nicht gelesen hat, findet diese hier:
Teil 1 – Bitcoins Geschichte und Funktion
Teil 2 – Bitcoin-Wallet , Transaktionen und Nodes
Blöcke und Blockchain
Kurzbeschreibung
Haben wir nun eine Transaktion aus unserem Wallet von unserem Konto zu einem anderen Konto angewiesen, können diese Transaktionen von den einzelnen Nodes verifiziert werden. Diese validen Transaktionen werden dann in sogenannten Memory Pools auf den Nodes zwischengespeichert. Sie sind bereit für die Aufnahme in einen Block. In einem Block werden mehrere Transaktionen zusammengefasst; Im Schnitt ca. 2.000 – 5.000. Ungefähr alle 10 Minuten wird ein neuer Block validiert und an die Blockchain angehängt. Damit ist die Transaktion abgeschlossen und unwiderruflich in der Blockchain aufgezeichnet. Abgeschlossene Transaktionen, genauso wie angehängte Blöcke, können im Nachhinein nicht widerrufen oder Rückgängig gemacht werden.
Im Detail
Im Mempool oder Memory Pool landen alle Transaktionen, bevor sie in einen Block geschrieben werden. Aus diesen Mempools bedienen sich die Block-Creator-Nodes (dazu später mehr) um sich Transaktionen mit attraktiver Transaktionsgebühr auszusuchen. Mit einer Auswahl an Transaktionen erstellen sie einen sogenannten Kandidaten-Block (Candidate-Block), der – wenn validiert – an die Blockchain angehängt wird.
Block
Bitcoin Blöcke sind im Schnitt zwischen 1 und 2,5 MB groß (1 MB (Legacy) und bis 4 MB (mit Segwit Zusatz)). Ein Block umfasst unter anderem:
- Hashwert des vorangegangenen Blocks (siehe Exkurs zu Hash und Hashwerten): Ein einzigartiger mathematischer Fingerabdruck des letzten Blocks. Damit wird sichergestellt, dass vorangegangenen Blöcke nicht mehr verändert werden können.
- Nonce (Number Used Once): Einmalige Nummer, die von den Mining-Nodes vergeben wird, um den Hashwert des aktuellen Blocks entsprechend einer mathematischen Anforderung zu manipulieren (mehr im Abschnitt Mining-Node)
- Merkle Root: Ein Hashwert gebildet aus den Hashwerten aller Transaktionen des aktuellen Blocks
- Coinbase: Neu generierte Bitcoins (mit Zieladresse), die der erfolgreiche Miner/Mining-Pool als Belohnung an seinen Public Key senden kann
- Alle weiteren Transaktionen: Alle Transaktionen die aus dem Mempool in den Block mit aufgenommen werden. Eine Transaktion umfasst: Transaktion-ID (TXID), Bitcoin-Betrag, Bitcoin-Adresse/Public-Key Sender, Bitcoin-Adresse/Public-Key Empfänger und die Signatur der Transaktion
Ist ein geeigneter Candidate-Block erstellt worden, muss dieser nun noch validiert und an die bestehende Blockchain angehängt werden.
Block-Creator/ Mining-Node
Mit einem fertigen Candidate-Block im Gepäck, suchen nun die Block-Creator-Nodes – auch Mining-Nodes oder Miner genannt – die Lösung für eine mathematische Aufgabe. Diese Aufgabe besteht darin, einen passenden Hashwert zu finden, der sich aus verschiedenen Werten des zuletzt angehängten Blocks und des neuen Blocks ergibt. Diesen Prozess nennt man Proof-of-Work. Er ist sehr rechen- und damit arbeitsintensiv, denn der zu errechnende Hashwert muss bestimmte Parameter erfüllen (z.B. darf er einen bestimmten Wert nicht übersteigen). Um Einfluss auf das Ergebnis also auf den Hashwert zu haben, stehen dem Miner nur die Nonce (eine einzigartige Nummer) und die Auswahl der validierten Transaktionen des Mempools, also die Anpassung des Candidate Blocks, zur Verfügung. Nachdem der SHA256-Hashwert nicht vorhersehbar ist, bleibt den Minern nichts anderes übrig, als verschiedenen Kombinationen durchzuprobieren, bis sie einen passenden Wert gefunden haben. Nur die Mining-Node, die als erste einen passenden Hashwert findet, kann den nächsten Block an die Blockchain anhängen und sich sowohl die Transaktionsgebühren als auch die Coinbase mit dem Block auf das eigene Konto anweisen.
Während das Lösen der Aufgabe sehr rechen- und zeitintensiv ist, lässt sich die gefundene Lösung von allen Teilnehmern des Netzwerkes sehr leicht validieren. Die einzelnen Nodes werden einen neuen Block nur akzeptieren und an die Blockchain anhängen, wenn dieser von ihnen selbst validiert werden kann.
Proof-of-Work
Der Proof-of-Work-Mechanismus stellt die eigentliche Absicherung des Bitcoin Netzwerks gegen Manipulation und Fälschung dar. Der Bitcoin-Code stellt dem Netzwerk die Aufgabe, als Ergebnis des neuen Blocks einen Hashwert mit einer bestimmten Struktur zu finden. Die Schwierigkeit passt sich ca. alle 2 Wochen automatisch an die Rechenleistung des Mining-Netzwerkes an, so dass im Schnitt cirka alle 10 Minuten ein neuer Block gefunden bzw. validiert wird.
Dadurch, dass der neu gefundene Hashwert des aktuellen Blocks auch immer den Hashwert des vorangegangenen Blocks berücksichtigt, sind die beiden Blöcke miteinander verschränkt. Damit ist sichergestellt, dass die Blockchain abgesichert ist und auch nachträglich nicht mehr verändert werden kann. Eine Blockchain lässt sich so jederzeit vollständig von allen Nodes validieren. Von den Nodes wird dabei immer die längste, valide Blockchain akzeptiert, die im Netzwerk vorhanden ist.
Ist ein neuer Block erzeugt, validiert und an die Blockchain gehängt worden, beginnt der Prozess wieder von vorne. Neue Kandidaten-Blöcke werden erstellt und die Miner gehen auf die Suche nach einem passenden Hashwert.
Exkurs: Hash und Hashwerte
Bitcoin nutzt, wie viele andere Anwendungen auch, den SHA-256 Algorithmus (SHA = Secure Hash Algorithm) für viele seiner Sicherheits-Features. Dieser Algorithmus erzeugt aus einer Zeichenkette beliebiger Länge einen einzigartigen Identifier, eine Art ”Fingerabdruck”. Das Ergebnis nennt sich Hash oder Hashwert und ist im Fall des SHA-256 Algorithmus immer 64 Zeichen (256 Bit) lang. Ändert sich auch nur ein Element wie beispielsweise ein Buchstabe, eine Zahl oder auch nur ein Leerzeichen in der Zeichenkette, ändert sich der gesamte Hash. Die exakt gleiche Zeichenkette erzeugt aber immer den gleichen Hashwert. Dieser Prozess ist irreversibel, d.h. aus dem Hashwert kann man nicht auf die ursprüngliche Zeichenkette rückschließen.
Bei Bitcoin werden der SHA-256 Algorithmus und die daraus entstehenden Hashwerte an verschiedenen Stellen genutzt, um Identifier von abgeschlossenen Transaktionen oder Blöcken zu erzeugen. Diese Hashwerte fließen damit immer in zukünftige Blöcke ein und machen so die vorangegangenen Blöcke unabänderbar. Denn würden Änderungen an vorangegangenen Blöcken stattfinden, passen die aufeinander aufbauenden Hashwerte nicht mehr zueinander. Das verhindert, dass Blöcke oder Transaktionen die bereits Teil der Blockchain sind, später noch geändert werden können, ohne alle darauffolgenden Blöcke ebenfalls zu ändern.
UTXO (Unspent Transaction Output)
UTXO ist die Mechanik, nach der Bitcoin-Transaktionen funktionieren. Jede Bitcoin-Transaktion besteht mindestens aus einem Input und einem Output. Diese 1:1 Transaktion geht aber in den seltensten Fällen auf (oft nur beim Coinbase-Prozess). Denn die Bitcoins, die man in seiner Wallet hat, sind nichts anderes als Outputs, die aus vorangegangen Transaktionen stammen und bisher noch nicht ausgegeben wurden (Unspent Transaction Output).
Möchte man zum Beispiel 0,69 BTC an einen Empfänger schicken, stammen diese 0,69 BTC meist nicht alle aus einer einzigen Transaktion, sondern setzten sich aus mehreren eingegangenen Transaktionen zusammen. Und in den seltensten Fällen ergibt die Summe eingegangener Transaktionen exakt 0,69 BTC, sondern beispielsweise 0,75 BTC. Was passiert nun also in der Transaktion, in der man exakt 0,69 BTC verschicken möchte? Es werden mehrere Input-Transaktionen zu einer Output-Transaktion gebündelt, bis mindestens die 0,69 BTC erreicht sind – in unserem Fall kommen wir auf einen gebündelten Output von 0,75 BTC. Dabei werden nun 0,69 BTC dieses Outputs an den eigentlichen Empfänger geschickt und 0,06 BTC an das eigene Konto. Nun hat der Empfänger einen neuen Input und das eigene Konto ebenfalls.
Man kann sich das ein bisschen wie Bargeld an der Kasse vorstellen. Möchte ich meinen Einkauf für 14,49 zahlen, gebe ich dem Kassierer einen 10 Euro und einen 5 Euro Schein, weil ich diese gerade in meinem Geldbeutel habe. Als Wechselgeld bekomme ich dann 51 Cent zurück. Hätte ich einen 20 Euro Schein in der Tasche würde ich entsprechend 5,51 Euro zurückbekommen.
Zurück zu unserem Bitcoin Beispiel. Hier bekommt der Empfänger eine Transaktion, die sich beispielsweise aus 0,30 BTC und 0,45 BTC zusammensetzt, die der Versender in seiner Wallet hat. Als Wechselgeld erhält er 0,06 BTC zurück. Diese 0,06 BTC sind nun ein neuer UTXO beim Versender; 0,69 BTC sind ein neuer UTXO beim Empfänger.
Wir erinnern uns: Transaktionen finden nur auf der Blockchain selbst stattfinden. Eine Wallet verwaltet im Hintergrund nur die Schlüssel. Mit dieser Information, welche Schlüssel bzw. Adressen dem Nutzer gehören, prüft die Wallet auf der Blockchain, ob es UTXOs gibt, die vom Nutzer ausgegeben werden können. Die Wallet durchsucht dabei die Bitcoin Blockchain nach unseren UTXOs, um uns deren Summe als Kontostand anzuzeigen.
Hinweis: Je mehr UTXOs man für eine Transaktion ausgeben muss, desto mehr Inputs hat diese Transaktion und desto größer – d.h Speicherplatzintensiver – und damit teurer ist die Transaktion. Um diesen Effekt etwas zu mildern kann man an Tagen mit einer geringeren Nachfrage nach Transaktionen und daraus resultierenden niedrigen Gebühren, seine vielen kleinen UTXOs zu einem neuen UTXO zusammenzufassen. Dazu macht man einfach eine Transaktion an eine eigene Bitcoin-Adresse und konsolidiert damit seine UTXOs. Aktuelle Transaktionsgebühren sind bspw. auf der Webseite von Mempool einsehbar.
Ausblick
Seit Anfang 2009 läuft das Bitcoin Netzwerk nun schon nach diesem Muster stabil und ohne Unterbrechung. Der Bitcoin-Code hat sich als solide, sicher und zuverlässig erwiesen. Es gab und gibt immer wieder Optimierungen und Anpassungen am Code; diese müssen aber von einer Mehrheit an Minern und Nodes angenommen – d.h. als Software aufgespielt – werden, ansonsten haben diese keine Auswirkungen auf das Netzwerk.
Die Zukunft von Bitcoin ist noch nicht entschieden. Viele Nutzer kritisieren die fehlende Skalierbarkeit des Netzwerkes und damit die Unzulänglichkeit als echter Zahlungsdienst. Denn durch die Einschränkung der Größe der Blöcke, ist auch immer die Anzahl der Transaktionen begrenzt. Unterschiedlichen Quellen zufolge kann das Bitcoin Netzwerk bis zu 7 Transaktionen pro Sekunde, der Zahlungsdienstleister VISA bis zu 65.000 Transaktionen pro Sekunde (laut Angaben von VISA USA) verarbeiten. Zudem braucht es mehrere Minuten bis hin zu einer Stunde, bis eine Transaktion vom Bitcoin-Netzwerk als verifiziert gilt. Auch die Gebühren sind nicht immer gleich und steigen mit der Menge an Transaktionen. Nicht gerade ideale Voraussetzungen, um mal eben seinen Kaffee damit zu bezahlen.
Es gibt aber mehrere Ansätze diesen Flaschenhals durch Layer 2 Lösungen zu beheben (weitere Informationen Zum Thema Layer 2 findest du in diesem Artikel: Krypto: Diese Begriffe solltest Du kennen | Teil 1). Am bekanntesten ist hier wohl das Lightning-Netzwerk, dass Transaktionen in einem eigenen Sub-Netzwerke abrechnet und dabei einzelnen Lightning-Transaktionen als eine große Transaktion im Haupt-Netzwerk begleichen kann. Ähnlich wie auch bei VISA; Hier wird ebenfalls nicht jede Transaktion in Bargeld beglichen, sondern am Ende des Abrechnungszeitraum werden mehrere Transaktionen zusammengefasst und verrechnet.