Corda — open source blockchain dla biznesu

Corda — to rozproszona księga do przechowywania, zarządzania i synchronizacji zobowiązań finansowych między różnymi instytucjami finansowymi.
Corda — open source blockchain dla biznesu
Corda ma dość dobrą dokumentację z wykładami wideo, które można znaleźć tutaj. Postaram się krótko opisać, jak Corda działa w środku.

Przyjrzyjmy się głównym cechom Corda oraz jego unikalności wśród innych blockchainów:

  • Corda nie ma własnej kryptowaluty.
  • Corda nie stosuje koncepcji wydobywania ani systemu Proof-of-Work.
  • Przekazywanie danych odbywa się tylko między uczestnikami transakcji/umowy. Nie ma globalnego broadcastingu do wszystkich węzłów sieci.
  • Brak centralnego kontrolera zarządzającego wszystkimi transakcjami.
  • Corda wspiera różne mechanizmy konsensusu.
  • Konsensus osiągany jest między uczestnikami na poziomie pojedynczej umowy/transakcji, a nie na poziomie całego systemu.
  • Transakcja jest potwierdzana tylko przez uczestników, których dotyczy.
  • Corda oferuje bezpośrednie połączenie między formalnym językiem prawnym a kodem inteligentnych kontraktów.

The ledger

Pojęcie ledger w Corda jest subiektywne. Nie ma jednego centralnego repozytorium danych. Zamiast tego każdy węzeł utrzymuje oddzielną bazę danych znanych mu faktów.

Na przykład wyobraź sobie sieć z 5 węzłami, gdzie okrąg to znany węzłom fakt.

Corda — open source blockchain dla biznesu

Jak widzimy, Ed, Carl i Demi znają fakt 3, podczas gdy Alice i Bob nawet o nim nie wiedzą. Corda zapewnia, że wspólne fakty będą przechowywane w bazach danych każdego węzła i będą identyczne.

Stany

Stan — to niemodyfikowalny obiekt, który reprezentuje fakt znany jednemu lub kilku węzłom sieci w danym momencie.

Stany mogą przechowywać dowolne dane, na przykład akcje, obligacje, kredyty, informacje identyfikacyjne.

Na przykład, następujący stan reprezentuje IOU — umowę, że Alice jest winna Bobowi kwotę X:

Corda — open source blockchain dla biznesu
Cykl życia faktu z upływem czasu jest reprezentowany przez sekwencję stanów. Gdy trzeba zaktualizować bieżący stan, tworzymy nowy, a bieżący oznaczamy jako historyczny.

Corda — open source blockchain dla biznesu

Transakcje

Transakcje to propozycje aktualizacji ledger-a. Nie są one transmitowane do wszystkich uczestników ledger-a i są dostępne tylko tym uczestnikom sieci, którzy mają do nich legalne prawo dostępu i zarządzania.

Transakcja zostanie dodana do ledger-a, jeśli:

  • ważność kontraktowa
  • podpisany przez wszystkich wymaganych uczestników
  • nie zawiera podwójnych wydatków (double-spends)

Corda używa modelu UTXO (unspent transaction output), w którym każdy stan ledger-a jest niezmienny.

Podczas tworzenia, do transakcji na wejściu przekazywany jest output stanu poprzedniej transakcji (zgodnie z hashem i indeksem).

Corda — open source blockchain dla biznesu
Cykl życia transakcji:

  • Tworzenie (Na tym etapie transakcja jest jedynie propozycją aktualizacji ledger-a)
  • Zbieranie podpisów (Wymagani uczestnicy transakcji zatwierdzają propozycję aktualizacji, dodając podpis do transakcji)
  • Zatwierdzenie transakcji w ledgerze

Po dodaniu transakcji do ledger-a, stany wejściowe są oznaczane jako historyczne i nie mogą być używane w przyszłych transakcjach.

Corda — open source blockchain dla biznesu
Oprócz stanów wejściowych i wyjściowych, transakcja może zawierać:

  • Komendy (parametr transakcji wskazujący cel transakcji)
  • Załączniki (kalendarz świąt, konwerter walut)
  • Okna czasowe (termin ważności)
  • Notariusz (Notary, szczególni uczestnicy sieci, walidujący transakcje)

Corda — open source blockchain dla biznesu

Kontrakty

Mówiąc o ważności transakcji, mamy na myśli nie tylko obecność wymaganych podpisów, ale także zgodność z kontraktem. Każda transakcja związana jest z kontraktem, który akceptuje ją i waliduje stany wejściowe oraz wyjściowe. Transakcja uznawana jest za ważną tylko wtedy, gdy wszystkie jej stany są ważne.

Kontrakty w Corda są pisane w dowolnym języku JVM (np. Java, Kotlin).

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

Należy dziedziczyć po klasie Contract i nadpisać metodę verify. W przypadku nieważności transakcji ma zostać zgłoszony wyjątek.

Walidacja transakcji musi być deterministyczna, to znaczy, że kontrakt zawsze musi albo zaakceptować, albo odrzucić transakcję. W związku z tym ważność transakcji nie może zależeć od czasu, liczb losowych, plików węzła sieciowego itd.

W Corda kontrakty są wykonywane w tzw. piaskownicy — nieco zmodyfikowanej JVM, gwarantującej deterministyczne wykonanie kontraktów.

Strumienie

Aby zautomatyzować komunikację węzłów sieci, dodano przepływy.

Przepływ — to sekwencja kroków, która informuje węzeł, jak zrealizować konkretne aktualizacje ledger-a, w którym momencie należy podpisać i zwalidować transakcję.

Corda — open source blockchain dla biznesu

Czasami wymaga to godzin, dni, aby transakcja została podpisana przez wszystkie strony i trafiła do ledger. Co się stanie, gdy wyłączysz węzeł uczestniczący w transakcji? Strumień ma punkty kontrolne, w których stany strumienia zapisywane są w bazie danych węzła. Po przywróceniu węzła do sieci, będzie kontynuował od miejsca, w którym się zatrzymał.

Konsensus

Aby trafić do ledger, transakcja musi osiągnąć dwa konsensusy: w zakresie ważności i wyjątkowości.

Decyzję o ważności transakcji podejmują tylko strony bezpośrednio w nią zaangażowane.

Węzły notarialne przeprowadzają weryfikację transakcji pod kątem wyjątkowości, zapobiegając podwójnym wydatkom.

Załóżmy, że Bob ma 100$, a chce przesłać 80$ Charlie i 70$ Danowi, używając tego samego stanu wejściowego.

Corda — open source blockchain dla biznesu

Taki trik nie przejdzie w Corda. Chociaż transakcja przejdzie weryfikację pod kątem ważności, sprawdzenie wyjątkowości nie powiedzie się.

Podsumowanie

Platforma Corda, opracowana przez konsorcjum blockchain R3, nie jest czystym przykładem wykorzystania technologii blockchain. Corda to raczej wyspecjalizowane narzędzie dla instytucji finansowych.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster