Corda — Open-Source-Blockchain fĂŒr Unternehmen

Corda — ist ein verteiltes Ledger zur Speicherung, Verwaltung und Synchronisierung von finanziellen Verpflichtungen zwischen verschiedenen Finanzorganisationen.
Corda — Open-Source-Blockchain fĂŒr Unternehmen
Corda hat eine ziemlich gute Dokumentation mit Video-Vorlesungen, die man finden kann hier. 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.

Corda — Open-Source-Blockchain fĂŒr Unternehmen

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:

Corda — Open-Source-Blockchain fĂŒr Unternehmen
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.

Corda — 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 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.

Corda — Open-Source-Blockchain fĂŒr Unternehmen
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.

Corda — Open-Source-Blockchain fĂŒr Unternehmen
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)

Corda — Open-Source-Blockchain fĂŒr Unternehmen

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.

Corda — Open-Source-Blockchain fĂŒr Unternehmen

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.

Corda — Open-Source-Blockchain fĂŒr Unternehmen

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

60GB SSD 8Gb DDR4