Herr Di Giorgio, der Blockchain-Technologie traut man viel zu. Sie hat das Potential, Banken überflüssig zu machen. Weshalb?
Die Blockchain hat ein fundamentales Problem der digitalen Finanzwelt gelöst – das Problem des double spending. Das Internet funktioniert nach dem Prinzip Copy&Paste. Digital kann man alles Duplizieren und Multiplizieren: Fotos, Lieder – und theoretisch auch Geld. Heute verhindern Banken, dass wir Geld auf diese Weise vermehren können. Sie garantieren, dass auf meinem Konto Geld abgezogen und bei einer anderen Person gutgeschrieben wird.

Und wie kann die Blockchain-Technologie dieses Problem des double spending lösen?
Dafür müssen wir etwas ausholen und mit den Grundlagen beginnen, auf denen die Blockchain-Technologie basiert. Es gibt zwei Grundelemente im Zahlungsprozess, die sicherstellen, dass Transaktionen nur einmal ausgeführt werden können. Das eine Element ist das sogenannte Hashing, ein kryptographisches Verfahren zur Prüfsummenberechnung (siehe unten stehende Grafik zum Prozess des Signierens und Verifizierens).

Das Verfahren verunmöglicht die nachträgliche Veränderung von Daten. Und zwar so: Wenn ich einen digitalen Datensatz (wie ein E-Book) verkaufen will, muss sichergestellt sein, dass auch tatsächlich auf den korrekten Datensatz (also auf das digitalisierte Buch) verwiesen wird. Mit dem Hash-Algorithmus kann ich für den Datensatz eine Prüfsumme errechnen lassen. Diese Prüfsumme ist quasi der digitale Fingerabdruck des Buches. In der Blockchain wird dann nicht die Datei selbst, sondern nur dieser digitale Fingerabdruck weiter versendet. Das E-Book selbst ist an einem separaten Ort gespeichert.

Der Fingerabdruck hat zwei wesentliche Eigenschaften:
  • Die Zahlenreihe, die durch das Hashing produziert wird, hat immer die gleiche Länge. In den meisten Blockchain-Systemen wird der sogenannte Sha-256-Algorithmus verwendet. Wenn ich ein 10 Gibabite grosses Buch habe, erhalte ich daraus einen Hash mit 256 Bit (Zeichen). Dadurch können viel mehr Transaktionen getätigt werden, da sie weniger Speicherplatz und Rechenleistung benötigen.
  • Zweitens kann der Hash eindeutig zugewiesen werden. Jeder Input generiert einen einzigartigen Output (testen Sie hier einen Hash-Generator). Sobald im E-Book zum Beispiel das Erscheinungsdatum verändert wird, um etwa Urheberrechte zu proklamieren, sieht der Hash völlig anders. Es ist unmöglich, von einem Hash auf den Inhalt einer Datei zu schliessen.
Um die Echtheit der Daten zu versichern, wird der Hash eines Dokumentes immer in die Transaktion mit eingebaut.

Blockchain InfografikSource: Acdx on Wikimedia Commons, adapted by Gottlieb Duttweiler Institute gdi.ch

Und das zweite Grundelement der Blockchain?
Das zweite Element ist die digitale Signatur. Diese basiert auf einem asymmetrischen kryptografischen Verfahren, das zwischen public und private key unterscheidet (siehe unten stehende Grafik zum Signierungsprozess in Transaktionen).

Nehmen wir an, ich möchte den digitalen Fingerabdruck meines Diamanten versenden. Dazu muss ich diesen so sichern, dass der Datensatz niemand verändern kann (durch die Verwendungen eines Hashs) und dass nur ich bestimmen kann, wer diese Daten erhalten wird.

Jedes Mitglied der Blockchain hat einen privaten und einen dazu passenden öffentlichen Schlüssel. Mit meinem privaten Schlüssel erstelle ich eine eindeutige digitale Signatur des Datensatzes. Ich verschlüssle den Hash des digitalen Datensatzes mit meinem public key. Die daraus entstandene Zeichenfolge ist quasi meine Unterschrift. Dem Empfänger des digitalen Fingerabdrucks gebe ich in der Transaktion gleich meinen öffentlichen Schlüssel mit. Dieser ist eine Ableitung meines private key und ermöglicht es, die von mir erstellte Signatur zu verifizieren. So erhält der Empfänger den Hash des digitalisierten Diamanten.

