Ejja nħarsu lejn il-karatteristiċi ewlenin ta 'Corda u l-uniċità tagħha fost blockchains oħra:
- Corda m'għandhiex il-munita kriptografika tagħha stess.
- Corda ma tużax il-kunċett tal-minjieri u s-sistema Proof-of-Work.
- It-trasferiment tad-dejta jseħħ biss bejn il-partijiet fit-tranżazzjoni/kuntratt. M'hemm l-ebda xandir globali għan-nodi kollha tan-netwerk.
- M'hemm l-ebda kontrollur ċentrali li jamministra t-tranżazzjonijiet kollha.
- Corda tappoġġja diversi mekkaniżmi ta' kunsens.
- Il-kunsens jintlaħaq bejn il-parteċipanti fil-livell ta' ftehim/kuntratt individwali, u mhux fil-livell tas-sistema kollha.
- Tranżazzjoni hija kkonfermata biss mill-parteċipanti relatati magħha.
- Corda toffri konnessjoni diretta bejn il-lingwaġġ legali formali tal-bniedem u l-kodiċi tal-kuntratt intelliġenti.
Ir-reġistru
Il-kunċett ta' ktieb f'Corda huwa suġġettiv. M'hemm l-ebda repożitorju tad-dejta ċentrali uniku. Minflok, kull nodu jżomm database separata ta 'fatti magħrufa lilu.
Pereżempju, immaġina netwerk ta '5 nodi, fejn ċirku huwa fatt magħruf lin-nodu.
Kif nistgħu naraw, Ed, Carl u Demi jafu dwar il-fatt 3, iżda Alice u Bob lanqas biss huma konxji minnu. Corda tiggarantixxi li l-fatti komuni huma maħżuna fid-database ta 'kull node, u d-data tkun identika.
Istati Membri
Istat huwa immutabbli oġġett li jirrappreżenta fatt magħruf minn nodu wieħed jew aktar tan-netwerk f'ċertu punt fiż-żmien.
L-Istati jistgħu jaħżnu data arbitrarja, pereżempju, stokks, bonds, self, informazzjoni ta' identifikazzjoni.
Pereżempju, l-istat li ġej jirrappreżenta IOU—ftehim li Alice għandha lil Bob ammont ta’ X:
Iċ-ċiklu tal-ħajja ta 'fatt matul iż-żmien huwa rappreżentat minn sekwenza ta' stati. Meta jkun meħtieġ li taġġorna l-istat attwali, noħolqu wieħed ġdid u nimmarkaw dak attwali bħala storiku.
Tranżazzjonijiet
It-tranżazzjonijiet huma proposti biex jiġi aġġornat ir-reġistru. Mhumiex imxandra lill-parteċipanti kollha tar-reġistru u huma disponibbli biss għal dawk il-parteċipanti tan-netwerk li għandhom id-dritt legali li jarawhom u jimmaniġġjawhom.
Tranżazzjoni tiġi miżjuda mar-reġistru jekk:
- kuntrattwalment validi
- iffirmat mill-parteċipanti kollha meħtieġa
- ma fihx double-sends
Corda juża l-mudell UTXO (output ta 'tranżazzjoni mhux minfuqa), li fih kull stat tar-reġistru huwa immutabbli.
Meta tinħoloq transazzjoni, l-istat tal-output tat-tranżazzjoni preċedenti (bil-hash u l-indiċi) jiġi trasferit għall-input.
Ċiklu tal-ħajja tat-tranżazzjoni:
- Ħolqien (Fil-mument, it-tranżazzjoni hija biss proposta biex taġġorna r-reġistru)
- Iġbor il-firem (Il-partijiet meħtieġa għat-tranżazzjoni japprovaw il-proposta tal-aġġornament billi jżidu firma mat-tranżazzjoni)
- Kommetti tranżazzjoni mal-ktieb
Ladarba tranżazzjoni tiżdied mar-reġistru, l-istati tal-input huma mmarkati bħala storiċi u ma jistgħux jintużaw fi tranżazzjonijiet futuri.
Minbarra l-istati ta’ input u output, tranżazzjoni jista’ jkun fiha:
- Kmandi (parametru tat-tranżazzjoni li jindika l-iskop tat-tranżazzjoni)
- Annessi (kalendarju tal-vaganzi, konvertitur tal-munita)
- Twieqi ta' żmien (perjodu ta' validità)
- Nutar (Nutar, parteċipanti speċjali tan-netwerk li jivvalidaw it-tranżazzjonijiet)
Kuntratti
Meta nitkellmu dwar il-validità tat-tranżazzjoni, infisser mhux biss il-preżenza tal-firem meħtieġa, iżda wkoll il-validità kuntrattwali. Kull tranżazzjoni hija assoċjata ma 'kuntratt li jaċċettaha u jivvalida l-istati ta' input u output. Tranżazzjoni titqies valida biss jekk l-istati kollha tagħha huma validi.
Il-kuntratti f'Corda jinkitbu fi kwalunkwe lingwa JVM (pereżempju, Java, Kotlin).
class CommercialPaper : Contract {
override fun verify(tx: LedgerTransaction) {
TODO()
}
}
Huwa meħtieġ li jiret minn klassi Kuntratt u jegħleb il-metodu jivverifika. Jekk it-tranżazzjoni tkun invalida, tintefa' eċċezzjoni.
Il-validazzjoni tat-tranżazzjoni trid tkun deterministika, i.e. il-kuntratt għandu dejjem jew jaċċetta jew jirrifjuta t-tranżazzjoni. B'rabta ma 'dan, il-validità tat-tranżazzjoni ma tistax tiddependi fuq il-ħin, numri każwali, fajls ospitanti, eċċ.
F'Corda, il-kuntratti huma esegwiti f'hekk imsejħa sandbox - JVM kemmxejn modifikata li tiggarantixxi eżekuzzjoni deterministika tal-kuntratti.
Flussi
Biex tiġi awtomatizzata l-komunikazzjoni bejn in-nodi tan-netwerk, ġew miżjuda ħjut.
Fluss huwa sekwenza ta' passi li tgħid lil nodu kif għandu jwettaq aġġornament tar-reġistru speċifiku u f'liema punt it-tranżazzjoni teħtieġ li tiġi ffirmata u vvalidata.
Xi drabi tieħu sigħat, jiem sakemm it-tranżazzjoni tiġi ffirmata mill-partijiet kollha u tidħol fir-reġistru. X'jiġri jekk tiskonnettja node li qed tipparteċipa fi tranżazzjoni? Il-ħjut għandhom punti ta' kontroll, li fihom l-istat tal-ħajt jinkiteb fid-database tan-node. Meta node jiġi rrestawrat fin-netwerk, se jkompli fejn ħalla.
Kunsens
Biex tidħol fir-reġistru, tranżazzjoni trid tilħaq 2 kunsensi: validità u uniċità.
Id-deċiżjoni dwar il-validità ta’ tranżazzjoni ssir biss mill-partijiet involuti direttament fiha.
Nodi tan-nutar jivverifikaw it-tranżazzjoni għall-uniċità u jipprevjenu l-infiq doppju.
Ejja nimmaġinaw li Bob għandu $100 u jrid jittrasferixxi $80 lil Charlie u $70 lil Dan billi juża l-istess stat ta' input.
Corda mhux se jippermettilek li tiġbed tali trick. Għalkemm it-tranżazzjoni tgħaddi mill-kontroll tal-validità, il-kontroll tal-uniċità se jfalli.
Konklużjoni
Il-pjattaforma Corda, żviluppata mill-konsorzju blockchain R3, mhix każ ta 'użu pur għat-teknoloġija blockchain. Corda hija għodda speċjalizzata ħafna għall-istituzzjonijiet finanzjarji.
Sors: www.habr.com