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

Werbeanzeigen