Der Empfänger des public key kann auf diese Weise auch verifizieren, dass nur ich diesen Hash signiert haben kann. Denn nur mein veröffentlichter public key kann nämlich den verschlüsselten Hash wieder entschlüsseln. So werden Besitzrechte in der Blockchain eindeutig offen gelegt.

Es ist jedoch unmöglich, durch den public key zu erraten, wie der dazu passende private key aussieht. Das Erstellen eines public keys basiert nämlich auf einem ähnlichen Verfahren, wie die Generierung der Zeichenreihe durch den Hash-Algorithmus.

Also kennt niemand meinen privaten Schlüssel?
Ja. Transaktionsempfänger erhalten nur den public key und die Information, dass der Hash mit einer Signatur versehen wurde. Mit den public key kann man dann nachweisen, dass nur der Besitzer des private keys diese Signatur erstellt haben kann.

Und wie hängen diese kryptografische Verfahren mit der Blockchain zusammen?
Diese kryptographischen Technologien existieren seit Jahrzenten. Das hat bis hier hin noch nichts mit Bitcoin und Blockchain zu tun. Die Frage ist jetzt also, wie damit Geld gehandelt werden kann.

Stellen wir uns vor, ich möchte Person A 10 Bitcoins (BTC) senden. Dazu müssen zwei Grundbedingungen erfüllt sein: Erstens muss ich das Geld besitzen und zweitens darf es nur einmal versendet werden.

Transaktionen in der Blockchain (siehe unten stehende Grafik) haben immer zwei verschiedenen Elemente: Inputs und Outputs. Person A gibt mir, damit ich ihr Geld senden kann, eine sogenannte Bitcoin-Adresse. Das ist nichts anderes als der von ihr generierte public key. Damit habe ich schon alle Informationen, um eine neue Transaktion zu starten.

Blockchain Infografik Source: Bitcoins the hard way from Ken Shirriff on righto.com, adapted by Gottlieb Duttweiler Institute gdi.ch

Ich schreibe in die Überweisung: Person A erhält von mir 10 BTC. Daran hänge ich ein Output-Element, also den public key von Person A. So wird geregelt, wohin die 10 BTC fliessen.

Wie beim echten Geld muss nachweisbar sein, dass ich das Geld überhaupt besitze, das ich ausgeben will. Irgendwo in der Blockchain muss eine Transaktion existieren, deren Output mit meinem public key signiert ist. Weil nur mir dieser Outpt gehören kann, (da nur ich den passenden private key habe), kann auch nur ich diesen Output als Input für meine neue Transaktion verwenden: Ich baue um den Output mit meinem private key eine Signatur und lege einen public key dazu. Damit zeige ich, dass der Output mir gehört und ich ihn jetzt als neuen Input verwende.

Jedes Mitglied im Blockchain-Netz (Knoten) kann somit erkennen, dass die Transaktion von mir stammt (durch die Signatur der Transaktion mit meinem private key) und nur ich diesen vorherigen Output verwenden darf. Person A kann jetzt dasselbe mit dem von mir erhaltenen Output machen und ihn wieder als Input für neue Zahlungen verwenden. So ist jede Transaktion mit der vorherigen verknüpft.

Wie versendet man mehr Geld, als einem in einem einzigen Output zur Verfügung steht?
Wenn ich zum Beispiel 300 BTC versenden will, dann muss diese Anzahl an BTC irgendwo im System in verschiedenen Output-Elementen registriert sein. Ich stecke also mehrere Input-Elemente in eine Transaktion: (10 BTC + 150 BTC + 140 BTC = 300BTC). Das klappt natürlich auch umgekehrt und ich verteile mein Geld an verschiedene public keys.

