Was leistet die Blockchain-Technologie für Software-Entwickler?

Für Software-Entwickler sind Datenbanken das tägliche Brot und genau deshalb ist auch die Blockchain für Entwickler von grossem Interesse. Sie stellt nämlich einfach eine Datenbank dar, die aus aneinandergehängten Blöcken von Daten besteht. Gespeichert wird die Blockchain auf vielen vernetzten Computern oder Knoten und zwar ohne zentrale Verwaltung. Wie das möglich ist und warum das Sinn macht, erklären wir in diesem Blogbeitrag.

Blockchain – was ist das?
Vom Standpunkt eines Nutzers ist eine Blockchain eine Datenbank, die abgefragt und unter festgelegten Bedingungen erweitert werden kann. Der springende Punkt ist, dass keine zentrale Kontrolle erforderlich ist, damit sich die Nutzer auf eine von allen akzeptierte Version der Daten einigen können. Diese Fähigkeit der Blockchain stellt die wesentliche Neuerung dieser Technologie dar.

Anwendungen der Blockchain
Die bekannteste Anwendung ist die Buchführung für digitale Werteinheiten einer Kryptowährung. Für den Zugang zu einem Konto ist eine kryptografische Sicherung in der Form einer digitalen Signatur vorgesehen. Heute stehen aber auch Blockchains für sogenannte Smart Contracts zur Verfügung. Das sind Programme zur Ausführung von Vereinbarungen zwischen Nutzern.

Wie funktioniert eine Blockchain?
Die neuen Einträge werden von allen Nutzern an möglichst viele Knoten versandt. Für die Knoten besteht ein wirtschaftlicher Anreiz, aus den neuen Daten einen Block zu bilden und an die Blockchain anzufügen, denn dafür erhält der Knoten digitale Werteinheiten. Wie wird aber der Knoten ausgewählt, der den nächsten Block anfügen darf?

Die Methode dafür ist das Konsensverfahren, für das es verschiedene Möglichkeiten gibt. Im Proof-of-work Verfahren wird derjenige Knoten ausgewählt, der aufwendige Rechenoperationen als erster durchgeführt hat. Im Bitcoin-System handelt es sich dabei um das Finden einer Zusatzzahl zu den Daten im Block, mit der sich ein hinreichend kleiner Hashwert des gesamten Blocks ergibt. Dieses Problem lässt sich nur durch das Durchprobieren vieler solcher Zusatzzahlen lösen.

Dieses Verfahren ist logischerweise sehr energieintensiv. Eine effizientere Alternative ist das Proof-of-Stake Verfahren, in dem ein hinreichend grosses Guthaben an digitalen Werteinheiten für das Recht am nächsten Block wesentlich ist.

Die Blockchain von Algorand bietet eine elegante Version des Proof-of-Stake, indem es eine ausgewählte Anzahl von Nutzern über den nächsten Block abstimmen lässt. Die Auswahl stützt sich auf fortgeschrittene Konzepte der Kryptografie wie Verifiable Random Functions.

Was ist ein Smart Contract?
In dieser Technologie wird auf einer Blockchain Programmcode gespeichert. Ein Smart Contract ist also ein Programm, das unveränderbar auf einer Blockchain gespeichert wird und Funktionen einer Anwendung umsetzt.

Eine Smart Contract Anwendung
Heute schon können wir annehmen, dass der Bordcomputer eines Autos mit dem Internet verbunden ist. Ein Smart  Contract kann dann festlegen, dass der Motor eines geleasten Wagens nur dann vom Bordcomputer entsperrt wird,  wenn zur festgelegten Zeit die Leasingrate bezahlt wurde. Der Smart Contract wird also einmal im Monat ausgeführt,  lädt die Kontodaten von der API einer Bank oder auch von einer anderen Blockchain und testet diese Vereinbarung. Weder der Leasingnehmer noch der Eigentümer des Autos können den einmal vereinbarten Smart Contract löschen oder verändern. Nur durch die festgelegte Bezahlung kann das Auto betrieben werden.

Vorteile einer Blockchain
Die Daten sind verteilt gespeichert und damit gibt es keinen single point of failure, von dessen Funktionieren die Datenbank abhängt. Es wäre beispielsweise sehr schwierig, das Bitcoin-System offline gehen zu lassen. Für den Wert von Bitcoin ist diese Eigenschaft wesentlich.

Nachteile einer Blockchain
Zumindest mit dem Proof-of-work Verfahren sind hoher Rechenaufwand und damit ein hoher Energieverbrauch verbunden. Die verteilte Speicherung verbraucht Speichermedien, was durch die Funktionalität der Blockchain in einer bestimmten Anwendung gerechtfertigt werden muss. Gerade für Smart Contracts sind auch die verfügbaren Rechenkapazitäten wesentlich, was schon im Fall der Cryptokitties im Ethereum-System zu Problemen geführt hat. Schliesslich ergibt sich aus der Struktur der Blockchain, dass eine Mehrheit der Nutzer sich korrekt verhalten muss. Das wird oft genug eine vernünftige Annahme sein, muss aber für jede Anwendung geprüft werden.

 

Beitragsbild: https://unsplash.com/de/fotos/eine-gruppe-von-wurfeln-die-sich-auf-einer-schwarzen-oberflache-befinden-T9rKvI3N0NM

Beitrag teilen

Fabian Schärli

Fabian Schärli ist Test Automation Engineer bei der Luzerner Kantonalbank AG und bloggt aus dem Unterricht des CAS Modern Software Engineering & Development.

Alle Beiträge ansehen von Fabian Schärli →

Schreibe einen Kommentar