Corda – avatud lähtekoodiga plokiahel äri jaoks

Corda on hajutatud pearaamat finantskohustuste hoidmiseks, haldamiseks ja sünkroniseerimiseks erinevate finantsorganisatsioonide vahel.
Corda – avatud lähtekoodiga plokiahel äri jaoks
Cordal on päris hea dokumentatsioon koos videoloengutega, mida võib leida siin. Püüan lühidalt kirjeldada, kuidas Corda sees töötab.

Vaatame Corda põhifunktsioone ja selle ainulaadsust teiste plokiahelate seas:

  • Cordal ei ole oma krüptovaluutat.
  • Corda ei kasuta kaevandamise mõistet ega töötõestamise süsteemi.
  • Andmeedastus toimub ainult tehingu/lepingu osapoolte vahel. Ülemaailmset leviedastust kõikidele võrgusõlmedele ei toimu.
  • Kõiki tehinguid haldav keskkontroller puudub.
  • Corda toetab erinevaid konsensuse mehhanisme.
  • Konsensus saavutatakse osalejate vahel individuaalse kokkuleppe/lepingu tasandil, mitte aga kogu süsteemi tasandil.
  • Tehingu kinnitavad ainult sellega seotud osalejad.
  • Corda pakub otseühendust ametliku inimõiguskeele ja nutika lepingukoodi vahel.

Pearaamat

Pearaamatu mõiste Cordas on subjektiivne. Puudub ühtne keskne andmehoidla. Selle asemel haldab iga sõlm talle teadaolevate faktide eraldi andmebaasi.

Kujutage näiteks ette 5 sõlmest koosnevat võrku, kus ring on sõlmele teada fakt.

Corda – avatud lähtekoodiga plokiahel äri jaoks

Nagu näeme, teavad Ed, Carl ja Demi faktist 3, kuid Alice ja Bob pole sellest isegi teadlikud. Corda garanteerib, et ühised faktid salvestatakse iga sõlme andmebaasi ja andmed on identsed.

Osariikides

Riik on muutumatu objekt, mis esindab ühele või mitmele võrgusõlmele teatud ajahetkel teadaolevat fakti.

Riigid võivad salvestada suvalisi andmeid, näiteks aktsiaid, võlakirju, laene, identifitseerimisteavet.

Näiteks järgmine olek tähistab IOU-d – lepingut, mille kohaselt Alice võlgneb Bobile summa X:

Corda – avatud lähtekoodiga plokiahel äri jaoks
Fakti elutsükkel ajas on kujutatud olekute jadana. Kui on vaja hetkeseisu uuendada, loome uue ja märgime praeguse ajalooliseks.

Corda – avatud lähtekoodiga plokiahel äri jaoks

Tehingud

Tehingud on ettepanekud pearaamatu uuendamiseks. Neid ei edastata kõigile pearaamatus osalejatele ja need on saadaval ainult neile võrguosalistele, kellel on seaduslik õigus neid vaadata ja hallata.

Tehing lisatakse pearaamatusse, kui see:

  • lepinguliselt kehtiv
  • allkirjastatud kõigi vajalike osalejate poolt
  • ei sisalda topeltkulutusi

Corda kasutab UTXO (kasutamata tehinguväljundi) mudelit, milles iga pearaamatu olek on muutumatu.

Tehingu loomisel kantakse sisendisse eelmise tehingu väljundolek (räsi ja indeksi järgi).

Corda – avatud lähtekoodiga plokiahel äri jaoks
Tehingu elutsükkel:

  • Loomine (Hetkel on tehing vaid ettepanek pearaamatu uuendamiseks)
  • Allkirjade kogumine (tehingu nõutud osapooled kinnitavad uuendusettepaneku, lisades tehingule allkirja)
  • Kinnitage tehing pearaamatusse

Kui tehing on pearaamatusse lisatud, märgitakse sisendolekud ajalooliseks ja neid ei saa tulevastes tehingutes kasutada.

Corda – avatud lähtekoodiga plokiahel äri jaoks
Lisaks sisend- ja väljundolekutele võib tehing sisaldada:

  • Käsud (tehingu parameeter, mis näitab tehingu eesmärki)
  • Manused (pühade kalender, valuutamuundur)
  • Ajaaknad (kehtivusaeg)
  • Notar (Notar, tehinguid kinnitavad spetsiaalsed võrguosalised)

Corda – avatud lähtekoodiga plokiahel äri jaoks

Lepingud

Tehingu kehtivusest rääkides ei pea me silmas mitte ainult vajalike allkirjade olemasolu, vaid ka lepingulist kehtivust. Iga tehing on seotud lepinguga, mis aktsepteerib seda ja kinnitab sisend- ja väljundolekud. Tehing loetakse kehtivaks ainult siis, kui kõik selle olekud kehtivad.

Corda lepingud on kirjutatud mis tahes JVM-i keeles (näiteks Java, Kotlin).

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

On vaja pärida klassist Leping ja tühistage meetod kontrollima. Kui tehing on kehtetu, tehakse erand.

Tehingu valideerimine peab olema deterministlik, s.t. leping peab alati tehingu kas aktsepteerima või tagasi lükkama. Seoses sellega ei saa tehingu kehtivus sõltuda ajast, juhuslikest numbritest, hostfailidest jne.

Cordas täidetakse lepinguid nn liivakastis – veidi muudetud JVM-is, mis tagab lepingute deterministliku täitmise.

Voogud

Võrgusõlmede vahelise suhtluse automatiseerimiseks lisati lõimed.

Voog on toimingute jada, mis annab sõlmele teada, kuidas konkreetset pearaamatu värskendust läbi viia ja mis hetkel tuleb tehing allkirjastada ja kinnitada.

Corda – avatud lähtekoodiga plokiahel äri jaoks

Mõnikord kulub tunde, päevi, kuni tehingu kõik osapooled allkirjastavad ja pearaamatusse jõuab. Mis juhtub, kui katkestate tehingus osaleva sõlme ühenduse? Lõimedel on kontrollpunktid, mille juures kirjutatakse lõime olek sõlme andmebaasi. Kui sõlm võrku taastatakse, jätkab see sealt, kus see pooleli jäi.

Konsensus

Pearaamatusse pääsemiseks peab tehing jõudma kahele konsensusele: kehtivus ja kordumatus.

Otsuse tehingu kehtivuse kohta teevad ainult tehinguga otseselt seotud pooled.

Notarisõlmed kontrollivad tehingu unikaalsust ja hoiavad ära topeltkulutamise.

Kujutagem ette, et Bobil on 100 dollarit ja ta soovib kanda 80 dollarit Charlie’le ja 70 dollarit Danile, kasutades sama sisendolekut.

Corda – avatud lähtekoodiga plokiahel äri jaoks

Corda ei luba teil sellist trikki teha. Kuigi tehing läbib kehtivuskontrolli, ebaõnnestub kordumatuse kontroll.

Järeldus

Corda platvorm, mille on välja töötanud R3 plokiahela konsortsium, ei ole plokiahela tehnoloogia jaoks puhas kasutusjuht. Corda on väga spetsialiseerunud tööriist finantsasutustele.

Allikas: www.habr.com

Lisa kommentaar