Corda – ein Open-Source-Blockchain für Unternehmen

Corda ist ein verteiltes Ledger zur Speicherung, Verwaltung und Synchronisierung von finanziellen Verpflichtungen zwischen verschiedenen Finanzorganisationen.
Corda – ein Open-Source-Blockchain für Unternehmen
Corda verfügt über eine ausreichend gute Dokumentation mit Video-Vorlesungen, die man finden kann hier. Ich werde versuchen, kurz zu beschreiben, wie Corda intern aufgebaut ist.

Betrachten wir die wichtigsten Eigenschaften von Corda und seine Einzigartigkeit im Vergleich zu anderen Blockchains:

  • Corda hat keine eigene Kryptowährung.
  • Corda verwendet nicht das Konzept des Minings und das Proof-of-Work-System.
  • Die Datenübertragung erfolgt nur zwischen den Teilnehmern der Transaktion/ des Vertrags. Hier gibt es kein globales Broadcasting an alle Knoten im Netzwerk.
  • Es gibt keinen zentralen Controller, der alle Transaktionen verwaltet.
  • Corda unterstützt verschiedene Konsensmechanismen.
  • Der Konsens wird zwischen den Teilnehmern auf Ebene einzelner Vereinbarungen/Verträge erreicht, nicht auf Systemebene.
  • Eine Transaktion wird nur von den ihr zugehörigen Teilnehmern bestätigt.
  • Corda bietet eine direkte Verbindung zwischen formalem menschlichem Rechtssprache und dem Code der Smart Contracts.

Das Ledger

Das Konzept des Ledgers in Corda ist subjektiv. Es gibt kein zentrales Datenspeicher. Stattdessen unterstützt jeder Knoten eine separate Datenbank der ihm bekannten Fakten.

Stellen Sie sich beispielsweise ein Netzwerk aus 5 Knoten vor, in dem der Kreis ein dem Knoten bekannter Fakt ist.

Corda – ein Open-Source-Blockchain für Unternehmen

Wie wir sehen, kennen Ed, Carl und Demi den Fakt 3, während Alice und Bob nicht einmal davon wissen. Corda gewährleistet, dass die gemeinsamen Fakten in die Datenbank jedes Knotens aufgenommen werden, wobei die Daten identisch sind.

Zustände

Ein Zustand ist unveränderlich und stellt einen Fakt dar, der zu einem bestimmten Zeitpunkt einem oder mehreren Knoten im Netzwerk bekannt ist.

Zustände können beliebige Daten speichern, zum Beispiel Aktien, Anleihen, Kredite, Identifikationsinformationen.

Zum Beispiel stellt der folgende Zustand ein IOU dar – eine Vereinbarung, dass Alice Bob den Betrag X schuldet:

Corda – ein Open-Source-Blockchain für Unternehmen
Der Lebenszyklus eines Faktums über die Zeit wird durch eine Abfolge von Zuständen dargestellt. Wenn es notwendig ist, den aktuellen Zustand zu aktualisieren, erstellen wir einen neuen und kennzeichnen den aktuellen als historisch.

Corda – ein Open-Source-Blockchain für Unternehmen

Transaktionen

Transaktionen sind Vorschläge zur Aktualisierung des Ledgers. Sie werden nicht an alle Teilnehmer des Ledgers übertragen und sind nur für diejenigen Mitglieder des Netzwerks zugänglich, die das rechtliche Recht haben, sie anzusehen und zu verwalten.

Eine Transaktion wird dem Ledger hinzugefügt, wenn sie:

  • vertraglich gültig ist
  • von allen erforderlichen Teilnehmern unterzeichnet ist
  • keine doppelten Ausgaben (double spends) enthält

Corda verwendet das UTXO-Modell (unspent transaction output), in dem jeder Zustand des Ledgers unveränderlich ist.

Bei der Erstellung wird der Output-Zustand der vorherigen Transaktion (über Hash und Index) als Eingabe an die Transaktion übergeben.

Corda – ein Open-Source-Blockchain für Unternehmen
Lebenszyklus einer Transaktion:

  • Erstellung (Derzeit ist die Transaktion lediglich ein Vorschlag zur Aktualisierung des Ledgers)
  • Sammlung der Unterschriften (Die erforderlichen Teilnehmer der Transaktion genehmigen den Vorschlag zur Aktualisierung, indem sie ihre Unterschrift zur Transaktion hinzufügen)
  • Commit der Transaktion ins Ledger

