Die Use Cases für private Blockchains sind umfangreich. Angefangen von der Prozesstransparenz für Kunden und Geschäftspartner über die Nachverfolgbarkeit von digitalen und physischen Gütern, über die Revisionssicherheit bis hin zur Möglichkeit für Read-only-Zugriffe von Auditoren kann eine Blockchain sinnvoll – und völlig ohne Hype – eingesetzt werden. Der wichtige Aspekt hierbei ist, dass dies alles ohne eine zentralisierte Stelle und damit vollständig dezentral funktioniert. Das Nachdenken darüber lohnt sich in jedem Fall.
Kleines Blockchain 1×1
Bitcoin und Ethereum gehören wohl mit zu den zwei bekanntesten öffentlichen Blockchains. Vom Entwickler bis hin zur Geschäftsführung ist der Begriff Bitcoin geläufig, der Hype in den Medien durch starken Kursanstieg und -abfall ist sehr hoch. Doch oftmals fehlt das Wissen, was genau eigentlich hinter Bitcoin, Ethereum und Co. steckt: die Blockchain als Basistechnologie.
Bitcoin und Ethereum haben einige Gemeinsamkeiten. Beide sind öffentliche Blockchains. Das bedeutet, dass jeder am Netzwerk partizipieren kann. Durch die Natur der Blockchain ist das Netzwerk vollständig dezentral aufgebaut. Das heißt, es gibt keinen Masterserver, zu dem sich alle verbinden, und es muss auch vorab kein Account angelegt werden. Die Teilnahme findet anonym statt. Über einen Peer-to-Peer-Prozess finden sich die Nodes untereinander selbstständig. Fällt der eine oder mehrere Nodes aus, finden sich die noch laufenden Nodes über den gleichen Prozess wieder.
Eine weitere Gemeinsamkeit ist, in welcher Art und Weise neue Blöcke zur Verkettung generiert werden. Die beiden Blockchains arbeiten nach dem sogenannten Proof-of-Work-Prinzip. Bei Ethereum wird im Schnitt alle 15 Sekunden ein neuer Block generiert, bei Bitcoin alle 10-15 Minuten. Innerhalb eines Blocks befinden sich sogenannte Transaktionen. Am Beispiel von Bitcoin sind dies – etwas vereinfacht – die Überweisungen der Währung: „Konto A sendet an Konto B 0,5 Bitcoin“.
Die eigentliche Krux an der Sache ist, wie der nächste Block generiert wird. Hier kommt der Begriff Mining ins Spiel. Dahinter verbirgt sich nicht, wie man vielleicht vermutet, die Extraktion einer Währung aus dem Netzwerk, sondern vielmehr die Lösung eines kryptografischen Rätsels, beispielsweise in Form der Findung eines Hashs nach bestimmten Regeln. Im Falle von Bitcoin wäre dies, dass der Hash mit einer bestimmten Anzahl an Nullen beginnt. Hier entsteht auch das bekannte Problem vom Mining: der sehr hohe Stromverbrauch, um dieses Rätsel zu lösen. Laut dem Bitcoin Energy Consumption Index werden dazu aktuell ca. 61 TWh eingesetzt. Zum Vergleich: Im Jahr 2014 lag der Endenergieverbrauch von Berlin bei rund 64 TWh.
Die private Blockchain im Businessumfeld
Ist das wirklich das, was wir im B2B-Umfeld wollen? Sicherlich nicht. Zum einen wollen wir in einem B2B-Umfeld in der Regel keine öffentliche Blockchain betreiben, an der jeder anonym teilnehmen kann. Zum anderen wollen wir kein Proof-of-Work Mining zur Blockgenerierung nutzen. Bei einem Netzwerk mit bekannten Teilnehmern können alternative Algorithmen eingesetzt werden. Für dieses Vorgehen eignen sich private Blockchains (Permissioned Blockchains), betrieben auf eigener Hardware (bspw. im eigenen Rechenzentrum oder in einer Cloud VM) mit vertraglich geregelten Teilnehmern.
Bei privaten Blockchains können wir nicht nur bei der Blockgenerierung bestimmen, wie diese stattfindet, sondern auch wie neue Teilnehmer in das Netzwerk integriert werden. Während bei öffentlichen Blockchains jeder anonymisiert teilnehmen kann, kann bei einer privaten Blockchain sehr genau bestimmt werden, wer die Teilnehmer eines Netzwerks sein dürfen und wie sie integriert werden können. Beispielsweise ist es möglich, dass ein bestimmter Node im Netzwerk neue Teilnehmer direkt aufnehmen kann. Ein Fall wäre hier, wenn ein Konsortium eine Blockchain aufbauen möchte. Jeder interessierte Marktteilnehmer muss einen Vertrag mit dem Konsortium abschließen, das dann wiederum den Teilnehmer direkt in das Blockchain-Netzwerk aufnehmen kann. Ein anderes Modell wäre, dass jeder Node einen neuen Teilnehmer vorschlagen und jeder bereits im Netzwerk bestehende Teilnehmer diesen Vorschlag annehmen oder ablehnen kann. Je nach Modell könnte z.B. eine zweidrittel- oder achtzigprozentige Mehrheit zur Aufnahme des neuen Teilnehmers ausreichen.
Microservices & APIs Track auf der BASTA! 2018
Und wo läuft der Code?
Bisher haben wir zwar von der Erzeugung von Blöcken und den darin enthaltenen Transaktionen gesprochen, aber noch nicht, wer diese Transaktionen verarbeitet – also Code basierend darauf ausführt. Code dieser Art wird in der Regel Smart Contract genannt oder je nach Blockchain-Technologie auch Chaincode. Eine generelle Aussage hierfür existiert nicht, da dies eine Implementierungssache der jeweiligen Blockchain-Technologie ist. Grundsätzlich ist ein Smart Contract eine Funktion, die auf der Blockchain aufgerufen werden kann. Jeder Smart Contract ist unter einer bestimmten Adresse (die je nach Blockchain-Technologie anders aufgebaut ist) erreichbar, kann Daten entgegennehmen, speichern und ein Ergebnis liefern.
Beim Beispiel Ethereum wird der Code selbst ebenfalls über eine Transaktion in der Blockchain hinterlegt. Der Code wird somit ein unveränderlicher Teil der Blockchain. Er wird in der Programmiersprache Solidity entwickelt und in der Ethereum VM ausgeführt. Hier muss man sich vor dem ersten Deployment des Codes Gedanken machen, nach welchem Modell er aktualisiert werden kann. Auch dieses Modell und dessen Änderungsregeln, die typischerweise aus mehreren verbundenen Smart Contracts bestehen, müssen im Code hinterlegt werden.
Anders funktioniert zum Beispiel die Blockchain-Technologie Tendermint. Sie bietet keine eigene VM, sondern eine Kommunikationsschnittstelle, bspw. über GRPC, an. Diese Schnittstelle kann von verschiedenen Programmiersprachen angesprochen werden, bspw. auch mit .NET-Code. Das bedeutet, dass wir in diesem Fall unsere Smart Contracts mit .NET (Core) implementieren können und er Side by Side zur eigentlichen Blockchain läuft, damit veränderbar und kein unveränderlicher Teil der Blockchain ist. Wichtig ist hier, dass zu jedem Zeitpunkt auf jedem Node der gleiche Code ausgeführt wird, da sonst unterschiedliche Hashs generiert werden würden, was zum Ablehnen eines Blocks führen kann.
Wir sehen also, dass wir mit unterschiedlichen Blockchain-Technologien viele Möglichkeiten haben, wie wir eine Blockchain für B2B Use Cases implementieren und benutzen können: weniger Technologiehype, mehr sinnvolle Zukunftstechnologie, bei einer sehr großen Bandbreite praktischer Einsatzmöglichkeiten.
Im Rahmen der BASTA! 2018 haben Sie die Möglichkeit, durch die Sessions und den Ganztagesworkshop von Ingo Rammer und Manuel Rauber weitere theoretische und technische Eindrücke zu erhalten, und zu lernen, wie Sie Ihr erstes privates Blockchain-Netzwerk konfigurieren und betreiben und Ihre ersten Smart Contracts implementieren können.