Was ist die Corda Blockchain?

Achtung: Corda ist momentan brandheiss! Wäre Corda eine heisse Suppe, wären momentan viele Menschen bereit, sich die Zunge zu verbrennen, um mehr Informationen darüber zu erhalten oder entsprechende Projekte umzusetzen.

Corda ist eine Open Source Blockchain Plattform basierend auf der Distributed Ledger Technology (DLT). Corda gehört zur dritten Blockchain Welle.

Eine private Blockchain

Weiss eigentlich mittlerweile jeder, was eine Blockchain ist? Falls nicht, bitte kurz die Einführung dazu lesen.

Corda ist eine Weiterentwicklung der ursprünglichen Blockchain für Bitcoins. Der Grundgedanke ist aber geblieben: In einem Netzwerk hat es verschiedene Teilnehmer (Englisch: peers oder nodes oder participants) und jeder Teilnehmer hat eine Buchhaltung über die getätigten Transaktionen. (Ich mag das Wort Buchhaltung mehr als Hauptbuch, obwohl das eigentlich treffender wäre für das englische Wort ledger. Schlussendlich könnte man auch Datenbank sagen, das ist schlussendlich nicht so relevant für das Verständnis).

Im Gegensatz zur Bitcoin Blockchain hat aber jeder Teilnehmer seine eigene Buchhaltung!

Es gilt nicht mehr das Prinzip, dass alle Transaktionen öffentlich sind und im gesamten Netz verteilt werden. Teilnehmer A kann Teilnehmer B Geld schicken, und nur diese beiden Nodes kennen dann diese Transaktionen.

Und besonders im Businessbereich, etwa bei Banken, ist die Privatsphäre das oberste Gut. Und Corda verspricht, diese Privatsphäre zu gewähren und zu schützen.

Zusammenarbeit mit Industriepartnern

Der grosse Vorteil von Corda: Es wurde von Grund auf für das Business konzipiert. Die dafür zuständige Firma R3 steht dazu im Kontakt mit über 200 Mitgliedern der Industrie, darunter Banken oder Wirtschaftsverbände.

Das Ziel von Corda ist es, komplexe Finanztransaktionen durchführen zu können. Der Austausch von Bitcoin zwischen A und B ist aus finanztechnischer Sicht nämlich eine einfache Transaktion. In einer Bank oder einer Versicherung müssen hunderte weitere Finanzinstrumente umgesetzt werden können.

Und wo werden die umgesetzt? Natürlich in Code, und dafür gibt es uns Programmierer 🙂

Die Programmierlogik wird dabei in sogenannte CorDapps gepflanzt.

Obwohl Corda von der traditionellen Blockchain inspiriert wurde, gibt es darin keine Kryptowährung. Corda geht noch viel weiter: Das Ziel ist es, jedes beliebige Finanzinstrument definieren und verwenden zu können.

Double Spending Problem wird durch Notare verhindert

Ein grosses Problem bei Blockchain Netzwerken ist das Double Spending Problem. In Corda sind die Lösung dazu sogeannte Notare. Dabei handelt es sich um einen weiteren Teilnehmer im Corda Blockchain Netzwerk – Dieser Teilnehmer kann aber mehrere Notare beinhalten.

Notare haben das Ziel, zu prüfen, dass bereits ausgegebenes Geld nicht noch einmal ausgegeben wird. Das wird technisch relativ einfach implementiert: Alle Transaktionen beziehungsweise jeder Geldbetrag wird in einer Liste gespeichert. Wenn der Geldbetrag schon einmal ausgegeben wurde, kann er nicht noch einmal ausgegeben werden.

Ja gut, das ist jetzt vielleicht ein bisschen arg fest vereinfacht erklärt (obwohl es natürlich Sinn macht). Für technische Details mache ich eventuell mal einen eigenen Blogeintrag.

Ein kleiner technischer Einblick in Corda

In Corda gibt es besonders drei technische Objekte, die von zentraler Relevanz sind:

  • States (welche in Transaktionen verwendet werden)
  • Contracts
  • Flows

Ein State ist dabei quasi ein Snapshot von einem beliebigen Objekt – etwa eines Kontos. Eine Transaktion ist dann die Überführung von einem Zustand (Input State) zu einem anderen (Output State). Wenn Person A also 100 Dollar an B zahlen will, wird eine Transaktion erstellt, bei der Person A im Input State 100 Dollar besitzt und im Output State diese an Person B übergeben werden.

