Corda — open source blockchain voor bedrijven

Corda is een gedistribueerd grootboek voor het opslaan, beheren en synchroniseren van financiële verplichtingen tussen verschillende financiële instellingen.
Corda — open source blockchain voor bedrijven
Corda heeft voldoende goede documentatie met video-colleges, die je kunt vinden hier. Ik zal proberen kort uit te leggen hoe Corda intern is opgebouwd.

Laten we de belangrijkste kenmerken van Corda en zijn uniekheid ten opzichte van andere blockchain-technologieën bekijken:

  • Corda heeft geen eigen cryptocurrency.
  • Corda maakt geen gebruik van het mining-concept en het systeem van Proof-of-Work.
  • Data wordt alleen overgedragen tussen de deelnemers van de transactie/contract. Er is geen wereldwijde broadcasting naar alle knooppunten in het netwerk.
  • Er is geen centrale controller die alle transacties beheert.
  • Corda ondersteunt verschillende consensusmechanismen.
  • Consensus wordt bereikt tussen de deelnemers op het niveau van een afzonderlijke overeenkomst/contract, en niet op systeemniveau.
  • Een transactie wordt alleen bevestigd door de deelnemers die hiermee te maken hebben.
  • Corda biedt een directe link tussen formele juridische taal en de code van smart contracts.

Het grootboek

Het begrip grootboek in Corda is subjectief. Er is geen enkel centraal gegevensopslag. In plaats daarvan onderhoudt elk knooppunt een afzonderlijke database van de feiten die het kent.

Stel je bijvoorbeeld een netwerk van 5 knooppunten voor, waarbij de cirkel een feit is dat bekend is bij het knooppunt.

Corda — open source blockchain voor bedrijven

Zoals we zien, weten Ed, Carl en Demi van feit 3, terwijl Alice en Bob er niet eens van op de hoogte zijn. Corda garandeert het behoud van gemeenschappelijke feiten in de database van elk knooppunt, waarbij de gegevens identiek zullen zijn.

Toestanden

Een toestand is een onveranderlijk object dat een feit vertegenwoordigt dat op een bepaald moment bekend is bij een of meer knooppunten in het netwerk.

Toestanden kunnen willekeurige gegevens opslaan, zoals aandelen, obligaties, leningen, identificatie-informatie.

Bijvoorbeeld, de volgende toestand vertegenwoordigt een IOU - een overeenkomst dat Alice een bedrag X aan Bob verschuldigd is:

Corda — open source blockchain voor bedrijven
De levenscyclus van een feit in de loop van de tijd wordt weergegeven door een reeks toestanden. Wanneer het huidige toestand moet worden bijgewerkt, creëren we een nieuwe en merken we de huidige als historisch (historic).

Corda — open source blockchain voor bedrijven

Transacties

Transacties zijn voorstellen voor het bijwerken van het grootboek. Ze worden niet uitgezonden naar alle deelnemers van het grootboek en zijn alleen beschikbaar voor die deelnemers in het netwerk die het recht hebben om ze in te zien en te beheren.

Een transactie wordt aan het grootboek toegevoegd als deze:

  • contractueel geldig
  • ondertekend door alle noodzakelijke deelnemers
  • bevat geen dubbele uitgaven (double-spends)

Corda gebruikt het UTXO-model (unspent transaction output), waarbij elke toestand van het grootboek onveranderlijk is.

Bij het creëren van een transactie wordt de outputtoestand van de vorige transactie (op basis van hash en index) doorgegeven als invoer.

Corda — open source blockchain voor bedrijven
Levenscyclus van een transactie:

  • Creatie (Op dit moment is de transactie slechts een voorstel voor het bijwerken van het grootboek)
  • Handtekeningen verzamelen (De noodzakelijke deelnemers aan de transactie keuren het voorstel voor de update goed door handtekeningen toe te voegen aan de transactie)
  • Commit de transactie in het grootboek

Na toevoeging van de transactie aan het grootboek worden de invoerstanden gemarkeerd als historisch en kunnen ze niet meer worden gebruikt in toekomstige transacties.

Corda — open source blockchain voor bedrijven
Naast invoer- en uitgangstoestanden kan een transactie bevatten:

  • Commando's (parameter van de transactie die het doel van de transactie aangeeft)
  • Bijlagen (kalender van feestdagen, valuta-converter)
  • Tijdvensters (looptijd)
  • Notaris (Notary, speciale deelnemers aan het netwerk die transacties valideren)

Corda — open source blockchain voor bedrijven

Contracten

Wanneer we spreken over de geldigheid van een transactie, bedoelen we niet alleen de aanwezigheid van de benodigde handtekeningen, maar ook de geldigheid volgens het contract. Elke transactie is verbonden aan een contract dat deze accepteert en de invoer- en uitgangstoestanden valideert. Een transactie wordt als geldig beschouwd, alleen als al zijn toestanden geldig zijn.

Contracten in Corda worden geschreven in elke JVM-taal (bijvoorbeeld Java, Kotlin).

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

Moet overerven van de klasse Contract en de methode is het uitvoeren van tests op de verkregen configuratie met behulp vanoverschrijven. In geval van ongeldigheid van de transactie moet een uitzondering worden gegooid.

De validatie van transacties moet deterministisch zijn, dat wil zeggen dat het contract altijd de transactie moet accepteren of afwijzen. Om deze reden kan de geldigheid van de transactie niet afhankelijk zijn van tijd, willekeurige getallen, knooppuntbestanden in het netwerk, enz.

In Corda worden contracten uitgevoerd in de zogenaamde sandbox — een iets gewijzigde JVM die deterministische uitvoering van de contracten garandeert.

Stream

Om de communicatie tussen de knooppunten in het netwerk te automatiseren, zijn er flows toegevoegd.

Een flow is een reeks stappen die een knooppunt vertelt hoe een specifieke update van het grootboek moet worden uitgevoerd, op welk moment de transactie moet worden ondertekend en gevalideerd.

Corda — open source blockchain voor bedrijven

Soms zijn er uren of dagen nodig voordat een transactie door alle partijen is ondertekend en in het grootboek komt. Wat gebeurt er als je een knooppunt dat aan de transactie deelneemt, uitschakelt? Stromen hebben controlepunten waarop de status van de stroom in de database van het knooppunt wordt opgeslagen. Wanneer het knooppunt weer in het netwerk wordt hersteld, gaat het verder waar het was gestopt.

Consensus

Om in het grootboek te komen, moet de transactie twee consensusniveaus bereiken: over de geldigheid en over de uniciteit.

De beslissing over de geldigheid van de transactie wordt alleen genomen door de partijen die er direct bij betrokken zijn.

Notariële knooppunten controleren de transactie op uniciteit en voorkomen dubbele uitgaven.

Stel je voor dat Bob $100 heeft en hij wil $80 naar Charlie en $70 naar Dan sturen, met gebruik van dezelfde invoertoestand.

Corda — open source blockchain voor bedrijven

Zo'n truc laat Corda niet toe. Hoewel de transactie de validiteitstest doorstaat, zal de uniciteitstest falen.

Conclusie

Het Corda-platform, ontwikkeld door de blockchain-consortium R3, is geen puur voorbeeld van blockchain-technologie. Corda is een vrij gespecialiseerd hulpmiddel voor financiële instellingen.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster