Corda ist ein verteiltes Hauptbuch zum Speichern, Verwalten und Synchronisieren von finanziellen Verpflichtungen zwischen verschiedenen Finanzinstituten.

Corda hat eine ziemlich gute Dokumentation mit Videovorträgen, die
hier zu finden
sind . Ich werde versuchen, kurz zu beschreiben, wie Corda im Inneren aufgebaut ist.
Betrachten Sie die Hauptmerkmale von Corda und seine Einzigartigkeit unter anderen Blockchains:
- Corda hat keine eigene Kryptowährung.
- Corda verwendet das Mining-Konzept und das Proof-of-Work-System nicht.
- Die Datenübertragung erfolgt nur zwischen Teilnehmern der Transaktion / des Vertrags. Es gibt keine globale Übertragung an alle Netzwerkknoten.
- Es gibt keine zentrale Steuerung, die alle Transaktionen verwaltet.
- Corda unterstützt verschiedene Konsensmechanismen.
- Ein Konsens wird zwischen den Teilnehmern auf der Ebene einer separaten Vereinbarung / eines separaten Vertrags und nicht auf der Ebene des gesamten Systems erzielt.
- Eine Transaktion wird nur von den damit verbundenen Teilnehmern bestätigt.
- Corda bietet eine direkte Verbindung zwischen der formalen menschlichen Rechtssprache und dem intelligenten Vertragscode.
Das Hauptbuch
Das Konzept des Hauptbuchs in Corda ist subjektiv. Es gibt kein einziges zentrales Data Warehouse. Stattdessen unterhält jeder Knoten eine separate Datenbank mit ihm bekannten Fakten.
Stellen Sie sich zum Beispiel ein Netzwerk von 5 Knoten vor, bei dem der Kreis eine dem Knoten bekannte Tatsache ist.

Wie wir sehen können, wissen Ed, Carl und Demi über Fakt 3 Bescheid, und Alice und Bob verdächtigen ihn nicht einmal. Corda garantiert die Aufbewahrung allgemeiner Fakten in der Datenbank jedes Knotens, und die Daten sind identisch.
Staaten
Ein Zustand ist ein
unveränderliches Objekt, eine Tatsache, die einem oder mehreren Netzwerkknoten zu einem bestimmten Zeitpunkt bekannt ist.
Staaten können beliebige Daten speichern, zum Beispiel Aktien, Anleihen, Kredite, Identifikationsinformationen.
Der folgende Status ist beispielsweise eine IOU - eine Vereinbarung, dass Alice Bob den Betrag von X schuldet:
Der Lebenszyklus einer Tatsache über die Zeit wird durch eine Folge von Zuständen dargestellt. Wenn der aktuelle Status aktualisiert werden muss, erstellen wir einen neuen und markieren den aktuellen Status als historisch.

Transaktionen
Transaktionen sind Vorschläge zur Aktualisierung von Ledger-a. Sie werden nicht an alle Hauptbuchteilnehmer gesendet und stehen nur den Netzwerkmitgliedern zur Verfügung, die das gesetzliche Recht haben, sie anzuzeigen und zu verwalten.
Eine Transaktion wird dem Hauptbuch hinzugefügt, wenn:
- Vertrag gültig
- von allen notwendigen Teilnehmern unterschrieben
- enthält keine doppelten Abfälle (Doppelausgaben)
Corda verwendet das UTXO-Modell (nicht ausgegebene Transaktionsausgabe), bei dem jeder Ledger-Status unveränderlich ist.
Beim Erstellen einer Transaktion wird der Eingabestatus der vorherigen Transaktion (nach Hash und Index) an die Eingabe übertragen.
Transaktionslebenszyklus:
- Erstellung (Im Moment ist die Transaktion nur ein Vorschlag zur Aktualisierung von Ledger-a)
- Signatursammlung (Erforderliche Teilnehmer an der Transaktion genehmigen den Aktualisierungsvorschlag, indem sie der Transaktion eine Signatur hinzufügen.)
- Commit im Ledger übertragen
Nach dem Hinzufügen einer Transaktion zum Hauptbuch werden die Eingabestatus als historisch markiert und können nicht in zukünftigen Transaktionen verwendet werden.
Zusätzlich zu den Eingabe- und Ausgabestatus kann eine Transaktion Folgendes enthalten:
- Befehle (Transaktionsparameter, der den Zweck der Transaktion angibt)
- Anhänge (Feiertagskalender, Währungsrechner)
- Temporäre Fenster (Gültigkeitsdauer)
- Notar (Notar, spezielle Netzwerkmitglieder, Validierung von Transaktionen)
Verträge
Wenn wir über die Gültigkeit von Transaktionen sprechen, meinen wir nicht nur die Verfügbarkeit der erforderlichen Signaturen, sondern auch die Gültigkeit des Vertrags. Jede Transaktion ist einem Vertrag zugeordnet, der sie akzeptiert und Eingabe- und Ausgabestatus überprüft. Eine Transaktion gilt nur dann als gültig, wenn alle ihre Zustände gültig sind.
Verträge in Corda werden in einer beliebigen JVM-Sprache (z. B. Java, Kotlin) geschrieben.
class CommercialPaper : Contract { override fun verify(tx: LedgerTransaction) { TODO() } }
Sie müssen von der
Contract- Klasse erben und die
Überprüfungsmethode überschreiben. Bei ungültiger Validierung wird eine Ausnahme ausgelöst.
Die Vadidierung von Transaktionen muss deterministisch sein, d.h. Der Vertrag muss die Transaktion immer entweder annehmen oder ablehnen. In diesem Zusammenhang kann die Gültigkeit einer Transaktion nicht von Zeit, Zufallszahlen, Hostdateien usw. abhängen.
Bei Corda werden Verträge in der sogenannten Sandbox ausgeführt, einer leicht modifizierten JVM, die eine deterministische Ausführung von Verträgen garantiert.
Streams
Um die Kommunikation von Hosts zu automatisieren, wurden Threads hinzugefügt.
Ein Stream ist eine Folge von Schritten, die dem Knoten mitteilen, wie eine bestimmte Ledger-Aktualisierung durchgeführt werden soll. Zu diesem Zeitpunkt muss die Transaktion signiert und validiert werden.

Manchmal dauert es Stunden, Tage, bis die Transaktion von allen Parteien unterzeichnet ist und im Hauptbuch landet. Was passiert, wenn Sie den an der Transaktion beteiligten Knoten trennen? Streams haben Haltepunkte, an denen der Status des Streams in die Knotendatenbank geschrieben wird. Wenn Sie einen Knoten im Netzwerk wiederherstellen, wird er an der Stelle fortgesetzt, an der er gestoppt wurde.
Konsens
Um in das Hauptbuch zu gelangen, muss eine Transaktion einen Konsens von 2 erreichen: Gültigkeit und Eindeutigkeit.
Die Entscheidung über die Gültigkeit einer Transaktion treffen nur die direkt beteiligten Parteien.
Notariell beglaubigte Knoten überprüfen die Transaktion auf Eindeutigkeit und verhindern doppelte Ausgaben.
Angenommen, Bob hat 100 US-Dollar und möchte 80 US-Dollar an Charlie und 70 US-Dollar an Dan mit demselben Eingabestatus überweisen.

Solch einen Trick lässt Corda nicht kurbeln. Obwohl die Transaktion eine Validierungsprüfung besteht, schlägt die Eindeutigkeitsprüfung fehl.
Fazit
Die vom Blockchain-Konsortium R3 entwickelte Corda-Plattform ist kein reines Beispiel für die Verwendung der Blockchain-Technologie. Corda ist ein hochspezialisiertes Tool für Finanzinstitute.