Àr en distribuerad Ledger för lagring, hantering och synkronisering av finansiella förpliktelser mellan olika finansiella organisationer.

Corda har tillrÀckligt bra dokumentation med video-förelÀsningar som gÄr att hitta . Jag ska försöka kort beskriva hur Corda fungerar internt.
LÄt oss titta pÄ de huvudsakliga egenskaperna hos Corda och dess unikhet bland andra blockkedjor:
- Corda har ingen egen kryptovaluta.
- Corda anvÀnder inte konceptet med mining och Proof-of-Work-system.
- Dataöverföring sker endast mellan deltagarna i transaktionen/kontraktet. Det finns ingen global broadcasting till alla noder i nÀtverket.
- Det finns ingen central controller som styr alla transaktioner.
- Corda stödjer olika konsensusmekanismer.
- Konsensus nÄs mellan deltagarna pÄ nivÄn av enskild överenskommelse/kontrakt, snarare Àn pÄ systemets nivÄ.
- Transaktionen bekrÀftas endast av de deltagare som berörs av den.
- Corda erbjuder en direkt koppling mellan formellt mÀnskligt juridiskt sprÄk och kod av smarta kontrakt.
Ledger
Begreppet ledger i Corda Àr subjektivt. Det finns inget enhetligt centralt datalager. IstÀllet stödjer varje nod en separat databas av kÀnda fakta.
TÀnk dig till exempel ett nÀtverk med 5 noder, dÀr cirkeln Àr ett faktum som Àr kÀnt för noden.

Som vi ser vet Ed, Carl och Demi om faktum 3, medan Alice och Bob inte ens misstÀnker det. Corda garanterar att gemensamma fakta bevaras i varje nods databas, och att data Àr identiska.
TillstÄnd
Ett tillstÄnd Àr en oförÀnderlig objekt som representerar ett faktum som Àr kÀnt för en eller flera noder i nÀtverket vid en viss tidpunkt.
TillstÄnd kan lagra godtycklig information, som aktier, obligationer, lÄn och identifikationsinformation.
Till exempel representerar följande tillstĂ„nd ett IOU â en överenskommelse om att Alice Ă€r skyldig Bob beloppet X:

Livscykeln för ett faktum över tid representeras av en sekvens av tillstÄnd. NÀr det Àr nödvÀndigt att uppdatera det aktuella tillstÄndet, skapar vi ett nytt, och det aktuella mÀrks som historiskt.

Transaktioner
Transaktioner Àr förslag för att uppdatera ledgern. De sÀnds inte till alla deltagare i ledgern och Àr tillgÀngliga endast för de nÀtverksdeltagare som har laglig rÀtt att se och hantera dem.
En transaktion kommer att lÀggas till i ledgern om den Àr:
- kontraktsmÀssigt giltig
- undertecknad av alla nödvÀndiga deltagare
- innehÄller inga dubbla spenderingar (double-spends)
Corda anvÀnder UTXO-modellen (unspent transaction output), dÀr varje tillstÄnd av ledger Àr oförÀnderligt.
Vid skapande överförs previous transactions output state (genom hash och index) som input till transaktionen.

Livscykeln för en transaktion:
- Skapande (just nu Àr transaktionen bara ett förslag till en uppdatering av ledger)
- Samla in underskrifter (de nödvÀndiga deltagarna godkÀnner förslaget till uppdatering genom att lÀgga till sin underskrift pÄ transaktionen)
- Commit av transaktionen till ledger
Efter att transaktionen har lagts till i ledger, markeras ingÄende tillstÄnd som historiska och kan inte anvÀndas i framtida transaktioner.

Utöver ingÄende och utgÄende tillstÄnd kan transaktionen innehÄlla:
- Kommandon (transaktionsparameter som anger mÄlet för transaktionen)
- Bifogningar (kalender för helgdagar, valutasystem)
- Tidsfönster (aktualitetsperiod)
- Notarius (Notary, sÀrskilda deltagare i nÀtverket som validerar transaktioner)

Kontrakt
NÀr vi talar om transaktionens giltighet, avser vi inte bara att nödvÀndiga underskrifter finns, utan ocksÄ giltighet enligt kontrakt. Varje transaktion Àr kopplad till ett kontrakt som accepterar och validerar ingÄende och utgÄende tillstÄnd. Transaktionen anses vara giltig endast om alla dess tillstÄnd Àr giltiga.
Kontrakt i Corda kan skrivas pÄ valfritt JVM-sprÄk (t.ex. Java, Kotlin).
class CommercialPaper : Contract {
override fun verify(tx: LedgerTransaction) {
TODO()
}
}
MĂ„ste Ă€rva frĂ„n klassen Contract och skriva över metoden â körning av tester av den resulterande konfigurationen med hjĂ€lp av. Vid ogiltighet av transaktionen ska ett undantag kastas.
Valideringen av transaktioner mÄste vara deterministisk, dvs. kontraktet ska alltid antingen acceptera eller avvisa transaktionen. DÀrför kan transaktionens giltighet inte bero pÄ tid, slumpmÀssiga tal, nodens filer i nÀtverket, osv.
I Corda körs kontrakt i en sÄ kallad sandlÄda - en nÄgot modifierad JVM som garanterar deterministisk körning av kontrakt.
TrÄdar
För att automatisera kommunikationen mellan nÀtverksnoder har flöden lagts till.
Ett flöde Àr en sekvens av steg som instruerar en nod hur man utför en specifik uppdatering av ledger, nÀr det Àr dags att skriva under och validera transaktionen.

Ibland tar det timmar eller dagar för en transaktion att signeras av alla parter och hamna i ledger. Vad hÀnder om noden som deltar i transaktionen stÀngs av? Strömmar har kontrollpunkter dÀr strömmens tillstÄnd sparas i nodens databas. Vid ÄterstÀllning av noden i nÀtverket fortsÀtter den frÄn dÀr den slutade.
Konsensus
För att hamna i ledger mÄste transaktionen uppnÄ 2 konsensus: för giltighet och för unikt.
Beslutet om huruvida en transaktion Àr giltig fattas endast av de parter som Àr direkt involverade i den.
Notarie-noder kontrollerar transaktionen för unikhet och förhindrar dubbelutgifter.
LÄt oss sÀga att Bob har 100$ och han vill överföra 80$ till Charlie och 70$ till Dan, med hjÀlp av samma ingÄngstillstÄnd.

En sĂ„dan trick Ă€r Corda inte kapabel till. Ăven om transaktionen klarar giltighetskontrollen, kommer unikhetskontrollen att misslyckas.
Slutsats
Corda-plattformen, utvecklad av blockchain-konsortiet R3, Àr inte ett rent exempel pÄ anvÀndning av blockchain-teknologi. Corda Àr ett tillrÀckligt specialiserat verktyg för finansorganisationer.
KĂ€lla: habr.com