Was wäre, wenn jemand den private key stiehlt und dasselbe Geld zweimal ausgegeben werden soll (einmal vom Dieb und einmal vom rechtmässigen Besitzer)?
Einer von beiden würde gewinnen. Eine Transaktion würde angenommen werden und die andere nicht. Die später gestartete Transaktion würde vom System abgewiesen werden, weil das Input-Element schon verwendet wurde.

Wie weiss das System, welche Transaktion die erste war, wenn diese zwei Transaktionen gleichzeitig ausgelöst wurden?
Dafür muss ich auch wieder etwas weiter ausholen: Transaktionen werden zunächst gesammelt und in einem Block versiegelt. Das geschieht, in dem vom neusten Block ein Hash erstellt wird, sobald dieser voll ist. Diese Prüfsumme wird in dem Block gespeichert, der als nächster gebaut wird (siehe Grafik unten). So können alle früheren Blöcke gesichert werden – jede Änderung im einen alten Block würde den Hash des Blocks verändern.

Transaktionen erstellen können alle, die sich eine Wallet (also eine digitale Brieftasche) in der Form einer App heruntergeladen haben. Dafür muss man kein vollwertiger Knoten im Netzwerk sein. Das würde nämlich bedeuten, dass man sich die gesamte Blockchain runterlädt und aktiv daran beteiligt ist, Transaktion zu verifizieren. Das machen nur die Full Nodes oder auch Miner.

Wenn ich also eine Transaktion erstellt habe und diese von einem Knoten erkannt wird, kommt sie in den sogenannten Live Pool (den Wartebereich von Transaktionen, bevor sie in einen Block aufgenommen werden): Die Knoten machen jetzt erste Checks: Ist die Transaktion korrekt, stimmen die Summen von Inputs und Outputs überein, passen die Signaturen? Es wird auch überprüft, ob es eine gleiche Transaktion mit demselben Input gibt. Bei dieser ersten Kontrolle gewinnt die schnellere Transaktion. Die langsamere wird nicht akzeptiert und für ungültig erklärt.

Blockchain Infografik Source: Mattähus Wander on Wikimedia Commons, adapted by Gottlieb Duttweiler Institute gdi.ch

Also muss die Transaktion von jeder Full Node verifiziert werden, bevor sie in den Block kommt?
Genau. Und jede Transaktion ist erst dann in der Blockchain, wenn der Block fertig und durch die Prüfsumme gesichert ist. Wir beschäftigen uns jetzt also mit dem Proof-of-Work-Consensus-Algorithmus. Er stellt sicher, dass der Block vom ganzen Netz korrekt akzeptiert wird.

Ein Miner publiziert seinen neu erstellten Block aus von ihm verifizierten Transaktionen. Andere Miner prüfen den immer ein Megabite grossen und etwa 2000 Transaktionen starken Block. Sobald diese Checks durch sind, arbeiten die Miner wieder am nächsten Block. Die Miner befinden sich also in einem Wettrennen. Der erste, der einen Block zusammengestellt hat, erhält dafür eine Belohnung. So schöpfen Miner Bitcoins. Und auch hier haben wir ein Spannungsfeld: Eine höhere Rechenleistung verspricht mehr Erfolg und somit grössere Chance für eine Belohnung.

Und in welcher Reihenfolge kommen die Transaktionen vom Live Pool in einen Block? Es hat ja, weil die Grösse der Blöcke beschränkt ist, vermutlich mehr Transaktionen im Live Pool als in einen neuen Block passen.
Das ist immer wieder der Grund für Dispute. Der Live Pool wächst und es kann durchaus passieren, dass eine Transaktion über mehrere Tage im Live Pool stecken bleibt. Das ist vor allem dann ärgerlich, wenn man mit Bitcoins einen Kaffee bezahlen will.

Für kleinere Beträge wurden deshalb die Lightweight Nodes (oder auch Simple Payment Verfication Nodes) eingeführt. Diese überprüfen nicht die gesamten Transaktionen für einen Block, sondern nur einen beschränkten Zeithorizont. Sogenannte Short Transactions (also Kaffee bezahlen) basieren meist auf einem gewissen Vertrauen: Ich trauen dir zu, dass du kein Hacker bist und mir drei Franken für den Kaffee bezahlen willst, die du gar nicht hast.

