â Ă«shtĂ« njĂ« Ledger i shpĂ«rndarĂ« pĂ«r ruajtjen, menaxhimin dhe sinkronizimin e detyrimeve financiare midis organizatave tĂ« ndryshme financiare.

Corda ka një dokumentacion shumë të mirë me video-leksione, të cilat mund t'i gjeni . Do përpiqem ta përshkruaj shkurtimisht se si funksionon Corda brenda.
Le të shqyrtojmë karakteristikat kryesore të Corda dhe unikësinë e saj krahasuar me blloket e tjera:
- Corda nuk ka një kriptovalutë të vetën.
- Corda nuk përdor konceptin e minimit dhe sistemin Proof-of-Work.
- Shkëmbimi i të dhënave ndodh vetëm midis pjesëmarrësve të transaksionit/kontaktit. Nuk ka transmetim global në të gjithë nyjet e rrjetit.
- Nuk ka një kontrollues të qendruar që menaxhon të gjitha transaksionet.
- Corda mbështet mekanizma të ndryshëm konsensusi.
- Konsensusi arrihet midis pjesëmarrësve në nivelin e një marrëveshjeje/kontakti të veçantë, dhe jo në nivelin e tërë sistemit.
- Transaksioni miratohet vetëm nga pjesëmarrësit që lidhen me të.
- Corda ofron një lidhje të drejtpërdrejtë midis gjuhës juridike formale të njerëzve dhe kodit të kontratave të zgjuara.
Ledger
Koncepci i ledger-it në Corda është subjektiv. Nuk ka një depot të vetme qendrore të të dhënave. Në vend të kësaj, çdo nyje përmban një bazë të dhënash të veçanta të fakteve të njohura për të.
Për shembull, imagjinoni një rrjet prej 5 nyjesh, ku rrethi është një fakt i njohur për nyjen.

Siç mund ta shohim, Ed, Carl dhe Demi dinë për faktin 3, ndërsa Alice dhe Bob nuk kanë as ide për këtë. Corda garanton ruajtjen e fakteve të përbashkëta në bazën e çdo nyjeje, dhe këto të dhëna do të jenë identike.
Gjendjet
Gjendja është e pandryshueshme një objekt që paraqet një fakt të njohur nga një ose më shumë nyje të rrjetit në një moment të caktuar.
Gjendjet mund të ruajnë të dhëna të rastit, për shembull, aksione, obligacione, kredi, informacion identifikimi.
PĂ«r shembull, gjendja e mĂ«poshtme pĂ«rfaqĂ«son njĂ« IOU â njĂ« marrĂ«veshje qĂ« Alisa i detyrohet Bobit njĂ« shumĂ« X:

Cikli i jetës së faktit me kalimin e kohës paraqitet nga një seri gjendjesh. Kur është e nevojshme të përditësohet gjendja aktuale, krijojmë një të re, ndërsa e tashmja e shënojmë si historike (historic).

Transaksionet
Transaksionet janë propozime për përditësimin e ledger-it. Ato nuk transmetohen të gjithë pjesëmarrësve të ledger-it dhe janë të aksesueshme vetëm për ato pjesëmarrës të rrjetit që kanë të drejtë ligjore për t'i parë dhe menaxhuar ato.
Transaksioni do të shtohet në ledger, nëse:
- është kontraktohet e vlefshme
- në shenjë nga të gjithë pjesëmarrësit e nevojshëm
- nuk përmban shpenzime të dyfishta (double-spends)
Corda përdor modelin UTXO (unspent transaction output), në të cilin çdo gjendje e ledger-it është e pandryshueshme.
Kur krijohet, transaksioni merr si hyrje gjendjen e daljes nga transaksioni i mëparshëm (përmes hash-it dhe indeksit).

Cikli i jetës së një transaksioni:
- Krijimi (Në këtë moment, transaksioni është thjesht një propozim për përditësimin e ledger-it)
- Mbledhja e nënshkrimeve (Pjesëmarrësit e nevojshëm të transaksionit miratojnë propozimin për përditësim duke shtuar nënshkrimin në transaksion)
- Angazhimi i transaksionit në ledger
Pasi që transaksioni të shtohet në ledger, gjendjet hyrëse shënohen si historike dhe nuk mund të përdoren në transaksione të ardhshme.

