Artykuł z magazynu ITwizArchitektura ITProgramowaniePolecane tematy
Platforma Corda: technologia zainspirowana Blockchain
Na początku października pojawiła się wersja 1.0 platformy Corda stworzonej przez konsorcjum instytucji finansowych R3. Jedną z pierwszych firm wykorzystujących tę platformę do przeprowadzenia transakcji był niemiecki Commerzbank. To dopiero początek, a nasza technologia zrewolucjonizuje sposób, w jaki przeprowadzane są operacje finansowe – przekonują przedstawiciele R3.
Transakcja dokonana w oparciu o Cordę dotyczyła wystawienia przez Commerzbank krótkoterminowych papierów dłużnych w wysokości 100 000 euro dla MEAG MUNICH ERGO Asset Management. Została ona zrealizowana w czasie rzeczywistym, z pominięciem agenta płatniczego i systemu rozliczeniowego. Jak mówi Roman Schmidt, Corporate Finance Director w Commerzbank, możliwość natychmiastowego rozliczenia papierów wartościowych może przynieść znaczące korzyści w postaci uwolnienia większej ilości kapitału oraz zmniejszenia liczby pośredników wymaganych do przeprowadzenia pojedynczej transakcji.
Emisja i handel papierami wartościowymi w czasie rzeczywistym
„Transakcja pilotażowa wykazała, że emisja i handel papierami wartościowymi mogą być dokonywane w czasie rzeczywistym za pomocą technologii Blockchain. Przekształcenie transakcji z papierów wartościowych w inteligentne kontrakty może zapewnić znaczący potencjał wzrostu efektywności ich przeprowadzania” – stwierdza Roman Schmidt. „Niemniej jednak potrzeba jeszcze kilku lat zanim platforma ta będzie mogła zostać uznana za ‘gotową’. Stanie się tak wraz ze zmianą ram regulacyjnych i prawnych oraz interfejsów raportowania wymagających dostosowania do tej technologii” – dodaje.
Corda używa modelu UTXO (Unspent Transaction Output). Wszystkie dane opisywane są przy pomocy niezmiennych obiektów nazywanych stanami (states). Przykładem stanu może być skrypt dłużny (IOU). Transakcja przeprowadzona są poprzez zużycie zestawu istniejących stanów oraz utworzenie nowych. Dlatego też każdy stan ma dołączoną funkcję nazywaną kontraktem (contract). Definiuje on warunki konieczne, aby stan mógł zostać wykorzystany w transakcji.
Commerzbank nie jest jedyną instytucją korzystającą z Cordy. „Naszą platformę – poza instytucjami europejskimi – testują banki amerykańskie i azjatyckie. Pozwala ona na bezpieczną komunikację pomiędzy instytucjami finansowymi, jak również ułatwia nadzór przepływających informacji oraz umożliwia wiarygodne i zgodne ze standardami raportowanie rozsyłane do wszystkich użytkowników platformy” – przekonuje Wawrzyniec Niewodniczański, DevOps Lead i jeden z pierwszych pracowników w R3. „Naszą platformę chce wspierać wiele firm technologicznych. W listopadzie ogłosiliśmy otwarcie programu partnerskiego. Lista uczestników jest długa. To ponad 6o firm wśród których znajduje się Intel, Microsoft, Accenture czy Hewlett Packard Enterprise” – dodaje.
Środowisko przepływu danych zamiast łańcucha bloków
W odróżnieniu od typowego Blockchain, Corda nie wykorzystuje bloków. Przypomnijmy, Blockchain – rozwiązanie stojące za kryptowalutą Bitcoin – łączy transakcje w bloki i rozsyła do wszystkich uczestników sieci. Aby zapewnić pełną poufność transakcji swoimi i swoich klientów, instytucje finansowe nie mogą jednak dzielić się w takich sposób informacjami, nawet jeśli są byłby one zaszyfrowane. Jednym z podstawowych komponentów Cordy jest więc środowisko przepływu danych (Flow Framework). Ułatwia ono bezpośrednią (Point-to-Point) wymianę informacji pomiędzy organizacjami zapewniając jednocześnie, że tylko wybrani uczestnicy sieci mają dostęp do transakcji oraz gwarantując, iż każda ze stron widzi tę transakcję w ten sam sposób. Stronami nie muszą być jedynie firmy bezpośrednio w nią zaangażowane, ale również właściwa instytucja nadzoru. Tę cechę Cordy wykorzystały dwa czołowe brytyjskie banki – oraz tamtejszy regulator rynku finansowego FCA do stworzenia prototypu lepszego systemu raportowania kredytów hipotecznych.
Corda używa modelu UTXO (Unspent Transaction Output). Wszystkie dane opisywane są przy pomocy niezmiennych obiektów nazywanych stanami (states). Przykładem stanu może być skrypt dłużny (IOU). Transakcja przeprowadzona są poprzez zużycie zestawu istniejących stanów oraz utworzenie nowych. Dlatego też każdy stan ma dołączoną funkcję nazywaną kontraktem (contract). Definiuje on warunki konieczne, aby stan mógł zostać wykorzystany w transakcji.
Jak uniknąć Double Spending w świecie cyfrowym?
W świecie wirtualnym bez trudu można wykreować wiele idealnych kopii tego samego obiektu. Nieuczciwy uczestnik rynku, mógłby użyć wielokrotnie sklonowanego stanu do wypełnienia zobowiązań zawartych w wielu kontraktach jednocześnie. Mamy do czynienia wówczas z tzw. Double Spending. Aby uniknąć takich sytuacji, w Cordzie istnieje specjalna grupa maszyn (notaries), których zadaniem jest potwierdzenie, że stan nie został jeszcze skonsumowany i nadal może zostać użyty do przeprowadzenia transakcji.
Wszystkie te elementy można bardzo łatwo wykorzystać tworząc CorDapps (Corda Distributed Applications), czyli dystrybuowane aplikacjach pracujących w Cordzie. Ich zadaniem jest umożliwienie węzłom sieci, reprezentującym podmioty gospodarcze, uzgodnienie w jaki sposób powinny zostać zmodyfikowane księgi wszystkich uczestników transakcji. Umożliwiają one również automatyzację wielu elementów transakcji oraz łatwe dołączanie tekstu istotnych umów prawnych.
Na platformie Corda można stworzyć CorDapps (Corda Distributed Applications) dystrybuowane aplikacjach pracujących w Cordzie. Ich zadaniem jest umożliwienie węzłom sieci, reprezentującym podmioty gospodarcze, uzgodnienie w jaki sposób powinny zostać zmodyfikowane księgi wszystkich uczestników transakcji. Umożliwiają one również automatyzację wielu elementów transakcji oraz łatwe dołączanie tekstu istotnych umów prawnych.
Jednym z założeń budowy Cordy było oparcie jej o sprawdzone technologie. Każdy uczestnik sieci zapisuje dane o przeprowadzanych transakcjach w lokalnej, relacyjnej bazie danych nazywanej skarbcem (ang. vault). Dzięki temu można uzyskać do nich dostęp nie tylko za pomocą Cordy, ale również zwykłych zapytań SQL. Ponadto do archiwizacji danych czy implementacji procesów odtwarzania awaryjnego można wykorzystać istniejącą infrastrukturę bazodanową.
Aby ułatwić pisanie bezpiecznych CorDapps platforma wykorzystuje znaną od lat wirtualną maszynę Javy. Celem CorDapp jest osiągnięcie przez węzły sieci aplikacji, które można pisać z wykorzystaniem – znanego milionom programistów na całym świecie – języka Java. Jest to jednak łatwiejsze przy użyciu statecznie typowanego języka Kotlin, który niedawno został ogłoszony oficjalnym językiem programowania systemu Android.
Ograniczenie dla zarejestrowanych użytkowników
W odróżnieniu od publicznych sieci Blockchain, dostęp do sieci opartej na Cordzie będzie ograniczony do zarejestrowanych uczestników. Umożliwi to spełnienie wymagań prawnych i ułatwi zapobieganie nielegalnym transakcjom, takim jak “pranie pieniędzy” czy finansowanie teroryzmu. Podstawowa wersja Cordy ma w pełni otwarty kod źródłowy udostępniony na – przyjaznej dla biznesu – licencji Apache 2.0. Można go znaleźć w serwisie GitHub (github.com/corda/.
Obecnie R3 pracuje nad wersją Enterprise, w której znajdą się ważne dla klientów biznesowych elementy takie jak zarządzanie dostępem do zasobów węzła, wsparcie dla zaawansowanych baz danych czy sprzętowych rozwiązań bezpieczeństwa, w szczególności technologii SGX (Software Guard eXtensions) firmy Intel. Umożliwi ona również tworzenia wyspecjalizowanych sieci biznesowych, które pozostaną w pełni interoperacyjne z innymi sieciami pracującymi w ramach jednej technologicznej sieci Cordy (tzw. Compatibility Zone).
Korzyści wynikające z zastosowania Distributed Ledger:• natychmiastowe transakcje z pominięciem agenta płatniczego i systemu rozliczeniowego,
• możliwość wyeliminowania pracochłonnych procesów potwierdzania informacji zarówno wewnątrz, jak i na zewnątrz firmy,
• gwarancja pewności tego, że mamy pewność, iż każdy z uczestników transakcji widzi to samo,
• dane wymieniane tylko między zainteresowanymi stronami, co gwarantuje zachowanie prywatności.