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 organisaties.
Corda - open source blockchain voor bedrijven
Corda heeft behoorlijk goede documentatie met videocolleges die te vinden zijn hier. Ik zal proberen kort te beschrijven hoe Corda van binnen werkt.

Laten we eens kijken naar de belangrijkste kenmerken van Corda en het unieke karakter ervan ten opzichte van andere blockchains:

  • Corda heeft geen eigen cryptocurrency.
  • Corda maakt geen gebruik van het concept van mining en het Proof-of-Work-systeem.
  • Gegevensoverdracht vindt alleen plaats tussen partijen bij de transactie/overeenkomst. Er is geen wereldwijde uitzending naar alle netwerkknooppunten.
  • Er is geen centrale controller die alle transacties beheert.
  • Corda ondersteunt verschillende consensusmechanismen.
  • Consensus wordt bereikt tussen deelnemers op het niveau van een individuele overeenkomst/contract, en niet op het niveau van het hele systeem.
  • Een transactie wordt alleen bevestigd door de daaraan gerelateerde deelnemers.
  • Corda biedt een directe verbinding tussen formele menselijke juridische taal en slimme contractcode.

Het grootboek

Het concept van grootboek in Corda is subjectief. Er is niet één centraal gegevensarchief. In plaats daarvan onderhoudt elk knooppunt een afzonderlijke database met bekende feiten.

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

Corda - open source blockchain voor bedrijven

Zoals we kunnen zien, zijn Ed, Carl en Demi op de hoogte van feit 3, maar Alice en Bob zijn zich daar niet eens van bewust. Corda garandeert dat gemeenschappelijke feiten worden opgeslagen in de database van elk knooppunt, en dat de gegevens identiek zullen zijn.

Staten

Staat is onveranderlijk een object dat een feit vertegenwoordigt dat op een bepaald moment bekend is bij een of meer netwerkknooppunten.

Staten kunnen willekeurige gegevens opslaan, bijvoorbeeld aandelen, obligaties, leningen en identificatie-informatie.

De volgende staat vertegenwoordigt bijvoorbeeld een schuldbekentenis: een overeenkomst waarbij Alice Bob een bedrag van X schuldig 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 nodig is om de huidige status bij te werken, maken we een nieuwe en markeren we de huidige als historisch.

Corda - open source blockchain voor bedrijven

Transactie

Transacties zijn voorstellen om het grootboek bij te werken. Ze worden niet naar alle grootboekdeelnemers uitgezonden en zijn alleen beschikbaar voor de netwerkdeelnemers die het wettelijke recht hebben om ze te bekijken en te beheren.

Een transactie wordt aan het grootboek toegevoegd als deze:

  • contractueel geldig
  • ondertekend door alle vereiste deelnemers
  • bevat geen dubbele uitgaven

Corda gebruikt het UTXO-model (niet-uitgegeven transactie-uitvoer), waarbij elke grootboekstatus onveranderlijk is.

Wanneer een transactie wordt aangemaakt, wordt de uitvoerstatus van de vorige transactie (door hash en index) overgedragen naar de invoer.

Corda - open source blockchain voor bedrijven
Transactielevenscyclus:

  • Creatie (op dit moment is de transactie slechts een voorstel om het grootboek bij te werken)
  • Handtekeningen verzamelen (vereiste partijen bij de transactie keuren het updatevoorstel goed door een handtekening aan de transactie toe te voegen)
  • Transactie vastleggen in grootboek

Zodra een transactie aan het grootboek is toegevoegd, worden de invoerstatussen gemarkeerd als historisch en kunnen ze niet worden gebruikt in toekomstige transacties.

Corda - open source blockchain voor bedrijven
Naast invoer- en uitvoerstatussen kan een transactie het volgende bevatten:

  • Commando's (transactieparameter die het doel van de transactie aangeeft)
  • Bijlagen (vakantiekalender, valuta-omzetter)
  • Tijdvensters (geldigheidsperiode)
  • Notaris (notaris, speciale netwerkdeelnemers die transacties valideren)

Corda - open source blockchain voor bedrijven

contracten

Als we het hebben over de geldigheid van transacties, bedoelen we niet alleen de aanwezigheid van de benodigde handtekeningen, maar ook de contractuele geldigheid. Elke transactie is gekoppeld aan een contract dat deze accepteert en de invoer- en uitvoerstatussen valideert. Een transactie wordt alleen als geldig beschouwd als alle statussen ervan geldig zijn.

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

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

Het is noodzakelijk om van een klasse te erven Contract en overschrijf de methode controleren. Als de transactie ongeldig is, wordt er een uitzondering gegenereerd.

Transactievalidatie moet deterministisch zijn, d.w.z. het contract moet de transactie altijd accepteren of afwijzen. In verband hiermee kan de geldigheid van de transactie niet afhankelijk zijn van tijd, willekeurige getallen, hostbestanden, enz.

In Corda worden contracten uitgevoerd in een zogenaamde sandbox - een licht gewijzigde JVM die een deterministische uitvoering van contracten garandeert.

streams

Om de communicatie tussen netwerkknooppunten te automatiseren, zijn er threads toegevoegd.

Een stroom is een reeks stappen die een knooppunt vertelt hoe een specifieke grootboekupdate moet worden uitgevoerd en op welk punt de transactie moet worden ondertekend en gevalideerd.

Corda - open source blockchain voor bedrijven

Soms duurt het uren, dagen voordat de transactie door alle partijen is ondertekend en in het grootboek terechtkomt. Wat gebeurt er als u de verbinding verbreekt met een knooppunt dat deelneemt aan een transactie? Threads hebben controlepunten, waar de status van de thread naar de database van het knooppunt wordt geschreven. Wanneer een knooppunt wordt hersteld in het netwerk, gaat het verder waar het was gebleven.

Overeenstemming

Om in het grootboek te komen, moet een transactie twee consensussen bereiken: geldigheid en uniciteit.

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

Notarisknooppunten controleren de transactie op uniciteit en voorkomen dubbele uitgaven.

Laten we ons voorstellen dat Bob €100 heeft en €80 naar Charlie en €70 naar Dan wil overmaken met dezelfde invoerstatus.

Corda - open source blockchain voor bedrijven

Corda zal niet toestaan ​​dat je zo'n truc uithaalt. Hoewel de transactie de geldigheidscontrole doorstaat, mislukt de uniciteitscontrole.

Conclusie

Het Corda-platform, ontwikkeld door het R3 blockchain-consortium, is geen pure use case voor blockchain-technologie. Corda is een zeer gespecialiseerd hulpmiddel voor financiële instellingen.

Bron: www.habr.com

Voeg een reactie