Weil die Transaktion erst im Nachhinein offiziell in einem Block gespeichert wird, kann viel schneller bezahlt werden – wenn auch nur vorläufig. Deshalb wählen Verkäufer diese Art der Bezahlung auch nur aus, wenn es sich um kleine Beträge handelt. Bei grossen Geschäften wird meistens verlangt, dass die Transaktion von einer Full Node geprüft und in einem Block gesichert wird.

Können Sie noch einmal erklären, auf welche Weise Miner Geld für ihre Arbeit erhalten? Die scheinen doch sehr wichtig für das Funktionieren der Blockchain zu sein.
Die Miner erhalten Bitocins aus zwei verschiedenen Quellen. Sobald ein Miner einen Block berechnet hat und der Block als nächst-gültiger an die Kette gereiht wird, steht ihm eine sogenannte Coin-Base-Transaktion zu. In diese Transaktion kann der Miner seinen eigenen public key einfügen und erhält 12.5 BTC (Stand heute), sobald sein Block akzeptiert wurde.

Diese Bitcoins werden neu generiert. Deshalb spricht man von Minern. Der Miner kann den so erhaltenen Output wieder als Input bei neuen Transaktion verwenden. Die ganze Blockchain ist somit auf diese ersten Coin-Base-Transaktionen zurückführbar.

Weshalb erhält ein Miner nach heutigem Stand 12.5 BTC? Verändert sich dieser Wert?
Ja. Bitcoin wurde 2008 ins Leben gerufen. Der angebliche Erfinder, Satoshi Nakomoto, wollte aus der Kryptowährung eine knappe Ressource machen. Deshalb halbiert sich der Wert für einen neuen Block alle vier Jahre oder für alle 210`000 Blocks. Am Anfang waren es 50 BTC, ab 2012 25 BTC und ab letztem Sommer sind es nun 12.5 BTC. Etwa im Jahr 2140 wird der Wert für einen Block auf 0 BTC geschrumpft sein. Dann haben die Miner alle 21 Millionen BTC geschöpft.

Weil die Arbeit der Miner unerlässlich ist für die Blockchain, muss es für die Miner noch einen anderen Anreiz geben: Transaktionsgebühren.

Jeder, der eine Transaktion in den Live Pool stellt, kann den Minern BTC für ihre Arbeit bezahlen. Dafür muss der Input grösser sein als der Output. Das übrig gebliebene Geld kann der Miner dann seinem public key zuweisen. Jedem Händler in der Bitcoin-Blockchain steht offen, ob er Transaktionsgebühren zahlen will oder nicht.

Und je mehr man zahlt, desto schneller wird die Transaktion verarbeitet?
Das ist der Anreiz für die Miner, ja. Sie kümmern sich natürlich zuerst um diejenigen Transaktionen, die viele Gebühren versprechen. Einen solchen Marktplatz für Transaktionen zu schaffen, war damals die Intention des Erfinders. Er hat aber wohl nicht damit gerechnet, dass die Transaktionsgebühren so schnell wachsen würden. Heute streitet sich die Bitcoin-Community auf jeden Fall ausgiebig darüber, welche Methode die beste sei, um dieses Problem in den Griff zu kriegen.

Keine Lösung dieser Problematik ist vermutlich die einfache Vergrösserung der Blöcke. In diesem Zusammenhang ist es spannend zu beobachten wie die gesamte Bitcoin Community solche Governance-Themen angeht.

Christian Di Giorgio ist Technology Advisor der Swisscom. Der studierte Informatiker und Betriebswirtschafter unterstützt Grossunternehmen bei der Entwicklung von ICT-Lösungen.

Am 13. Juni diskutieren wir mit weiteren versierten Spezialisten und hochkarätigen Visionären über die Chancen, die uns diese Technologie bietet. Jetzt anmelden!