Corda — blockchain open source pentru afaceri

Corda — este un registru distribuit pentru stocarea, gestionarea și sincronizarea obligațiilor financiare între diferitele organizații financiare.
Corda — blockchain open source pentru afaceri
Corda dispune de o documentație destul de bună, cu lecții video, pe care o puteți găsi aici. Voi încerca să descriu pe scurt cum funcționează Corda în interior.

Să luăm în considerare principalele caracteristici ale Corda și unicitatea sa în rândul altor blockchain-uri:

  • Corda nu are o criptomonedă proprie.
  • Corda nu utilizează conceptul de mining și sistemul Proof-of-Work.
  • Transferul de date se face doar între participanții la tranzacție/contract. Nu există o difuzare globală către toate nodurile din rețea.
  • Nu există un controler central care să gestioneze toate tranzacțiile.
  • Corda suportă diverse mecanisme de consens.
  • Consensul este atins între participanți la nivelul unui acord/contract separat, nu la nivelul întregului sistem.
  • O tranzacție este confirmată doar de participanții care îi sunt relevanți.
  • Corda oferă o legătură directă între limbajul juridic formal uman și codul contractelor inteligente.

The ledger

Conceptul de ledger în Corda este subiectiv. Nu există un singur depozit central de date. În schimb, fiecare nod întreține o bază de date separată a faptelor cunoscute.

De exemplu, imaginați-vă o rețea formată din 5 noduri, unde cercul reprezintă un fapt cunoscut de nod.

Corda — blockchain open source pentru afaceri

Așa cum vedem, Ed, Carl și Demi cunosc faptul 3, în timp ce Alice și Bob nici măcar nu sunt conștienți de el. Corda garantează păstrarea faptelor comune în baza fiecărui nod, datele fiind identice.

Stări

O stare este immutabil un obiect care reprezintă un fapt cunoscut de unul sau mai multe noduri din rețea la un anumit moment în timp.

Stările pot stoca date arbitrare, cum ar fi acțiuni, obligațiuni, credite, informații de identificare.

De exemplu, următoarea stare reprezintă un IOU — un acord prin care Alice îi datorează lui Bob suma X:

Corda — blockchain open source pentru afaceri
Ciclul de viață al unui fapt de-a lungul timpului este reprezentat de o secvență de stări. Când este necesară actualizarea stării curente, creăm una nouă, iar cea curentă este marcată ca istoric (historic).

Corda — blockchain open source pentru afaceri

Tranzacții

Tranzacțiile sunt propuneri de actualizare a ledger-ului. Ele nu sunt difuzate tuturor participanților la ledger și sunt disponibile doar pentru acei participanți ai rețelei care au drept legal de a le vedea și gestiona.

O tranzacție va fi adăugată în ledger dacă aceasta:

  • valida contractual
  • semnată de toți participanții necesari
  • nu conține cheltuieli duble (double-spends)

Corda utilizează modelul UTXO (unspent transaction output), în care fiecare stare a ledger-ului este imuabilă.

Atunci când se creează, tranzacția primește ca intrare starea de output a tranzacției anterioare (prin hash și index).

Corda — blockchain open source pentru afaceri
Ciclul de viață al unei tranzacții:

  • Creare (Deocamdată, tranzacția este doar o propunere de actualizare a ledger-ului)
  • Colectarea semnăturilor (Participanții necesari aprobă propunerea de actualizare adăugând o semnătură la tranzacție)
  • Comiterea tranzacției în ledger

După adăugarea tranzacției în ledger, statele de intrare sunt marcate ca istorice și nu pot fi utilizate în tranzacțiile viitoare.

Corda — blockchain open source pentru afaceri
Pe lângă stările de intrare și ieșire, tranzacția poate conține:

  • Comenzi (parametru al tranzacției, care indică scopul tranzacției)
  • Atașamente (calendar de sărbători, convertor de valută)
  • Fereastră de timp (perioada de valabilitate)
  • Notar (Notary, participanți speciali din rețea, care validează tranzacțiile)

Corda — blockchain open source pentru afaceri

Conctracte

Atunci când discutăm despre validitatea unei tranzacții, ne referim nu doar la existența semnăturilor necesare, ci și la validitatea conform contractului. Fiecare tranzacție este asociată cu un contract care o acceptă și validează stările de intrare și ieșire. O tranzacție este considerată validă doar dacă toate stările sale sunt valide.

Contractele în Corda sunt scrise în orice limbaj JVM (de exemplu, Java, Kotlin).

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

Este necesar să se extindă clasa Contract și să se suprascrie metoda verify. În cazul invalidării tranzacției trebuie să fie lansată o excepție.

Validarea tranzacțiilor trebuie să fie deterministă, adică contractul trebuie să accepte sau să respingă întotdeauna tranzacția. În acest sens, validitatea tranzacției nu poate depinde de timp, numere aleatorii, fișiere ale nodului din rețea etc.

În Corda, contractele sunt executate într-un așa-numit sandbox — o JVM puțin modificată care garantează executarea deterministă a contractelor.

Fluxuri

Pentru a automatiza comunicarea nodurilor din rețea, au fost adăugate fluxuri.

Fluxul – este o secvență de pași care comunică nodului cum să efectueze o actualizare specifică a ledger-ului, când trebuie să semneze și să valideze tranzacția.

Corda — blockchain open source pentru afaceri

Uneori, sunt necesare ore sau zile până când tranzacția este semnată de toate părțile și ajunge în ledger. Ce se întâmplă dacă nodul implicat în tranzacție este deconectat? Fluxurile au puncte de control în care stările fluxului sunt înregistrate în baza de date a nodului. Când nodul este restaurat în rețea, acesta va continua de unde a rămas.

Consens

Pentru a ajunge în ledger, tranzacția trebuie să atingă 2 consensuri: privind validitatea și unicitatea.

Decizia privind validitatea tranzacției este luată doar de părțile direct implicate.

Nodurile notariale efectuează verificarea tranzacției pentru unicitate, prevenind cheltuielile duble.

Să presupunem că Bob are 100$, și vrea să transfere 80$ lui Charlie și 70$ lui Dan, folosind aceeași stare de intrare.

Corda — blockchain open source pentru afaceri

Acest truc nu va putea fi realizat cu Corda. Deși tranzacția va trece verificarea validității, verificarea unicitații va eșua.

Concluzie

Platforma Corda, dezvoltată de consorțiul blockchain R3, nu este un exemplu pur de utilizare a tehnologiei blockchain. Corda este un instrument destul de specializat pentru organizațiile financiare.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster