Corda — отворен код блокчейн за бизнес

Corda е разпределен Ledger за съхранение, управление и синхронизиране на финансови задължения между различни финансови организации.
Corda — отворен код блокчейн за бизнес
Corda разполага с достатъчно добра документация с видео-лекции, която може да бъде намерена тук.. Ще се опитам накратко да опиша как е устроен Corda вътре.

Нека разгледаме основните характеристики на Corda и уникалността му сред другите блокчейн технологии:

  • Corda няма собствена криптовалута.
  • Corda не използва концепцията за копаене и системата Proof-of-Work.
  • Предаването на данни става само между участниците в транзакцията/договора. Тук няма глобално разпространение към всички възли в мрежата.
  • Няма централен контролер, който управлява всички транзакции.
  • Corda поддържа различни механизми за консенсус.
  • Консенсусът се постига между участниците на ниво отделно споразумение/договор, а не на ниво цялата система.
  • Транзакцията се потвърдена само от участниците, които се отнасят към нея.
  • Corda предлага пряка връзка между формалния човешки юридически език и кода на смарт-договорите.

The ledger

Понятието ledger в Corda е субективно. Няма единно централно хранилище на данни. Вместо това всеки възел поддържа отделна база данни на известните му факти.

Например, представете си мрежа от 5 възела, където кръгът е известен на възела факт.

Corda — отворен код блокчейн за бизнес

Както виждаме, Ed, Carl и Demi знаят за факта 3, а Alice и Bob дори не предполагат за него. Corda гарантира запазването на общите факти в базата на всеки възел, като данните ще бъдат идентични.

Състояния

Състояние — това е неизменяем обект, представляващ факт, известен на един или повече възли в мрежата в определен момент от време.

Състоянията могат да съхраняват произволни данни, например, акции, облигации, кредити, идентификационна информация.

Например, следното състояние представлява IOU — споразумение, че Алиса дължи на Боб сума X:

Corda — отворен код блокчейн за бизнес
Животът на факта с течение на времето е представен със серия от състояния. Когато е необходимо да се актуализира текущото състояние, създаваме ново, а текущото помечаваме като историческо (historic).

Corda — отворен код блокчейн за бизнес

Транзакции

Транзакциите са предложения за актуализация на ledger-a. Те не се разпространяват на всички участници в ledger-a и са достъпни само за тези участници в мрежата, които имат законно право на тяхното разглеждане и управление.

Транзакцията ще бъде добавена в ledger, ако:

  • е договорно валидна
  • е подписана от всички необходими участници
  • не съдържа двойни разходи (doble-spends)

Corda използва модел UTXO (неизразходвано изходно състояние), при който всяко състояние на ledger-а е неизменяемо.

При създаването, транзакцията получава входно състояние от предишната транзакция (по хеш и индекс).

Corda — отворен код блокчейн за бизнес
Жизнен цикъл на транзакцията:

  • Създаване (В момента транзакцията е само предложение за актуализация на ledger-а)
  • Събиране на подписи (Необходимите участници в транзакцията одобряват предложението за актуализация, като добавят подпис към транзакцията)
  • Потвърдителна транзакция в ledger

След добавянето на транзакцията в ledger, входните състояния се маркират като исторически и не могат да се използват в бъдещи транзакции.

Corda — отворен код блокчейн за бизнес
Освен входните и изходните състояния, транзакцията може да съдържа:

  • Команди (параметър на транзакцията, указващ целта на транзакцията)
  • Прикачени файлове (календар на празниците, конвертор на валути)
  • Временни прозорци (срок на валидност)
  • Нотариус (Notary, специални участници в мрежата, валидиращи транзакции)

Corda — отворен код блокчейн за бизнес

Договори

Когато говорим за валидността на транзакцията, имаме предвид не само наличието на необходимите подписи, но и валидността по договора. Всяка транзакция е свързана с договор, който я приема и валидира входните и изходните състояния. Транзакцията се счита за валидна само ако всички нейни състояния са валидни.

Договорите в Corda се пишат на всеки JVM език (например, Java, Kotlin).

class CommercialPaper : Contract {
    override fun verify(tx: LedgerTransaction) {
        TODO()
    }
}

Необходимо е да наследите класа Contract и да преопределите метода verify. При невалидност на транзакцията ще се хвърли изключение.

Валидирането на транзакции трябва да бъде детерминирано, т.е. договорът винаги трябва или да приеме, или да отхвърли транзакцията. Поради това валидността на транзакцията не може да зависи от време, случайни числа, възли на мрежата и др.

В Corda договорите се изпълняват в така наречената пясъчна среда — леко модифицирана JVM, която гарантира детерминирано изпълнение на договорите.

Поток

За да автоматизира комуникацията между възлите на мрежата, бяха добавени потоци.

Потокът е последователност от стъпки, която информира възела как да извърши конкретна актуализация на ledger-a, кога е необходимо да подпише и да валидира транзакцията.

Corda — отворен код блокчейн за бизнес

Понякога отнема часове или дни, докато транзакцията бъде подписана от всички страни и попадне в регистъра. Какво ще се случи, ако се изключи възел, участващ в транзакцията? Потоците имат контрольни точки, в които състоянието на потока се записва в базата данни на възела. При възстановяване на възела в мрежата той ще продължи от мястото, където е спрял.

Консенсус

За да попадне в регистъра, транзакцията трябва да достигне 2 консенсуса: за валидност и за уникалност.

Решението за валидността на транзакцията се взема само от страните, пряко участващи в нея.

Нотариалните възли извършват проверка на уникалността на транзакцията, предотвратявайки двойни разходи.

Представете си, че Bob има 100$ и иска да преведе 80$ на Charlie и 70$ на Dan, използвайки същото входно състояние.

Corda — отворен код блокчейн за бизнес

Такъв номер Corda няма да позволи. Въпреки че транзакцията ще премине проверката за валидност, проверката за уникалност ще се провали.

Заключение

Платформата Corda, разработена от блокчейн консорциума R3, не е чист пример за използване на технологията блокчейн. Corda е достатъчно специализирано средство за финансовите организации.

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster