Pažvelkime į pagrindines Corda savybes ir jos unikalumą tarp kitų blokų grandinių:
- „Corda“ neturi savo kriptovaliutos.
- „Corda“ nenaudoja kasybos sąvokos ir darbo įrodymo sistemos.
- Duomenų perdavimas vyksta tik tarp sandorio/sutarties šalių. Nėra visuotinio transliavimo į visus tinklo mazgus.
- Nėra centrinio valdiklio, valdančio visas operacijas.
- „Corda“ palaiko įvairius konsensuso mechanizmus.
- Dalyvių sutarimas pasiekiamas individualaus susitarimo/sutarties, o ne visos sistemos lygmeniu.
- Sandorį patvirtina tik su juo susiję dalyviai.
- „Corda“ siūlo tiesioginį ryšį tarp oficialios žmogaus teisinės kalbos ir išmaniojo sutarties kodo.
Knyga
„Corda“ knygos sąvoka yra subjektyvi. Nėra vienos centrinės duomenų saugyklos. Vietoj to, kiekvienas mazgas turi atskirą jam žinomų faktų duomenų bazę.
Pavyzdžiui, įsivaizduokite 5 mazgų tinklą, kuriame apskritimas yra mazgui žinomas faktas.
Kaip matome, Edas, Carlas ir Demi žino apie 3 faktą, bet Alisa ir Bobas to net nežino. Corda garantuoja, kad kiekvieno mazgo duomenų bazėje bus saugomi bendri faktai, o duomenys bus identiški.
Valstybes
Valstybė yra nekintamas objektas, vaizduojantis faktą, žinomą vienam ar keliems tinklo mazgams tam tikru momentu.
Valstybės gali saugoti savavališkus duomenis, pavyzdžiui, akcijas, obligacijas, paskolas, identifikavimo informaciją.
Pavyzdžiui, ši būsena reiškia IOU – susitarimą, kad Alisa yra skolinga Bobui X sumą:
Fakto gyvavimo ciklas laikui bėgant pavaizduotas būsenų seka. Kai reikia atnaujinti esamą būseną, sukuriame naują, o esamą pažymime kaip istorinę.
Sandoriai
Sandoriai – tai pasiūlymai atnaujinti didžiąją knygą. Jie netransliuojami visiems knygos dalyviams ir yra prieinami tik tiems tinklo dalyviams, kurie turi įstatyminę teisę juos peržiūrėti ir tvarkyti.
Operacija bus įtraukta į knygą, jei:
- sutartimi galiojantys
- pasirašo visi reikalingi dalyviai
- nėra dvigubų išlaidų
„Corda“ naudoja UTXO (neišnaudotos operacijos išvesties) modelį, kuriame kiekviena knygos būsena yra nekintanti.
Sukūrus operaciją, ankstesnės operacijos išvesties būsena (pagal maišą ir indeksą) perkeliama į įvestį.
Sandorio gyvavimo ciklas:
- Kūrimas (šiuo metu operacija yra tik pasiūlymas atnaujinti knygą)
- Rinkti parašus (privalomos sandorio šalys patvirtina atnaujinimo pasiūlymą, pridėdamos parašą prie operacijos)
- Įtraukti operaciją į knygą
Kai operacija įtraukiama į knygą, įvesties būsenos pažymimos kaip istorinės ir negali būti naudojamos būsimose operacijose.
Be įvesties ir išvesties būsenų, operacijoje gali būti:
- Komandos (operacijos parametras, nurodantis operacijos tikslą)
- Priedai (švenčių kalendorius, valiutos keitiklis)
- Laiko langai (galiojimo laikotarpis)
- Notaras (Notaras, specialūs tinklo dalyviai, tvirtinantys sandorius)
Sutartys
Kai kalbame apie sandorio galiojimą, turime omenyje ne tik reikiamų parašų buvimą, bet ir sutarties galiojimą. Kiekviena operacija yra susieta su sutartimi, kuri ją priima ir patvirtina įvesties ir išvesties būsenas. Sandoris laikomas galiojančiu tik tada, kai galioja visos jo būsenos.
Sutartys Corda yra parašytos bet kuria JVM kalba (pavyzdžiui, Java, Kotlin).
class CommercialPaper : Contract {
override fun verify(tx: LedgerTransaction) {
TODO()
}
}
Būtina paveldėti iš klasės Sutartis ir nepaisyti metodo patikrinti. Jei sandoris negalioja, bus taikoma išimtis.
Sandorio patvirtinimas turi būti deterministinis, t.y. sutartis visada turi arba priimti, arba atmesti sandorį. Atsižvelgiant į tai, operacijos galiojimas negali priklausyti nuo laiko, atsitiktinių skaičių, pagrindinio kompiuterio failų ir kt.
Cordoje sutartys vykdomos vadinamojoje smėlio dėžėje – šiek tiek modifikuotoje JVM, garantuojančioje deterministinį sutarčių vykdymą.
Srautai
Siekiant automatizuoti ryšį tarp tinklo mazgų, buvo pridėtos gijos.
Srautas yra veiksmų seka, nurodanti mazgui, kaip atlikti konkretų knygos atnaujinimą ir kada reikia pasirašyti ir patvirtinti operaciją.
Kartais prireikia valandų, dienų, kol sandorį pasirašo visos šalys ir jis patenka į knygą. Kas atsitiks, jei atjungsite sandoryje dalyvaujantį mazgą? Gijos turi kontrolinius taškus, kuriuose gijos būsena įrašoma į mazgo duomenų bazę. Kai mazgas atkuriamas tinkle, jis tęsis ten, kur buvo baigtas.
Sutarimas
Norint patekti į knygą, sandoris turi pasiekti 2 konsensusus: galiojimą ir unikalumą.
Sprendimą dėl sandorio galiojimo priima tik su juo tiesiogiai susijusios šalys.
Notarų mazgai patikrina sandorio unikalumą ir neleidžia dvigubai išleisti.
Įsivaizduokime, kad Bobas turi 100 USD ir nori pervesti 80 USD Charlie ir 70 USD Danui naudodamas tą pačią įvesties būseną.
Corda neleis jums pasidaryti tokio triuko. Nors operacijos galiojimo patikrinimas bus atliktas, unikalumo patikra nepavyks.
išvada
„Corda“ platforma, sukurta R3 blokų grandinės konsorciumo, nėra grynas „blockchain“ technologijos naudojimo atvejis. „Corda“ yra labai specializuota priemonė finansų įstaigoms.
Šaltinis: www.habr.com