Përveç gjendjeve hyrëse dhe dalëse, transaksioni mund të përmbajë:
- Komandat (parametri i transaksionit, që tregon qëllimin e transaksionit)
- Shtesat (kalendari i festave, konvertuesi i valutave)
- Dritaret e kohës (afati i vlefshmërisë)
- Notari (Notary, pjesëmarrës të veçantë të rrjetit, që validon transaksionet)

Kontratat
Kur flasim pĂ«r vlefshmĂ«rinĂ« e njĂ« transaksioni, ne nĂ«nkuptojmĂ« jo vetĂ«m praninĂ« e nĂ«nshkrimeve tĂ« nevojshme, por edhe vlefshmĂ«rinĂ« sipas kontratĂ«s. Ădo transaksion Ă«shtĂ« i lidhur me njĂ« kontratĂ«, e cila e pranon dhe validon gjendjet hyrĂ«se dhe dalĂ«se. NjĂ« transaksion konsiderohet i vlefshĂ«m, vetĂ«m nĂ«se tĂ« gjitha gjendjet e tij janĂ« tĂ« vlefshme.
Kontratat në Corda shkruhen në çdo gjuhë JVM (për shembull, Java, Kotlin).
class CommercialPaper : Contract {
override fun verify(tx: LedgerTransaction) {
TODO()
}
}
ĂshtĂ« e nevojshme tĂ« trashĂ«goheni nga klasa Contract dhe tĂ« tejkaloni metodĂ«n verify. NĂ« rast tĂ« pavlefshmĂ«risĂ« sĂ« transaksionit, duhet tĂ« hidhet njĂ« pĂ«rjashtim.
Vlefshmëria e transaksioneve duhet të jetë determinuese, pra kontrata gjithmonë duhet ose ta pranojë, ose ta refuzojë transaksionin. Në këtë kontekst, vlefshmëria e transaksionit nuk mund të varet nga koha, numra të rastësishëm, skedarë të nyjes së rrjetit etj.
NĂ« Corda, kontratat ekzekutohen nĂ« atĂ« qĂ« quhet sandbox â njĂ« JVM e modifikuar pak, qĂ« garanton ekzekutimin determinues tĂ« kontratave.
Flukset
Për të automatizuar komunikimin midis nyjeve të rrjetit, janë shtuar flukset.
Fluksi është një seri hapat, që tregon nyjës se si të ekzekutojë një përditësim të veçantë të ledger-it, në cilin moment duhet të nënshkruajë dhe të validojë transaksionin.

NdonjĂ«herĂ« nevojiten orĂ«, ditĂ« derisa transaksioni tĂ« nĂ«nshkruhet nga tĂ« gjitha palĂ«t dhe tĂ« kalojĂ« nĂ« ledger. ĂfarĂ« ndodh nĂ«se ndalon nyja qĂ« merr pjesĂ« nĂ« transaksion? Rrymat kanĂ« pika kontrolli, ku gjendjet e rrymĂ«s regjistrohen nĂ« databazĂ«n e nyjĂ«s. Kur nyja rikthehet nĂ« rrjet, ajo vazhdon nga vendi ku Ă«shtĂ« ndalur.
Konsensusi
Për të kaluar në ledger, transaksioni duhet të arrijë 2 konsensuse: për vlefshmërinë dhe për uniklimin.
Vendimi për vlefshmërinë e transaksionit merret vetëm nga palët që janë të përfshira drejtpërdrejt.
Nyjat noteriale kryejnë verifikimin e transaksionit për uniklim, parandalojnë shpenzimet e dyfishta.
Të imagjinojmë se Bob ka 100$ dhe dëshiron të transferojë 80$ tek Charlie dhe 70$ tek Dan duke përdorur të njëjtin gjendje hyrëse.

Një truk të tillë Corda nuk e lejon. Edhe pse transaksioni kalon verifikimin për vlefshmëri, verifikimi për uniklim dështojnë.
Përfundimi
Platforma Corda, e zhvilluar nga konsorciumi blockchain R3, nuk është një shembull i pastër i përdorimit të teknologjisë blockchain. Corda është një mjet mjaft i specializuar për organizatat financiare.
Burimi: habr.com