Technisch isch ein State einfach eine Java… ähm ne warte, eine Kotlin Klasse mit Attributen, Gettern und Settern. Es können aber beliebige Attribute definiert werden, und genauso können beliebige finanzielle Produkte in Code erstellt werden.

Ein Contract beinhaltet Prüfungen, die eine Transaktion bestehen muss, damit diese valid ist. Wenn Person A 100 Dollar an Person B geben will, kann eine solche Prüfung etwa sein „Hat Person A 100 Dollar auf dem Konto?“ oder auch „Hat Person A überhaupt ein Konto bei uns?„. Die Prüfungen können beliebig eincodiert werden.

Ein Flow beschreibt den gesamten Transaktionsfluss. Wenn Person A Geld an Person B schicken will, muss Person A beziehungweise sein Node in der Blockchain eine Transaktion erzeugen und diese mit dem entsprechenden Contract prüfen lassen. Dann schickt Person A die Transaktion an Person B/Node B und B prüft die Transaktion ebenfalls. Erst wenn beide Teilnehmer die Transaktion erfolgreich validieren, wird diese ausgeführt und committed. Dieser Prozess wird in Corda als Flow implementiert.

Das folgende Bild verdeutlicht das Konzept des Flows. Generell muss ich sagen, dass das Lehrmaterial ausgezeichent ist (siehe Kapitel „Corda lernen“ unten) und mit vielen Bildern/Videos unterstützt wird.

Beispiel eines Flows

Das Bild kommt von dieser URL: https://docs.corda.net/key-concepts-flows.html

Kryptografische Highlights

Aus Sicht eines Kryptografens werden nicht allzu verrückte Techniken eingesetzt.

Ein wichtiger Teil sind Hashfunktionen. Sie wissen schon, dass sind diese Dinger, wo man irgendetwas reinquetschen kann und heraus kommt ein einzigartier Hash wie etwa der folgende:
7e716d0e702df0505fc72e2b89467910

Es wird so ziemlich alles verhasht, was man sich vorstellen kann. Die Transaktionen in der Buchführung eines Nodes werden natürlich auch miteinander verlinkt und unveränderbar (immutable) gemacht, ganz dem Konzept von Blockchains. Jede Transaktion erhält dann den Hash der vorhergehenden Transaktion – und nicht die Transaktion selber.

Das zweite grosse Konzept sind digitale Signaturen – Genau wie in anderen Blockchains. Wenn Person A Geld an Person B schicken will, muss A seine Transaktion signieren, damit B prüfen kann, dass die Transaktion wirklich von A kommt. Genauso wird B die Transaktion signieren, wenn diese erfolgreich validiert werden konnte.

Corda lernen

Corda ist in Kotlin geschrieben. Wer also Corda lernen möchte, der hat damit gleichzeitig eine schöne Motivation, um Kotlin zu lernen.

Ansonsten empfehlen ich jedem, der Corda lernen möchte, folgendes:

Für alle Personen empfehle ich das wirklich gut gemachte Webinar von R3, welches die Corda Konzepte erläutert:
https://r3.lessonly.com/path/5150-corda-key-concepts

Natürlich ist auch die offizielle Homepage und Referenz sehr empfehlenswert:
https://docs.corda.net/index.html

Auf der Corda Homepage kann ein Zertifikation über Corda erworben werden: https://www.corda.net/develop/index.html

Und Entwicklern, die ihre eigenen CorDapps entwickeln dürfen, sei das Bootcamp auf Youtube empfohlen:

Der Link mit der gesamten Playlist ist folgender:
https://www.youtube.com/playlist?list=PLi1PppB3-YrVq5Qy_RM9Qidq0eh-nL11N

Corda auf Stackoverflow (corda tag):
https://stackoverflow.com/questions/tagged/corda

Was ist das Double Spending Problem?

Das Double Spending / Doppelte Ausgeben Problem ist schnell erklärt. In einer Blockchain müssen alle Ledger’s, also Hauptbücher mit den getätigten Transaktionen, auf dem neuesten Stand sein.

Als Beispiel nehmen wir ein Distributed Ledger Netz, welches Immobilien verwaltet. Wir haben 100 Teilnehmer im Netz, welche alle ihren Ledger aktuell halten. Ist alles aktuell, ist das Netz konsistent.

Wenn nun Person A sein Haus verkauft, kann es je nach System eine Weile dauern, bis diese Information zu allen 100 Teilnehmern durchgedrungen ist.

Person A entscheidet sich nun, sein Haus namens Antoinette an Person B zu verkaufen. Nehmen wir an, es dauert 5 Minuten, bis alle Ledger die Information des Hauskaufs erhalten.

Kurz darauf entscheidet sich Person A dazu, das gleiche Haus Antoinette an Person C zu verkaufen.

Da noch nicht alle Ledger wissen, dass Antoinette nun Person B und nicht mehr Person A gehört, ist es durchaus in Ordnung, wenn einige Ledger akzeptieren, dass Person C dieses Haus kauft. Die Transaktion wird akzeptiert.

Natürlich wird es aber ein Problem, wenn schlussendlich beide Transaktionen in einem Ledger bekannt sind und Antoinette nun in einem Ledger bereits Person C gehört, die eintreffende Transaktion aber das Haus von Person A nach Person B transferrieren will.

Person A hat das System ausgetrickst und sein Haus zweimal verkauft – und so zu einem inkonsistenten Zustand geführt.

Diese Situation nennt man das Double Spending Problem.

Was ist die dritte Blockchain Welle?

Durch die Berühmtheit von Bitcoin ist auch das Thema Blockchain immer prägnanter geworden. Blockchain erlaubt uns die Verschiebung von Werten/Geld ohne einen Mittelsmann wie etwa eine Bank (siehe auch
Blockchain Einführung ). Der Transfer von Geld von einem Bankkonto zu einem anderen in einem anderen Land kann heutzutage bis zu fünf Mittelmänner involvieren, alle mit ihrer eigenen Verarbeitungszeit und Gebühren. Als Erweiterung der Blockchain kamen Smart Contract, welche es erlauben, komplexe Business Logik in diesen Transaktionen zu verwenden.

Mittlerweile sind wir bei der dritten Welle der Blockchain angekommen. Aber was ist die dritte Welle und was waren die zwei Wellen zuvor?

Einer der wichtigsten Vorteile von Blockchain ist dabei die tatsache, dass verhindert wird, dass die gleichen 10 Euros zweimal ausgegeben werden – das sogenannte Double Spending kann damit verhindert werden. (Siehe auch Was ist das Double Spending Problem? )

Viele Industrien sind bereits in vollen Zügen herauszufinden, wie sie von der Blockchain Technologie profitieren können. Denn wenn es soweit ist (was man nicht mit Sicherheit sagen kann) will niemand enden wie damals Nokia, die gedacht hat, dass Apple ja nur eine kleine Firma ist und ihnen niemals den Rang abkaufen wird.

Der Einfachheit halber werde ich im Folgenden nicht von Asset oder Wert oder Entities oder sonstwas reden. Stattdessen gehe ich davon aus, dass Person A Geld an Person B senden will.

Ich werde versuchen, in naher Zukunft den angeschnittenen Themen eine eigene Seite zu spendieren und diese im Detail zu erklären.

Die erste Blockchain Welle

Wie funktioniert Bitcoin?

Bitcoin hat eine Sammlung von Technologien zusammengebracht, damit verschiedene Partien Werte mittels einer digitalen Währung austauschen können. Diese digitale Währung wird auch Crypto Currency genannt, da sie eine enge Verbindung zu Kryptografie hat.

Bei Bitcoin tragen verschiedene Elemente dazu bei, dass Personen Geld austauschen können.

Ein sogenannter Distributed Ledger beziehungsweise Verteiltes Hauptbuch speichert alle Transaktionen und hält diese synchron in allen Kopien/Nodes/Knoten. Heisst auf Deutsch: Alle Transaktionen werden in einem Ledger / Hauptbuch (Buchhaltung lässt grüssen) niedergeschrieben. Von diesem Hauptbuch gibt es nun eine Kopie pro Knoten, und Knoten gibt es Tausende.

Die Knoten werden dabei von sogenannten Teilnehmern / Participants erstellt und verwaltet.

Wer mit dem Begriff Hauptbuch nichts anfangen kann stellt sich technisch einfach eine Datenbank vor.

Jeder Teilnehmer kennt dabei die Regeln, wie Transaktionen im Hauptbuch abgespeichert werden und hält sich daran.

Einmal geschriebene Einträge im Hauptbuch können nachträglich nicht mehr verändert werden und sind sogenannt immutable, also unveränderlich (Allein dieser Punkt wirft bereits Fragen auf, aber dazu später mehr).

Ein gemeinsamer Konsensus bei allen Teilnehmern darüber, wie das Hauptbuch schlussendlich gespeichert wird. Technisch wird dies als konsistent bezeichnet.

