Դիտարկենք Corda-ի հիմնական հատկանիշները և նրա յուրահատկությունը մյուս բլոկչեյնների միջև.
- Corda-ն չունի սեփական կրիպտոարժույթ:
- Corda-ն չի օգտագործում հանքարդյունաբերության հայեցակարգը և Proof-of-Work համակարգը:
- Տվյալների փոխանցումը կատարվում է միայն գործարքի/պայմանագրի կողմերի միջև: Չկա գլոբալ հեռարձակում բոլոր ցանցային հանգույցներին:
- Չկա կենտրոնական վերահսկիչ, որը կառավարում է բոլոր գործարքները:
- Corda-ն աջակցում է կոնսենսուսի տարբեր մեխանիզմների:
- Մասնակիցների միջև կոնսենսուս է ձեռք բերվում անհատական համաձայնագրի/պայմանագրի մակարդակով, այլ ոչ թե ամբողջ համակարգի մակարդակով:
- Գործարքը հաստատվում է միայն դրա հետ առնչվող մասնակիցների կողմից:
- Corda-ն ուղիղ կապ է առաջարկում մարդու պաշտոնական իրավական լեզվի և խելացի պայմանագրի կոդի միջև:
Գրացուցակը
Կորդայում մատյան հասկացությունը սուբյեկտիվ է: Չկա տվյալների միասնական կենտրոնական պահոց: Փոխարենը, յուրաքանչյուր հանգույց պահպանում է իրեն հայտնի փաստերի առանձին տվյալների բազա:
Օրինակ, պատկերացրեք 5 հանգույցներից բաղկացած ցանց, որտեղ շրջանագիծը հանգույցին հայտնի փաստ է:
Ինչպես տեսնում ենք, Էդը, Կարլը և Դեմին գիտեն 3-րդ փաստի մասին, բայց Ալիսն ու Բոբը նույնիսկ տեղյակ չեն այդ մասին։ Corda-ն երաշխավորում է, որ ընդհանուր փաստերը պահվում են յուրաքանչյուր հանգույցի տվյալների բազայում, և տվյալները կլինեն նույնական։
Պետությունները
Պետությունն է անփոփոխելի օբյեկտ, որը ներկայացնում է փաստ, որը հայտնի է մեկ կամ մի քանի ցանցային հանգույցներին ժամանակի որոշակի կետում:
Պետությունները կարող են պահել կամայական տվյալներ, օրինակ՝ բաժնետոմսեր, պարտատոմսեր, փոխառություններ, նույնականացման տվյալներ։
Օրինակ՝ հետևյալ պետությունը ներկայացնում է IOU՝ համաձայնագիր, որ Ալիսը Բոբին X գումար է պարտք.
Փաստի կյանքի ցիկլը ժամանակի ընթացքում ներկայացված է վիճակների հաջորդականությամբ: Երբ անհրաժեշտ է թարմացնել ներկայիս վիճակը, մենք ստեղծում ենք նորը և ներկայիսը նշում ենք որպես պատմական։
Գործարքի
Գործարքները հաշվապահական հաշվառումը թարմացնելու առաջարկներ են: Դրանք չեն հեռարձակվում մատյանների բոլոր մասնակիցների համար և հասանելի են միայն ցանցի այն մասնակիցներին, ովքեր օրինական իրավունք ունեն դրանք դիտելու և կառավարելու:
Գործարքը կավելացվի մատյանում, եթե այն.
- պայմանագրային ուժի մեջ
- ստորագրված բոլոր պահանջվող մասնակիցների կողմից
- չի պարունակում կրկնակի ծախսեր
Corda-ն օգտագործում է UTXO (չծախսված գործարքի ելք) մոդելը, որում գրանցամատյանների յուրաքանչյուր վիճակ անփոփոխ է:
Երբ ստեղծվում է գործարք, նախորդ գործարքի ելքային վիճակը (ըստ հեշի և ինդեքսի) փոխանցվում է մուտքագրմանը:
Գործարքի կյանքի ցիկլը.
- Ստեղծում (Այս պահին գործարքը պարզապես մատյանը թարմացնելու առաջարկ է)
- Ստորագրություններ հավաքել (Գործարքի պահանջվող կողմերը հաստատում են թարմացման առաջարկը՝ գործարքին ստորագրություն ավելացնելով)
- Գործարքը կատարել մատյանում
Երբ գործարքն ավելացվում է մատյանում, մուտքային վիճակները նշվում են որպես պատմական և չեն կարող օգտագործվել ապագա գործարքներում:
Բացի մուտքային և ելքային վիճակներից, գործարքը կարող է պարունակել.
- Հրամաններ (գործարքի պարամետր, որը ցույց է տալիս գործարքի նպատակը)
- Հավելվածներ (տոնական օրացույց, արժույթի փոխարկիչ)
- Ժամկետային պատուհաններ (գործողության ժամկետ)
- Նոտար (Նոտար, գործարքները վավերացնող ցանցի հատուկ մասնակիցներ)
Պայմանագրեր
Երբ խոսում ենք գործարքի վավերականության մասին, նկատի ունենք ոչ միայն անհրաժեշտ ստորագրությունների առկայությունը, այլև պայմանագրային վավերականությունը։ Յուրաքանչյուր գործարք կապված է պայմանագրի հետ, որն ընդունում է այն և վավերացնում մուտքային և ելքային վիճակները: Գործարքը վավեր է համարվում միայն այն դեպքում, եթե դրա բոլոր վիճակները վավեր են:
Corda-ում պայմանագրերը գրված են ցանկացած JVM լեզվով (օրինակ՝ Java, Kotlin):
class CommercialPaper : Contract {
override fun verify(tx: LedgerTransaction) {
TODO()
}
}
Դասից ժառանգություն է պետք Պայմանագիր և անտեսել մեթոդը ստուգել. Եթե գործարքը անվավեր է, ապա բացառություն կկատարվի:
Գործարքի վավերացումը պետք է լինի որոշիչ, այսինքն. պայմանագիրը միշտ պետք է կամ ընդունի կամ մերժի գործարքը: Սրա հետ կապված՝ գործարքի վավերականությունը չի կարող կախված լինել ժամանակից, պատահական թվերից, հոսթ ֆայլերից և այլն։
Կորդայում պայմանագրերը կատարվում են այսպես կոչված ավազատուփում` մի փոքր փոփոխված JVM, որը երաշխավորում է պայմանագրերի վճռական կատարումը:
հոսքեր
Ցանցային հանգույցների միջև հաղորդակցությունն ավտոմատացնելու համար ավելացվել են թելեր:
Հոսքը քայլերի հաջորդականություն է, որը հանգույցին ասում է, թե ինչպես պետք է կատարել մատյանների որոշակի թարմացում և որ պահին գործարքը պետք է ստորագրվի և վավերացվի:
Երբեմն տևում է ժամեր, օրեր, մինչև գործարքը ստորագրվի բոլոր կողմերի կողմից և մտնի մատյան: Ի՞նչ կլինի, եթե անջատեք գործարքին մասնակցող հանգույցը: Թելերն ունեն անցակետեր, որոնցում շարանի վիճակը գրվում է հանգույցի տվյալների բազայում։ Երբ հանգույցը վերականգնվում է ցանցում, այն կշարունակվի այնտեղ, որտեղ մնացել է:
Համաձայնություն
Գրասենյակ մտնելու համար գործարքը պետք է հասնի 2 համաձայնության՝ վավերականություն և եզակիություն:
Գործարքի վավերականության մասին որոշումը կայացնում են միայն դրան անմիջականորեն ներգրավված կողմերը:
Նոտարական հանգույցները ստուգում են գործարքի եզակիությունը և կանխում կրկնակի ծախսերը:
Եկեք պատկերացնենք, որ Բոբն ունի 100 դոլար և ցանկանում է 80 դոլար փոխանցել Չարլիին, իսկ 70 դոլար՝ Դենին՝ օգտագործելով նույն մուտքային վիճակը:
Կորդան ձեզ թույլ չի տա նման հնարք կատարել: Չնայած գործարքը կանցնի վավերականության ստուգում, եզակիության ստուգումը չի հաջողվի:
Ամփոփում
Corda հարթակը, որը մշակվել է R3 բլոկչեյն կոնսորցիումի կողմից, բլոկչեյն տեխնոլոգիայի մաքուր օգտագործման դեպք չէ: Corda-ն բարձր մասնագիտացված գործիք է ֆինանսական հաստատությունների համար:
Source: www.habr.com