Nachdem die Transaktion ins Ledger hinzugefügt wurde, werden die Eingangsbedingungen als historisch markiert und können in zukünftigen Transaktionen nicht mehr verwendet werden.

Corda – ein Open-Source-Blockchain für Unternehmen
Neben Eingangs- und Ausgangszuständen kann die Transaktion Folgendes enthalten:

  • Befehle (Parameter der Transaktion, die das Ziel der Transaktion angeben)
  • Anhänge (Kalender der Feiertage, Währungsumrechner)
  • Zeiträume (Gültigkeitsdauer)
  • Notar (Notary, spezielle Netzwerkteilnehmer, die Transaktionen validieren)

Corda – ein Open-Source-Blockchain für Unternehmen

Verträge

Wenn wir über die Gültigkeit einer Transaktion sprechen, meinen wir nicht nur die Notwendigkeit der erforderlichen Unterschriften, sondern auch die Gültigkeit im Vertrag. Jede Transaktion ist mit einem Vertrag verbunden, der diese annimmt und die Eingangs- und Ausgangszustände validiert. Eine Transaktion wird nur dann als gültig angesehen, wenn alle ihre Zustände gültig sind.

Verträge in Corda werden in jeder JVM-Sprache (z.B. Java, Kotlin) verfasst.

class CommercialPaper : Contract {
    override fun verify(tx: LedgerTransaction) {
        TODO()
    }
}

Es ist notwendig, von der Klasse Contract abzuleiten und die Methode verifyzu überschreiben. Bei Ungültigkeit der Transaktion sollte eine Ausnahme ausgelöst werden.

Die Validierung von Transaktionen muss deterministisch sein, d.h. der Vertrag muss eine Transaktion immer entweder akzeptieren oder ablehnen. Daher kann die Gültigkeit einer Transaktion nicht von der Zeit, Zufallszahlen, den Dateien des Netzwerknotens usw. abhängen.

In Corda werden Verträge in einer sogenannten Sandbox ausgeführt – einer leicht modifizierten JVM, die eine deterministische Ausführung der Verträge gewährleistet.

Ströme

Um die Kommunikation zwischen den Knoten im Netzwerk zu automatisieren, wurden Streams eingeführt.

Ein Stream ist eine Abfolge von Schritten, die dem Knoten mitteilt, wie ein bestimmtes Ledger-Update durchgeführt werden soll, wann eine Transaktion unterzeichnet und validiert werden muss.

Corda – ein Open-Source-Blockchain für Unternehmen

Manchmal dauert es Stunden oder Tage, bis eine Transaktion von allen Parteien unterzeichnet und im Ledger aufgezeichnet wird. Was passiert, wenn ein an der Transaktion beteiligter Knoten offline geht? Streams haben Kontrollpunkte, bei denen der Zustand des Streams in der Datenbank des Knotens gespeichert wird. Wenn der Knoten wieder ins Netzwerk integriert wird, setzt er den Prozess genau an der Stelle fort, an der er gestoppt hat.

Konsens

Um im Ledger erfasst zu werden, muss eine Transaktion zwei Konsens-Stufen erreichen: Validität und Einzigartigkeit.

Die Entscheidung über die Validität einer Transaktion wird nur von den direkt beteiligten Parteien getroffen.

Notarielles Knoten überprüfen die Transaktion auf Einzigartigkeit und verhindern doppelte Ausgaben.

Stellen wir uns vor, Bob hat 100 $ und möchte 80 $ an Charlie und 70 $ an Dan überweisen, wobei er denselben Input-Zustand verwendet.

Corda – ein Open-Source-Blockchain für Unternehmen

So einen Trick würde Corda nicht zulassen. Obwohl die Transaktion die Validitätsprüfung besteht, würde die Überprüfung auf Einzigartigkeit fehlschlagen.

Fazit

Die Corda-Plattform, entwickelt von dem Blockchain-Konsortium R3, stellt kein klassisches Beispiel für die Blockchain-Technologie dar. Corda ist ein spezialisiertes Werkzeug für Finanzinstitute.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster