â ist ein verteiltes Ledger zur Speicherung, Verwaltung und Synchronisierung von finanziellen Verpflichtungen zwischen verschiedenen Finanzorganisationen.

Corda hat eine ziemlich gute Dokumentation mit Video-Vorlesungen, die man finden kann . Ich werde versuchen, kurz zu beschreiben, wie Corda intern aufgebaut ist.
Lassen Sie uns die Hauptmerkmale von Corda und seine Einzigartigkeit im Vergleich zu anderen Blockchains betrachten:
- Corda hat keine eigene KryptowÀhrung.
- Corda verwendet kein Mining-Konzept und kein Proof-of-Work-System.
- Die DatenĂŒbertragung erfolgt nur zwischen den Teilnehmern der Transaktion / des Vertrags. Es gibt hier 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 eines einzelnen Agreements / Vertrags erreicht, und nicht auf Systemeebene.
- Eine Transaktion wird nur von denjenigen Teilnehmern bestÀtigt, die davon betroffen sind.
- Corda bietet eine direkte Verbindung zwischen der formalen menschlichen juristischen Sprache und dem Code der Smart Contracts.
Das Ledger
Der Begriff Ledger in Corda ist subjektiv. Es gibt kein zentrales Datenspeicher. Stattdessen hÀlt jeder Knoten eine separate Datenbank mit den ihm bekannten Fakten.
Stellen Sie sich beispielsweise ein Netzwerk aus 5 Knoten vor, wobei der Kreis ein dem Knoten bekanntes Faktum darstellt.

Wie wir sehen können, wissen Ed, Carl und Demi von Fakt 3, wÀhrend Alice und Bob nichts davon wissen. Corda gewÀhrleistet, dass gemeinsame Fakten in die Datenbank jedes Knotens aufgenommen werden, und die Daten identisch sein werden.
ZustÀnde
Ein Zustand ist ein unverÀnderliches Objekt, das ein Faktum darstellt, das einem oder mehreren Knoten im Netzwerk zu einem bestimmten Zeitpunkt bekannt ist.
ZustÀnde können beliebige Daten speichern, beispielsweise Aktien, Anleihen, Kredite oder Identifikationsinformationen.
Zum Beispiel stellt der folgende Zustand ein IOU dar â eine Vereinbarung, dass Alice Bob einen Betrag X schuldet:

Der Lebenszyklus eines Faktums ĂŒber die Zeit wird durch eine Sequenz von ZustĂ€nden reprĂ€sentiert. Wenn es erforderlich ist, den aktuellen Zustand zu aktualisieren, erstellen wir einen neuen und markieren den aktuellen als historisch.

Transaktionen
Transaktionen sind VorschlĂ€ge zur Aktualisierung des Ledgers. Sie werden nicht an alle Teilnehmer des Ledgers ĂŒbertragen und sind nur fĂŒr diejenigen Teilnehmer des Netzwerks zugĂ€nglich, die das rechtliche Recht haben, sie einzusehen und zu verwalten.
Eine Transaktion wird dem Ledger hinzugefĂŒgt, wenn sie:
- vertraglich gĂŒltig
- von allen erforderlichen Teilnehmern unterzeichnet
- enthÀlt keine Doppelbuchungen (double-spends)
Corda verwendet das UTXO-Modell (unspent transaction output), wobei jeder Zustand des Ledgers unverÀnderlich ist.
Bei der Erstellung wird der Output-Zustand der vorherigen Transaktion (per Hash und Index) an die Eingabe der Transaktion ĂŒbergeben.

Lebenszyklus einer Transaktion:
- Erstellung (Derzeit ist die Transaktion nur ein Vorschlag zur Aktualisierung des Ledgers)
- Sammlung von Unterschriften (Die erforderlichen Teilnehmer der Transaktion genehmigen den Aktualisierungsvorschlag, indem sie ihre Unterschrift zur Transaktion hinzufĂŒgen)
- Commit der Transaktion in das Ledger
Nach der HinzufĂŒgung der Transaktion in das Ledger werden die Eingabewerte als historisch markiert und können in zukĂŒnftigen Transaktionen nicht mehr verwendet werden.

Neben den Eingabe- und AusgabezustÀnden kann die Transaktion Folgendes enthalten:
- Befehle (Parameter der Transaktion, die das Ziel der Transaktion angeben)
- Anlagen (Feiertagskalender, WĂ€hrungsumrechner)
- Zeitfenster (GĂŒltigkeitsdauer)
- Notar (Notary, spezielle Teilnehmer des Netzwerks, die Transaktionen validieren)

VertrÀge
Wenn wir von der GĂŒltigkeit einer Transaktion sprechen, meinen wir nicht nur das Vorhandensein der erforderlichen Unterschriften, sondern auch die GĂŒltigkeit gemÀà dem Vertrag. Jede Transaktion ist mit einem Vertrag verbunden, der sie akzeptiert und die Eingabe- und AusgabezustĂ€nde validiert. Eine Transaktion gilt nur dann als gĂŒltig, wenn alle ihre ZustĂ€nde gĂŒltig sind.
VertrÀge in Corda werden in jeder JVM-Sprache (z.B. Java, Kotlin) geschrieben.
class CommercialPaper : Contract {
override fun verify(tx: LedgerTransaction) {
TODO()
}
}
Muss von der Klasse Contract erben und die Methode verify. Bei UngĂŒltigkeit der Transaktion muss eine Ausnahme ausgelöst werden.
Die Validierung von Transaktionen muss deterministisch sein, d.h. der Vertrag muss die Transaktion immer entweder akzeptieren oder ablehnen. Aufgrund dessen kann die GĂŒltigkeit einer Transaktion nicht von Zeit, Zufallszahlen, Knoten-Dateien im Netzwerk usw. abhĂ€ngen.
In Corda werden VertrĂ€ge in einer sogenannten Sandbox ausgefĂŒhrt â einer etwas modifizierten JVM, die die deterministische AusfĂŒhrung von VertrĂ€gen garantiert.
Threads
Um die Kommunikation zwischen den Knoten des Netzwerks zu automatisieren, wurden Flows hinzugefĂŒgt.
Flow â eine Abfolge von Schritten, die dem Knoten mitteilen, wie ein bestimmtes Update des Ledgers durchgefĂŒhrt werden soll, zu welchem Zeitpunkt die Transaktion unterschrieben und validiert werden muss.

Manchmal dauern Stunden oder Tage, bis eine Transaktion von allen Parteien unterzeichnet und im Ledger erscheint. Was passiert, wenn man einen Knoten, der an der Transaktion beteiligt ist, trennt? Ströme haben Kontrollpunkte, an denen die ZustÀnde des Streams in die Datenbank des Knotens geschrieben werden. Beim Wiederherstellen des Knotens im Netzwerk setzt er seinen Betrieb von dem Punkt fort, an dem er gestoppt ist.
Konsens
Um ins Ledger zu gelangen, muss die Transaktion zwei Konsensen erreichen: ĂŒber die GĂŒltigkeit und ĂŒber die Einzigartigkeit.
Die Entscheidung ĂŒber die GĂŒltigkeit der Transaktion wird nur von den direkt daran beteiligten Parteien getroffen.
Notarielle Knoten ĂŒberprĂŒfen die Transaktion auf Einzigartigkeit und verhindern Doppel-Ausgaben.
Stellen wir uns vor, Bob hat 100 $ und möchte 80 $ an Charlie und 70 $ an Dan ĂŒberweisen und dabei denselben Eingangsstatus nutzen.

Ein solcher Trick lĂ€sst sich mit Corda nicht ausfĂŒhren. Obwohl die Transaktion den GĂŒltigkeitstest besteht, wird der Einzigartigkeitstest fehlschlagen.
Fazit
Die Corda-Plattform, die von dem Blockchain-Konsortium R3 entwickelt wurde, ist kein reines Beispiel fĂŒr die Nutzung der Blockchain-Technologie. Corda ist ein spezialisiertes Werkzeug fĂŒr Finanzorganisationen.
Quelle: habr.com
