Vor ein paar Tagen hat diese Artikelreihe mit Fokus auf die Grundlagen der Blockchaintechnologie gestartet. Zur Auffrischung kann unter nachstehendem Link gern noch einmal nachgeschlagen werden:

Was ist Blockchain – Teil 1 – Grundlagen

Heute geht es darum die im ersten Teil aufgekommenen Fragen zu beantworten, welche wie folgt lauten:

  • Blockerstellung auf Knotenebene,
  • Validierung des Blocks durch das Netzwerk (Konsensfindung) und
  • Hinzufügen des Blocks an die Blockkette.

Auswirkung von Transaktionsgebühren auf die Transaktionsauswahl während der Blockerstellung durch die Knoten

Wie bereits beschrieben werden Blöcke mit neuen Informationen kontinuierlich an die Blockkette angefügt. Ein Block hat eine vordefinierte Größe (derzeit 1MB bei Bitcoin) und er wird erst validiert und an die Kette angefügt, wenn genügend neue Transaktionen zusammengekommen sind, um einen kompletten Block auszufüllen. Da es sich hier um ein Peer-to-peer (P2P) Netzwerk handelt, werden neue Transaktionsdaten ausgehend von dem jeweiligen Knoten, in dem eine Transaktion ihren Ursprung hat, auf das gesamte Netzwerk verteilt. Aufgrund der Netzwerkarchitektur (Topologie) erhalten räumlich anders gelagerte Knoten die Transaktionsdaten unterschiedlich schnell, und der am weitesten entfernte Knoten als letzter. Das heisst, jeder Knoten erstellt schrittweise seine eigene Blockversion mittels Aufschichtung neuer Transaktionsdaten gemäß der Reihenfolge, in der er diese erhält. Es ist also durchaus möglich, dass eine Transaktion, die bezogen auf den Zeitstempel direkt nach einer anderen Transaktion stattgefunden hat, erst in einem späteren Block „verbaut“ wird, je nachdem wie die Informationen im Netzwerk verteilt wurden. Um dies zu verhindern, beinhalten die meisten Blockchainanwendungen einen Priorisierungsmechanismus. Dabei spielen Transaktionsgebühren eine wichtige Rolle. Die Knoten, welche das Netzwerk betreiben, erheben für neue Transaktionen Gebühren (ähnlich der Gebühren ggü. dem Verkäufer für die Nutzung des Kreditkartenbezahlservices).  Im Falle von Bitcoin (und andere Blockchains wie Ethereum) geht das Netzwerk sogar einen Schritt weiter und erlaubt variable Transaktionsgebühren. Dies soll Transaktionen, die eine zügige Validierung erfordern (z.B. hohe Beträge oder zeitkritische Vorgänge), die Möglichkeit einer schnellen Abwicklung bieten, in dem sie durch das Zahlen einer höheren Gebühr direkt an den Anfang der Schlange springen. Wird ein Knoten über eine neue Transaktion benachrichtigt, wird er diese mit höherer Wahrscheinlichkeit in den nächsten Block einarbeiten, wenn er dafür eine höhere Gebühr erhält. Die Gebühren werden von Angebot und Nachfrage bestimmt: Je höher die Anzahl an zu verarbeitenden Transaktionen, desto höher sind die Kosten allgemein. Und Transaktionen mit hoher Priorität sind dann eben nochmals teurer. Die Auswirkungen von Transaktionsgebühren sind mit dem Anstieg an Bekanntheit und Nutzung von Blockchainanwendungen ein großes Diskussionsthema geworden, da dies zu massiver Netzwerküberlastung und somit starkem Wettbewerb zwischen den Transaktionen geführt hat. Bei Bitcoin beispielsweise stiegen Ende Dezember/ Anfang Januar die Gebühren auf den bisherigen Höchststand von $30-$50, schwanken mittlerweile aber wieder um $1,50.

 

Bitcoin average transaction cost - Source: Bitcoinfees.info
Bitcoin durchschnittliche Transaktionskosten – Quelle: Bitcoinfees.info
Source: Bitcoinfees.info
Quelle: Bitcoinfees.info

Die Gebühren variieren stark von Blockchain zu Blockchain, aber sind nicht unbedeutend:

  • BTC : $1,50
  • ETH : $0,40
  • DASH : $0,40
  • BCH : $0,05 – $0,10

Betrachtet man die Gebühren als Prozentsatz gemessen am Transaktionsvolumen, bewegen sich diese mittlerweile im Bereich von 1,5% für Bitcoin, 1,08% bei Ethereum und 0,07% bei Bitcoin Cash. Diese Prozentsätze sind nicht gerade unerheblich und teilweise – vor allem bzgl. BTC – gleichauf mit den Gebühren herkömmlicher Zahlverfahren (z.B. Überweisung, Kreditkarte, etc.). Die Handhabung von Netzwerküberlastung und letztendlich der Reduzierung der Gebühren und Verbesserung der Abwicklungszeiten für Transaktionsanerkennung und -validierung ist seit jeher ein heißes Thema in der Blockchaingemeinschaft, in der unterschiedliche Ansätze untersucht werden. Während die Entwickler von Bitcoin (und deren Abwandlungen auf Basis des Proof of Work Konzepts) an höherer Prozesseffizienz arbeiten (z.B. mittels Einführung von Lightning Network), haben andere einen radikaleren Ansatz gewählt und erstellen völlig neue, auf anderen Valdidierungsmechanismen beruhende Blockchains (Monero, Cardano, Ripple, NEM, etc.). Diese Ansätze werden in nachfolgenden Artikeln abgehandelt werden.

Blockvalidierung & Konsensfindung

Transaktionsgebühren spielen nur bei der Priorisierung auf Knotenebene eine Rolle. Ein weiteres Problem, was in verteilten Datenbanken aufkommt, dreht sich um die Blockvalidierung und -akzeptanz auf Netzwerkebene (Konsensfindung). In einer Struktur, in der mehrere Knoten ihre jeweilige Version des nächsten Blocks für die Validierung vorschlagen, muss es eine Methode des Übereinkommens geben, welcher tatsächlich der nächste Block sein wird, der an die Blockchain anzufügen ist. Im ursprünglichen Bitcoin-Informationsblatt wurde dazu ein innovatives Konzept names Proof of Work (PoW) vorgestellt.

Original Bitcoin Informationsblatt (in englischer Sprache)

Bei PoW versucht jeder Knoten ein äußerst komplexes, mathematisches Problem unter Einbeziehung des frisch „gebackenen“ Blocks zu lösen. Dieses mathematische Problem hat keine analytische Lösung, sondern diese kann nur durch methodisches Ausprobieren (Trial-and-Error oder Brute-Force genannt) gelöst werden. Bei diesem Prozess wetteifern die Knoten darum, als erster die Lösung für ihren Block zu finden. Der Gewinner validiert den neuen Block, der dann an die Blockchain angefügt wird, und streicht somit die Belohung in Form von Münzen (coins) ein. Um besser zu verstehen, was dabei genau abläuft, wird im folgenden die Blockstruktur von Bitcoin näher erläutert.

Bitcoin Blockstruktur – Quelle: Originales Bictoin Informationsblatt

Blockstruktur:

  1. Jeder Block beginnt mit dem Hash des vorherigen Blocks. Ein Hashwert ist der digitale Fingerabdruck (digital signature oder fingerprint) der Informationen des vorherigen Blocks. Sie dienen als Eingabemenge der Hashfunktion (auch Streuwertfunktion genannt), welches als Ergebnis den Hash als Zielmenge liefert. Hashfunktionen haben einige Besonderheiten: Sie liefert ein Ergebnis, welches ein bestimmtes, vorher bekanntes Format (besonders bzgl. Bitlänge, meist 32, 64, 128, 256, etc.) annimmt, sie ist derart strukturiert, dass es sehr schwer – wenn nicht gar unmöglich – ist, die Funktion rückwärts aufzuschlüsseln, um die Eingabemenge eines Hashwerts zu berechnen. Weiterhin hat die Eingabemenge einen starken Einfluss auf den Hashwert, so dass bereits minimale Änderungen der Eingabemenge zu drastischen Änderungen des Hashwerts führen.  Es gibt viele unterschiedliche Arten von Hashfunktionen, und die bei Bitcoin genutzte heisst SHA-256.
  2. Der zweite Teil des Blocks beinhaltet die Transaktionsdaten in einem vereinheitlichten Format.
  3. Zum Schluss wird eine „Nonce“ genannte Zahl an den Block angefügt, deren Berechnung nachstehend beschrieben wird.

Bis zu diesem Zeitpunkt wurde ein kompletter Block erstellt, aber er wurde noch nicht validiert. Damit ein Knoten die erfolgreiche Validierung für sich beanspruchen kann, muss der vom Knoten vorgeschlagene Block folgende Bedinungen bzgl. seiner Struktur erfüllen: Der Fingerabdruck (also der Hashwert als Ergebnis der Hashfunktion) des Blockes in seiner Gesamtheit muss einem vordefinierten Wert entsprechen (im Falle von Bitcoin ist dies 0). Da die Nonce die einzige variable Eingabe des Blocks darstellt, kann die Hashfunktion nur dann den geforderten Hashwert liefern, indem die Nonce und somit das Ergebnis der Hashfunktion verändert wird.  Hashfunktionen sind keine inversen Funktionen, weswegen die einzige Möglichkeit, die korrekte Nonce zu finden das systemathische Ausprobieren (Brute Force) ist. Sobald der Knoten die korrekte Nonce findet, sendet er die Informationen des Blockvorschlags, welcher die korrekte Nonce enthält, an das gesamte Netzwerk. Die anderen Knoten im Netzwerk können die Korrektheit der Nonce leicht verifizieren und akzeptieren den Block in diesem Fall (nachdem natürlich ebenfalls der Hashwert des vorherigen Blocks im neuen Block verifiziert wurde).

 

 

Ist der neue Block akzeptiert, beginnen alle Knoten mit der Erstellung des widerum nächsten Blocks, und so weiter. Da die PoW-Methode sehr rechenintensiv ist und die Knoten für die Datenverabeitung Resourcen (größtenteils Strom) verbrauchen, entlohnt das Netzwerk den Knoten, dessen Vorschlag als nächster Block akzeptiert wurde, mit frischgeschüften Bitcoins. Um die durchschnittliche Zeit der Blockerstellung konstant zu halten (ca. 10 Minuten bei BTC), passt das Netzwerk automatisch den Schwierigkeitsgrad des mathematischen Problems der Funktion aus Anzahl der zu verarbeitenden Transaktionen und verfügbarer Gesamtrechenleistung an.

Vor- und Nachteile des Schürfens (Mining)

Neben der Validierung eines neuen Blocks (des ersten Knotens, der das Hashproblem löst), bietet PoW der Blockchain auch ein hohes Maß an Sicherheit. In der Tat müsste ein korrumpierter Knoten, der versucht eine falsche Version der Blockchain (mit veränderten Salden z.B.) ans Netzwerkwerk zu senden, einen „validen“ (akzeptablen) Vorschlag verschicken. Dieser Vorschlag müsste dann zusätzlich zur korrekten Nonce des aktuellen Blocks ebenso die korrekte Hashsignatur des vorherigen Blocks enthalten.

Unter Berücksichtigung von Rekursion heisst dies, dass der Knoten alle seit Anbeginn (Genesis) der Blockchain validierten Blöcke nachbauen (mine) müsste, und während er damit beschäftigt ist, arbeitet das Netzwerk bereits am nächsten neuen Block, usw., so dass der einzelne Knoten diese massive Rechenaufgabe nie alleine bewältigen könnte. Theoretisch ist es denkbar und möglich, die gesamte Blockchain umzuschreiben. Aber das würde die Übernahme von mehr als der Hälfte der Verarbeitungskapazitäten des Netzwerks erfordern (sog. „51%-Attacke“), was besonders mit wachsender Netzwerkgröße immer weniger machbar und insgesamt unwahrscheinlicher wird. Nichtsdestotrotz erregt die derzeitige Konsolidierungswelle der Schüfkapazitäten (mining power) hinzu einigen wenigen, mächten Pools stetige Besorgnis in der Gemeinschaft.

PoW Mining hat auch Schwächen. Die nachfolgende Übersicht zeigt die größten:

  • Problem mit Skalierbarkeit: Da Blocks eine vordefinierte, fixe Größe und Schüfzeiten kann das Netzwerk die Verarbeitung nicht so einfach ausweiten bei steigender Transaktionsanzahl. Diverse Lösungen werden erkundet, z.B.  die Erhöhung der Blockgröße, was zu Bitcoin Cash führte, die Eliminierung von Daten aus dem Block wie bei SegWit oder die Verarbeitung einiger Transaktionen außerhalb der Blockchain wie bei Lightning Network.
  • Umweltprobleme: Bei PoW wird stark kritisiert, dass die Knoten Unmengen an Ressourcen für das Finden der korrekten Nonce verbrauchen. Der Stromverbrauch des Netzwerks ist mittlerweile auf einem nicht nachhaltigen Niveau, und der PC-Teilemarkt ist ebenfalls gestört (der Preis für Grafikkarten ist im letzten Jahr kontinuierlich gestiegen, und die Verfügbarkeit nimmt stetig ab).
  • Konzentrationsproblem: Der Schürfprozess ist derart gestaltet, dass der Erfolg des Schürfens (Finden der korrekten Nonce), und damit der erwirtschaftete Gewinn allein vom Zufall abhängt. Das hat dazu geführt, dass Knoten ihre Ressourcen poolen um ihre Chancen zu verbessern, die korrekte Nonce und damit den nächsten Block zu finden und teilen dafür untereinander den generierten Lohn auf. Dies hat ebenfalls zur Herstellung von Hardware, die einzig und allein zum Schürfen verwendet und optimiert wurde, geführt („ASICS“), was es für Einzelknoten so gut wie unmöglich macht, dagegen mitzuhalten. Viele in der Gemeinschaft sehen dies als genau das Gegenteil von dem an, was als Vision im ursprünglichen Bitcoin Informationsblatt vorgestellt wurde, und fordern stattdessen ein wirklich dezentrales System. Dieser Trend hin zur Konzentration könnte auch die Erfolgschancen einer 51%-Attacke erhöhen.

Es gibt verschiedene Lösungsansätze für die aufgezeigten Probleme, welche Gegenstand nachfolgender Artikel werden.

Schreibe einen Kommentar