je distribuirana knjiga za pohranu, upravljanje i sinkronizaciju financijskih obaveza između različitih financijskih organizacija.

Corda ima prilično dobru dokumentaciju s video predavanjima, koja se može pronaći . Pokušat ću ukratko opisati kako Corda funkcionira unutar.
Razmotrite glavne značajke Corda i njegovu jedinstvenost u odnosu na druge blockchainove:
- Corda nema vlastitu kriptovalutu.
- Corda ne koristi koncept rudarenja i sustav Proof-of-Work.
- Prijenos podataka događa se samo između sudionika transakcije/ugovora. Ovdje nema globalnog emitiranja svim čvorovima mreže.
- Nema središnjeg kontrolora koji upravlja svim transakcijama.
- Corda podržava različite mehanizme konsenzusa.
- Konsenzus se postiže između sudionika na razini pojedinog dogovora/ugovora, a ne na razini cijelog sustava.
- Transakciju potvrđuju samo sudionici koji su uključeni u nju.
- Corda nudi izravnu povezanost između formalnog ljudskog pravnog jezika i koda pametnih ugovora.
Glavna knjiga
Pojam glavne knjige u Corda je subjektivan. Nema jedinstvenog središnjeg skladišta podataka. Umjesto toga, svaki čvor održava zasebnu bazu podataka poznatih mu činjenica.
Na primjer, zamislite mrežu od 5 čvorova, gdje je krug poznata činjenica za čvor.

Kako vidimo, Ed, Carl i Demi znaju za činjenicu 3, dok Alice i Bob ni ne sumnjaju o tome. Corda garantira očuvanje zajedničkih činjenica u bazi svakog čvora, pri čemu će podaci biti identični.
Stanja
Stanje je nepromjenjivi objekt koji predstavlja činjenicu poznatu jednom ili više čvorova mreže u određenom trenutku.
Stanja mogu čuvati proizvoljne podatke, poput dionica, obveznica, kredita, identifikacijskih informacija.
Na primjer, sljedeće stanje predstavlja IOU — sporazum da Alice duguje Bobu iznos X:

Životni ciklus činjenice tijekom vremena predstavljen je nizom stanja. Kada je potrebno ažurirati trenutačno stanje, stvaramo novo, a trenutačno označavamo kao povijesno.

Transakcije
Transakcije su prijedlozi za ažuriranje glavne knjige. One se ne emitiraju svim sudionicima glavne knjige i dostupne su samo onim članovima mreže koji imaju zakonito pravo na njihov pregled i upravljanje.
Transakcija će biti dodana u glavnu knjigu ako je:
- ugovor je valjan
- potpisan od strane svih potrebnih sudionika
- ne sadrži dvostruke potrošnje (double-spends)
Corda koristi UTXO model (unspent transaction output), u kojem je svako stanje knjige nepromjenjivo.
Pri stvaranju, transakciji se predaje output stanje prethodne transakcije (prema hash-u i indeksu).

Ciklus života transakcije:
- Stvaranje (Trenutno je transakcija samo prijedlog za ažuriranje knjige)
- Prikupljanje potpisa (Potrebni sudionici transakcije odobravaju prijedlog za ažuriranje dodavanjem potpisa na transakciju)
- Commit transakcije u knjigu
Nakon dodavanja transakcije u knjigu, ulazna stanja se označavaju kao povijesna i ne mogu se koristiti u budućim transakcijama.

Osim ulaznih i izlaznih stanja, transakcija može sadržavati:
- Komande (parametar transakcije koji označava cilj transakcije)
- Prilozi (kalendar blagdana, konverter valuta)
- Vremenska okna (rok trajanja)
- Notar (Notary, posebni sudionici mreže koji validiraju transakcije)

Ugovori
Kada govorimo o valjanosti transakcije, podrazumijevamo ne samo prisutnost potrebnih potpisa, već i valjanost prema ugovoru. Svaka transakcija je povezana s ugovorom koji ju prihvaća i validira ulazna i izlazna stanja. Transakcija se smatra valjanom samo ako su sva njezina stanja valjana.
Ugovori u Corda pišu se na bilo kojem JVM jeziku (npr. Java, Kotlin).
class CommercialPaper : Contract {
override fun verify(tx: LedgerTransaction) {
TODO()
}
}
Potrebno je nasljeđivati od klase Contract i redefinirati metodu verify. U slučaju nevaljanosti transakcije izbacuje se iznimka.
Validacija transakcija mora biti deterministička, tj. ugovor uvijek mora ili prihvatiti ili odbiti transakciju. S tim u vezi, valjanost transakcije ne može ovisiti o vremenu, slučajnim brojevima, datotekama čvora mreže itd.
U Corda, ugovori se izvršavaju u takozvanoj pješčanoj kutiji — malo izmijenjenoj JVM koja jamči determinističko izvršavanje ugovora.
Tokovi
Kako bi se automatizirala komunikacija čvorova mreže, dodani su tokovi.
Tok je niz koraka koji obavještava čvor kako izvesti konkretno ažuriranje knjige, kada je potrebno potpisati i validirati transakciju.

Ponekad su potrebni sati, dani da transakcija bude potpisana od strane svih strana i uđe u ledger. Što će se dogoditi ako isključimo čvor koji sudjeluje u transakciji? Tokovi imaju kontrolne točke, u kojima se stanja toka bilježe u bazu podataka čvora. Kada se čvor obnovi u mreži, nastavit će od točke na kojoj je stao.
Konsenzus
Da bi transakcija ušla u ledger, mora postići 2 konsenzusa: o validnosti i o jedinstvenosti.
Odluku o validnosti transakcije donose samo strane koje su izravno uključene u nju.
Notarijalni čvorovi provode provjeru transakcije na jedinstvenost, sprječavajući dvostruke troškove.
Zamislimo da Bob ima 100$, i želi poslati 80$ Charlieju i 70$ Danu, koristeći isto ulazno stanje.

Takav trik Corda neće dopustiti. Iako će transakcija proći test validnosti, test jedinstvenosti će propasti.
Zaključak
Platforma Corda, koju je razvila blockchain konzorcij R3, nije čisti primjer upotrebe blockchain tehnologije. Corda je dovoljno specijalizirano sredstvo za financijske institucije.
Izvor: habr.com