Ich werde im folgenden je nach Begriff das englische Wort verwenden, wenn ich denke, dass es Sinn macht.

Distributed Ledger Technology = DLT

DLT ist die moderne Beschreibung für Bitcoin oder Blockchain. Im Bitcoin Netzwerk hat jeder Teilnehmer eine Kopie des Hauptbuchs. In diesem Hauptbuch werden alle Transaktionen des Bitcoin Netzwerks gespeichert. Die Transaktionen in diesem Bitcoin Hauptbuch wurden dabei mit der entsprechenden Währung getätigt, in diesem Fall also Bitcoins.

Alle Transaktionen im Hauptbuch sind verknüpft mit den vergangenen Transaktionen und bilden so eine Kette von Blöcken aka Blockchain. Als Output bezeichnet an dann den aktuellen Stand des Hauptbuchs. In Bitcoin wird die Verknüpfung mittels einer Technologie namens UTXO = unspent transaction output gemacht. So wird sichergestellt, dass jeder Teilnehmer nicht nur den aktuellen Stand des Hauptbuchs sieht, sondern auch die offenen transaktionen, die zum zukünftigen validierten Stand führen.

Transaktionen per Scripting

Eine Transaktion ist die Verschiebung von Geld von einer Person zur anderen. Dabei ist es wichtig, dass sich beide Personen über die Details wie den Geldbetrag einig sind. Oder dass es sich tatsächlich um Person A und Person B handelt. Bitcoin macht dies durch eine einfache Scriptingsprache möglich.

Das Verhindern von Double Spending

Die grösste Herausforderung beim Austausch von Geld ohne einen Mittelsmann ist das Double Spending, bei dem dasselbe Geld für mehrere Zahlungen verwendet wird. In der Realität ist dies nicht möglich, da man für einen Starbucks Kaffee nur einmal zuviel Geld bezahlt und die 10 Euros dann weg sind. Digital kann dies durchaus geschehen.

Bitcoin verhinder das Double Spending mit einem Mechanismus, indem jeder Teilnehmer eine Kopie des Hauptbuchs besitzt und alle Teilnehmer zu einer Übereinstimmung kommen, wie das Hauptbuch momentan aussieht. Dies wird durch das schürfen oder mining möglich.

Lasst uns Gold schürfen!

Mining funktioniert folgendermassen: Wenn zu tätigende Transaktionen anstehen, werden diese den Minern (quasi Bergarbeiter) übermittelt. Miner sind Leute, die vom Blockchain Hype profitieren wollen und sich alle Grafikkarten unter den Nagel gerissen haben (da diese besonders schnell rechnen können), um eben damit zu schürfen.

Die Miner probieren nun, den nächstmöglichen Block in der Blockchain zu errechnen. Dies kann man als Lösen eines kryptografischen Rätsels betrachten, bei dem der Computer Unmengen von Rechnungen löst, bis eine gewisse Bedingung erfüllt ist. Das können alle Miner dieser Welt gleichzeitig machen, denn das Lösen dieses Rätsels benötigt eine gewisse Zeit und unglaublich viel Computerleistung (siehe https://www.bitcoinnews.ch/6809/bitcoin-verbraucht-strom-viel-strom/).

Sobals ein Miner das Rätsel gelöst hat veröffentlichen diese den neu gefundenen Block zusammen mit der Lösung des Rätsels. Die anderen Miner prüfen und akzeptieren diese Lösung und fügen dann die Transaktionen dem Hauptbuch hinzu. Der neue Block wird dabei mit dem Ende der Blockchain verknüpft.

Die Blöcke werden mit sogenannten Hashes verknüpft. Sie möchten wissen, was ein Hash ist? Einfach eine eindeutige Aneinanderreihung von Zahlen und Buchstaben, etwa so: 7ae26e64679abdftguife1e9b93a9e85

Da alle Blöcke einer Blockchain verknüpft sind ist es auch möglich, sich zum allerersten Block zu hangeln.

Wie gesagt braucht das Schürfen enorme Rechenpower (und auch sehr viel Energie). Für ihre Mühen werden die Miner mit Bitcoins belohnt – zumal dieser Vorgang ja notwendig ist, damit die Blockchain funktioniert.

Die zweite Blockchain Welle

Die Möglichkeit, mittels Bitcoin Geld ohne einen Mittelsmann zu transferieren, ist natürlich sagenhaft! Viele Firmen arbeiten genau als dieser Mittelsmann für grundsätzlich einfache Transaktionen wie das Verschieben von Geld von A nach B und können so horrende Zinsen verlangen. Durch einen Distributed Ledger ist das nicht mehr nötig.

Bitcoin hat aber auch einige Nachteile. Den enormen Energieverbrauch beim Schürfen von neuen Blöcken zum Beispiel. Oder dass mehr als nur „simples Geld“ ausgetauscht werden kann – also mehr als nur eine Zahl. In den Geschäfter arbeitet man meistens mit komplexen Objekten wie zum Beispiel einer Hypothek, bei der man mehr Attribute kennen muss als nur eine Zahl wie Startdatum, Enddatum, Halter der Hypothek, Zinssatz etc.

In Java ausgedrückt: Man will nicht nur einen Integer transferieren, sondern ein ganzes Objekt.

Aus diesem Nachteil ist eine neue Welle entstanden. Zu dieser Welle gehören etwa Ethereum oder IBM’s Fabric.

Die wichtigste Annforderung war dabei die Unterstützung komplexer Businesslogik. Dazu kommt oftmals noch die Notwendigkeit, dass das auszutauschende Objekt auf einer gesetzlichen Grundlage aufbauen und dies irgendwie abbilden muss.

Smart Contracts

Die zweite Welle von Blockchain Technologien baut mit Smart Contracts / Intelligente Verträge auf den Bitcoin Erungenschaften auf. Mit Smart Contracts ist es möglich, komplexe Logik in einer Transaktion zu verwenden.

In vielen Geschäftsfeldern wird der Vertrag als Grundlage einer Transaktion angesehen. So ist auch der Austausch von Geld ein Übereinkunft oder ein Vertrag zwischen A und B.

Eine wichtige Eigenschaft von Smart Contracts ist der Determinismus. Das bedeutet einfach, dass wenn man einen Algorithmus anschmeisst, dieser bei gleichem Input immer das selbe Resultat ausgibt. Ein Algorithmus, der „2 + 2 = 4“ berechnet, ist deterministisch. Ein Namensgenerator für Mädchen ist es nicht.

Die dritte Blockchain Welle

Auch wenn man mit der zweiten Welle nun komplexe Transaktionen ausführen kann hat auch sie ihre Herausforderungen.

Ein wichtiger Punkt ist die Privatsphäre. Wenn Person A Geld an Person B schickt, sollten nur A und B die genauen Details dieser Transaktion kennen. Wenn die Transaktion aber für alle einsehbar in jedem Hauptbuch gespeichert ist, ist dies nicht gegeben.

Ein weitere Kritikpunkt ist der Zeitpunkt, wann ein Block von den Minern als final angesehen wird. Wenn ein Miner ein Rätsel gelöst hat und den gefundenen Block veröffentlicht gibt es die Möglichkeit, dass dieser Block abgelehnt wird. Wenn eine Geschäftstransaktion über Blockchain ausgeführt werden soll, muss man sicher gehen können, dass diese auch ausgeführt wird. Ich möchte meinen Lohn nämlich jeden Monat erhalten und nicht zufälligerweise 😉

Ein weiterer wichtiger Punkt ist die Identität der beiden Personen. Person A oder Person B müssen als juristische Person erkannt und behandelt werden können.

Und schlussendlich noch die Skalierbarkeit. Wenn ein Bankprozess, wie etwa der Bezug von Bargeld von einem Bankautomaten, tatsächlich in der Blockchain gespeichert werden soll, werden das Milliarden von Transaktionen. Soviele Blöcke können die Miner gar nicht schürfen, zumal es auch eine Obergrenze für die Anzahl der zu schürfenden Blöcken gibt.

Ein Beispiel für eine Blockchain der dritten Welle ist Corda.

Der Weg der Blockchain in das Daily Business

Soweit mal die Grundlagen zum Stand der Blockchain per Anfang 2019. Es ist wirklich interessant, wie rasant sich das Thema entwickelt. Verschiedene Partien arbeiten hart daran, Geschäftsfelder für Blockchain zu finden.

Viele Personen belächeln Blockchain als Hype, der bald wieder zu Ende sein wird. Meiner Meinung nach wird sich die Blockchain weiterentwickeln und vielleicht nicht jeden der heutigen Geschäftsprozess ablösen, aber doch einen wichtigen Platz für gewisse Anwendungsfälle erhalten.

Lasst uns sehen, wohin der Blockchain Zug uns führen wird – Und lasst uns auch sicherstellen, dass wir diesen Zug nicht verpassen!