Chcesz zostać ekspertem Corda? Poniższy samouczek Corda obejmuje wszystko, co musisz wiedzieć o tworzeniu aplikacji Corda.

Blockchain przeszedł długą drogę. Idea technologii rozproszonych rejestrów rozwiązała wiele problemów, przez które przechodzą obecne organizacje. Głównym celem jest zwiększenie wydajności, bezpieczeństwa i skalowalności bez inwestowania milionów dolarów.

Corda to platforma blockchain typu open source, która zapewnia globalny ekosystem blockchain. Zapewnia ścisłą prywatność dzięki inteligentnym umowom. Pomaga również firmie w przeprowadzaniu bezpośrednich transakcji i zapewnia efektywne kosztowo podejście do usprawnienia operacji biznesowych.

Główna różnica polega na tym, jak Corda obsługuje transakcje. Jest to DLT, który chce poprawić wykonalność, szybkość i skalowalność łańcucha blokowego, nie mając pełnej księgi z każdym partnerem. Jeśli transakcja między dwoma peerami może zostać zakończona bez informowania całej sieci, Corda zastosuje to podejście. Ma również na celu uwzględnienie innych stron, które ułatwiają śledzenie transakcji i sprawdzanie jej ważności. Jest to technologia rozproszonej księgi dla biznesu.

Zacznijmy teraz od naszego samouczka dotyczącego łańcucha blokowego Corda!


Wkrótce: Przewodnik dla początkujących po kursie rozwoju Corda

Jaka jest struktura samouczka programowania Corda?

Szczegółowo omówimy Cordę. W większości sekcji postaramy się omówić ważne koncepcje Corda.

Kluczowe pojęcia, które omówimy, obejmują następujące.

  • Stan
  • Kontrakt
  • Sekcje przepływu

Nasz tutorial utworzy aplikację IOU. IOU oznacza „I Owe yoU”. To proste przedstawienie faktu, że jedna osoba posiada pieniądze od innej osoby. Później omówimy tę koncepcję bardziej szczegółowo.

Dla ułatwienia będziemy używać języka programowania Kotlin. Jako osoba ucząca się byłoby wspaniale, gdybyś znała Kotlina, ale nie jest to umiejętność niezbędna, aby przestrzegać samouczka.

Przybory

Zanim zaczniemy korzystać z samouczka Corda dla początkujących, będziemy potrzebować następujących narzędzi. Istnieją również narzędzia blockchain, z których deweloperzy naprawdę uwielbiają korzystać. Jednak nie będziemy ich dzisiaj omawiać.

  • Kotlin
  • Gradle
  • Git
  • IntelliJ
  • Wiersz poleceń

Jako zintegrowane środowisko programistyczne będziemy używać IntelliJ. Uprości nasz rozwój.

Poradnik Corda

Co to jest Corda?

Corda jest najlepiej definiowana jako oprogramowanie typu open source, które rozwiązuje problemy biznesowe, zapewniając interoperacyjną sieć blockchain. Jego kluczowe cechy obejmują ścisłą prywatność, wydajność i bezpośrednie transakcje przy użyciu technologii inteligentnych kontraktów.

Inteligentne kontrakty używane w Cordie mogą być pisane przy użyciu języków JVM lub Java. DApps na platformie Corda jest znany jako CorDapps. Oferują również sieć węzłów peer-to-peer z możliwością korzystania z infrastruktury notariusza. Infrastruktura służy do sprawdzania poprawności i sekwencjonowania transakcji bez konieczności rozgłaszania szczegółów transakcji do każdego peera w sieci.

Innym ważnym komponentem używanym przez blockchain jest framework Flow, który zarządza negocjacjami i komunikacją między uczestnikami.

Zrozumieć Cordę Ledger

Corda Ledger nie jest podobna do systemu księgi rachunkowej używanego przez tradycyjne technologie blockchain. Dlatego musimy dokładnie zrozumieć, jak to działa, i zrozumieć je zarówno z funkcjonalnego punktu widzenia, jak i z perspektywy danych.

Księga Corda działa jak wykres. Wszystkie węzły na grafie są połączone ze sobą bezpośrednio lub przez inne węzły. Wszystkie węzły mogą się ze sobą komunikować, jeśli chcą. Zastosowanie wykresu oznacza, że ​​nie ma potrzeby globalnego rozgłaszania transakcji.

Wykrywanie węzłów

Jak więc węzły odkrywają się nawzajem? Korzystają z mapy sieci, aby znaleźć się nawzajem. Możesz o tym pomyśleć, podobnie jak książka telefoniczna. Mapa sieci zawiera metadane umożliwiające zlokalizowanie każdej z tych usług, a tym samym zapewnia wygodny sposób wykrywania map.

Jak to działa?

Największym wyzwaniem w nieglobalnej sieci transmisji blockchain jest konsensus. A więc skąd węzły wiedzą o sobie i weryfikują te informacje?

Tutaj odpowiedzią są wspólne fakty. Każdy węzeł w taki czy inny sposób nakłada się na inny węzeł. Wspólne fakty są przechowywane w księdze Corda, którą można następnie wykorzystać do zweryfikowania informacji. Księga Corda zawiera zestaw tych zestawów. Ponieważ nie ma węzła centralnego, te węzły działają jako proxy, gdy istnieje potrzeba zweryfikowania rzeczy. Aby przechowywać te informacje, każdy węzeł ma skarbiec zawierający fakt, którego nie można zmienić. W ten sposób programiści wdrażają blockchain.

Stany

Stany w łańcuchu blokowym Corda są niezmienne. Służą do przechowywania wspólnych faktów dotyczących transakcji, umowy lub kontraktu w określonym momencie.

Brzmi technicznie? Spróbujmy to opisać prostszymi słowami.

Wspólne fakty

Weźmy dwie osoby korzystające z księgi Corda. Nazwijmy je Alpha i Bravo.

Obaj mają wspólny fakt. Wspólnym faktem jest IOU (I Own You). IOU jest używane, gdy pożyczkodawca ma pieniądze należne pożyczkodawcy. Aby fakt został udostępniony, obaj mają te same wspólne informacje, które są reprezentowane w IOU.

Reprezentuj wszystko

Stany mogą być używane do reprezentowania wszystkiego. Oznacza to, że może przechowywać dowolną formę informacji dla różnych przypadków użycia corda. Jako programista możesz używać stanów do przechowywania informacji o KYC, instrumentów finansowych, pożyczek konsorcjalnych i tak dalej.

Ponadto stany mogą służyć do przechowywania wielu atrybutów. Ale jest ograniczenie dla stanów. Ograniczeniem jest to, że gdy stanowi zostanie nadany typ, nie można go zmienić. Jeśli utworzysz stan IOU, będzie on musiał określać stan IOU przez resztę swojego życia.

Niezmienne i ewoluujące

Państwa są stworzone, aby były niezmienne. Jednak ich niezmienność dotyczy czasu. Stan jest przedstawiany w określonym czasie.

Oznacza to, że oprócz stanu pierwotnego można utworzyć nowy stan. Odbywa się to, gdy następuje nowa zmiana stanu, który ma zostać zapisany. Stary stan określa się wówczas jako historyczny.

Na przykład, jeśli Alpha spłaci swój dług wobec Bravo, wówczas powstanie nowy stan, powołując się na fakt, że Alpha spłaciła dług. Ponadto, jeśli stan jest zakończony, IOU wygaśnie. Mówiąc prościej, cykl życia państwa w tym przypadku wygląda następująco.

  1. Powstaje pierwszy stan, aby pokazać, że Alpha jest zadłużona wobec Bravo. Stanowi również, że udostępnia więcej informacji o IoU, w tym datę, godzinę, stopę procentową, kwotę pożyczki i inne przydatne informacje wymagane dla IoU.
  2. Teraz, kiedy Alpha reguluje dług, tworzony jest nowy stan, który aktualizuje nowe informacje. Stary stan nie jest w żaden sposób naruszany, ponieważ jest niezmienny.
  3. Nowy stan jest teraz aktualizowany we wspólnych faktach między dwoma użytkownikami.
  4. Otóż, stary stan określany jest jako historyczny. Jedna transakcja może zawierać wiele stanów historycznych. Może to prowadzić do tworzenia sekwencji stanów.
  5. Tworzony jest nagłówek sekwencji, który odnosi się do ostatniego stanu. Ponadto najnowsze stany są również określane jako niewykorzystane.

Czytaj więcej: Przewodnik porównawczy Hyperledger vs Corda vs Ethereum

Przygotowanie środowiska programistycznego

Teraz, zgodnie z przewodnikiem programistycznym dApp, środowisko powinno być gotowe do samouczka programowania Corda. Aby rozpocząć, potrzebujesz następujących narzędzi.

  • Oracle JDK 8 JVM – v8u171 lub nowszy.
  • Git
  • IntelliJ IDEA

Klonowanie repozytorium Git

Najlepszym sposobem na rozpoczęcie naszej podróży jest uruchomienie przykładu CorDapp w naszym środowisku programistycznym. Dobra wiadomość jest taka, że ​​Corda oferuje przykładową aplikację CorDapp, którą można pobrać i uruchomić lokalnie.

Możesz sklonować repozytorium lokalnie za pomocą polecenia git clone, jak poniżej.

git clone http://github.com/roger3cev/corda-training-template.git

W samouczku będziemy używać IntelliJ do importowania repozytorium git. Otwórz plik IntelliJ. Po zakończeniu zobaczysz opcję wyewidencjonowania z Kontroli wersji. Kliknij go, a następnie sklonuj repozytorium na swoim komputerze.

Możesz zapisać projekt; znajdziesz repozytorium projektów, jak poniżej.

W prawym dolnym rogu znajduje się powiadomienie o zaimportowaniu projektu Gradle, takiego jak poniżej. Ważne jest, aby nasz samouczek Corda działał.

Kliknij „Importuj projekt Gradle”.

Musisz również skonfigurować zestaw SDK projektu. Przejdź do ustawień projektu, a następnie wybierz najnowszą wersję Java. W moim przypadku była to Java 11.0.5.

Jeśli znajdziesz jakiś błąd do uruchomienia, powinieneś zaktualizować Gradle i pozwolić mu zaimportować niezbędne repozytoria, aby działało. To zajmie trochę czasu. Więc usiądź z tyłu i poczekaj, aż się zakończy.

W moim przypadku ukończenie wszystkich aktualizacji zależności Gradle zajęło około 20 minut.

Przyjrzyjmy się szybko strukturze naszego samouczka Corda. Naszym głównym repozytorium jest plik src. Ponieważ używamy Kotlin, będziemy używać folderu Kotlin-source; znajdziesz pod nim folder src. Nie myl go z folderem java-source.

Tutaj znajdziesz wszystkie potrzebne pliki w folderze szkoleniowym. Istnieje również folder „test”, który zawiera jednostki testowe dla aplikacji.

Innym ważnym plikiem, o którym musimy wiedzieć, jest IOUState.kt. Znajduje się w ramach szkolenia > stan.

Uruchamianie testów jednostek stanu

Klasa IOUState wygląda bardzo prosto. To nie jest jeszcze zakończone. Zamierzamy użyć metodologii testowania opartego na programowaniu, aby rozwinąć klasę i przygotować ją do pracy.

Rozwój oparty na testach to świetne podejście, jeśli chodzi o nowoczesne praktyki programistyczne. Pomaga od samego początku usuwać błędy lub inne problemy.

Dlatego pobrany szablon ma już odpowiednie testy dla każdej z klas, w tym kontrakt, przepływ i stan.

Aby rozpocząć, musimy przejść do testów > Kotlin> netto > Corda > trening > stan > IOUStateTests

Znajdziesz tam już napisane testy. Zawiera również mnóstwo dokumentacji. Zespół R3 Corda poświęcił trochę czasu na stworzenie szablonu.

Musisz odkomentować sekcję, jak pokazano poniżej, aby wykonać pojedynczy test.

Wybierz kod i naciśnij Ctrl + /, aby odkomentować. Jeśli używasz MAC, użyj CMD + /, aby odkomentować.

Nadszedł czas, abyśmy przeprowadzili test jednostkowy.

Ponieważ nasza klasa IOUState jest prawie pusta, testy zakończą się niepowodzeniem i zostanie wyświetlony następujący błąd testu.

Jak widać, mówi on, że test Kotlin-source: nie powiódł się z powodu wyjątku NoSuchFieldException. Oznacza to, że test oczekuje zmiennej ilości, w której nie znalazł.

Aby to naprawić, musimy wrócić do naszego pliku IOUState.kt i go edytować. Jeśli wiesz jak zbudować aplikację blockchain, będzie to dla Ciebie łatwe zadanie.

Zanim przejdziemy dalej, musimy lepiej zrozumieć Kotlina. Aby zrozumieć kod, który zamierzamy edytować, lepiej jest uzyskać wprowadzenie. Kotlin to gęsty język programowania. Kotlin zamierza również przekształcić się w maszynę wirtualną JVM, więc powinno być dobrze z użyciem go w naszym samouczku.

  • data class IOUState → To słowo kluczowe oznacza, że ​​definiujemy klasę danych o nazwie „IOUState”.
  • val data → deklaracja zmiennej. Nazwa pola to dane
  • String = „dane” → określa domyślną wartość zmiennej danych, jeśli nic nie jest zdefiniowane.
  • Stan kontraktu → Interfejs

Jeśli dokonałeś wszystkich zmian w pliku IOUState.kt zgodnie z testem, klasa IOUState będzie wyglądać jak poniżej.

klasa danych IOUState (val kwota: kwota,

                   val pożyczkodawca: strona,

                   val pożyczkobiorca: strona,

                   val zapłacono: Kwota = Kwota (0, amount.token),

                   override val linearId: UniqueIdentifier = UniqueIdentifier ()): LinearState {

   / **

    * Ta właściwość zawiera listę węzłów, które mogą „używać” tego stanu w prawidłowej transakcji. W tym przypadku

    * Pożyczkodawca lub pożyczkobiorca.

    * /

   override val uczestnicy: Lista otrzymać() = listOf (pożyczkodawca, pożyczkobiorca)

   / **

    * Pomocnicze metody podczas budowania transakcji rozliczania i przenoszenia IOU.

    * – [zapłacić] dodaje kwotę do opłaconej nieruchomości. Nie ma walidacji.

    * – [withNewLender] tworzy kopię aktualnego stanu u nowo określonego pożyczkodawcy. Do użytku podczas przesyłania.

    * /

   zabawa pay (amountToPay: Amount) = copy (paid = paid.plus (amountToPay))

   zabawa withNewLender (newLender: Party) = copy (lender = newLender)

}

Teraz powinieneś być w stanie dodać metody pomocnicze zgodnie z powyższymi komentarzami.

Chcesz zostać ekspertem Corda? Oto przewodnik do certyfikacji R3 Corda, która przeprowadzi Cię przez proces certyfikacji.

Kontakty Corda

Dowiedzieliśmy się, że Stany mogą ewoluować w nowe stany. Deweloperzy mogą kontrolować ewolucję stanu w rejestrze za pomocą kontraktów. W tej sekcji szczegółowo poznamy umowy.

Ponieważ R3 Corda nie polega na rozgłaszaniu komunikatów do całej sieci, wykorzystuje wspólną definicję weryfikacji transakcji dla każdego typu stanu. W ten sposób sieć Corda weryfikuje transakcję i uzyskuje konsensus. Jest to dość podobne do tego, jak inne łańcuchy bloków rejestrują transakcje.

Kontrakty Corda są realizowane za pomocą funkcji. Możesz myśleć o stanach jako o jednostkach przechowywania danych, a kontrakty to sposób na weryfikację danych i zmian ich stanu. Te funkcje weryfikacyjne są specyficzne dla typu stanu.

Aby upewnić się, że stany mogą być weryfikowane i sprawne, każdy stan musi być powiązany z umową.

Każda umowa zawiera dwie pozycje, w tym kod umowy i prozę prawniczą.

Aby to zrozumieć, spójrzmy na poniższy obraz.

Jak widać, kontrakt zawiera dwa elementy, aw stanie istnieje odwołanie do kontraktu IOU dla tego kodu.

Proza prawnicza: Proza prawnicza służy jako odniesienie do umowy prawnej dotyczącej umowy. Służy do zapewnienia możliwości wykorzystania istniejących ram prawnych i systemu sądowego w przypadku sporu.

Inne kluczowe cechy kontraktów Corda to:

  • Wiele umów może odnosić się do umowy. Ponadto umowa może zawierać wiele typów stanów
  • Corda wykorzystuje funkcję weryfikacji do weryfikacji proponowanej transakcji
  • Podpis metody weryfikacji jest jak poniżej
  • zabawa weryfikacja (tx: Transakcja): Jednostka
  • Metoda weryfikacji weryfikuje transakcję poprzez wykonanie wszystkich ograniczeń. Jeśli ograniczenie nie powiedzie się, zostanie zgłoszony wyjątek; w przeciwnym razie transakcja zostanie uznana za ważną.
  • Funkcja weryfikacji jest deterministyczna.

Plik Szablony blockchain zawierają również kod kontraktów Corda. Powinieneś także podejść do kontraktów Corda podobnie do stanów. Pomogłoby, gdybyś przeszedł do jednostek testowych Corda, a następnie dodał wymagany kod w klasie kontraktu.

Corda Transactions

Naszym następnym przystankiem jest Corda Transactions. To transakcje umożliwiają zmianę stanu.

Więc czym jest transakcja? Najlepiej można go zdefiniować jako kontener, który zawiera odniesienia do stanu wejściowego (0 lub więcej). Tworzą również stany (0 lub więcej).

Transakcje umożliwiają optymalne działanie sieci, umożliwiając wielu równorzędnym interakcję w czasie rzeczywistym. Umożliwia dwóm stronom dokonanie atomowej zamiany bez utrudniania innych działań rówieśników. Ponadto transakcje mają charakter atomowy. Oznacza to, że transakcja nigdy nie może zostać zmniejszona ani podzielona.

Istnieją również trzy rodzaje transakcji: ubezpieczenia, aktualizacje i wyjścia. Każdy ma swój własny program. Wymieńmy je poniżej.

  • Ubezpieczenie → Tworzy nowe stany
  • Aktualizacje → Zmień właściwości stanu
  • Wyjścia → Usuń stany z księgi

Corda Flows

Przepływy Corda to kroki wymagane przez strony równorzędne do przeprowadzenia (wykonania) udanej transakcji.

Przepływ określa podstawową logikę biznesową CorDapp. Odpowiada za upewnienie się, że transakcje są realizowane we właściwej kolejności i odpowiednich parametrach. Ponieważ transakcje mają złożony charakter, przepływy są potrzebne, aby zapewnić, że wszystko działa zgodnie z zamierzeniami.

Kontrola przepływu zapewnia, kiedy się komunikować, co się komunikować iz kim się komunikować.

Jest to całkowite przeciwieństwo innych technologii rozproszonych rejestrów, które koncentrują się na rozpowszechnianiu szczegółów transakcji w całej sieci. Corda rozwija się w transakcjach typu punkt-punkt, w których transakcje muszą mieć dwa ważne parametry: nadawcę i odbiorcę.

Najważniejsze rzeczy, które powinieneś wiedzieć o przepływach

  • Przepływy mogą zakończyć się w ciągu kilku sekund lub mogą zająć wiele dni
  • Są całkowicie autonomiczne
  • Przepływy zasypiają, zanim znajdą oczekiwanie na odpowiedź
  • Przepływy są zgodne z Flow Framework, który zapewnia programistom mechanizm zapewniający prawidłowy rozwój maszyn stanu.
  • Przepływy mogą być zarówno sparowane, jak i jednostronne
  • Deweloperzy mogą również kodować przepływy podrzędne, aby uprościć kod

Chcesz podnieść poprzeczkę i zostać ekspertem? Oto przewodnik po tym, jak zbudować łańcuch bloków w Pythonie.

Zgoda

Ze wszystkich ekscytujących rzeczy, o których rozmawialiśmy do tej pory, Corda wyróżnia się tym, jak osiąga konsensus. Corda ma wyjątkowe podejście, dzięki czemu jest opłacalna dla firm.

Przede wszystkim Corda wykorzystuje dwa algorytmy konsensusu. Obejmuje następujące elementy

  • Konsensus unikalności → Ta metoda konsensusu zapewnia, że ​​żadne konflikty nigdy nie pojawią się w księdze
  • Konsensus weryfikacji → Konsensus weryfikacji obsługuje transakcje i zapewnia, że ​​nie wystąpią żadne konflikty zgodnie z kodem umowy. Ułatwia ewolucję wspólnego stanu w sieci.

Najważniejsze rzeczy, które powinieneś wiedzieć o Corda Consensus:

  • Unikalny konsensus zapewnia, że ​​aktualizacje księgi są zawsze niepowtarzalne. Zapewnia również, że księga jest ważna podczas aktualizacji.
  • Konsensus weryfikacyjny zapewnia, że ​​aktualizacja jest ważna.

Węzeł Corda

Ostatnią sekcją Corda, którą tutaj omówimy, jest węzeł Corda. Węzeł Corda to wysokopoziomowy widok Corda.

Więc czym dokładnie jest węzeł Corda?

Węzeł Corda to jednostka działająca na wirtualnej maszynie języka Java. Obejmuje to, co następuje

  • Oferuje usługi magazynowe i skarbce
  • SQL DB wspiera magazyny i usługi magazynowania
  • Dedykowane foldery służą do przechowywania załączników
  • Oferuje niestandardową funkcjonalność i wbudowane rozszerzenia znane jako CorDapps
  • Oferuje strukturę klienta RPC

Tak wygląda węzeł Corda.

Jak widać, zawiera wszystkie niezbędne aspekty do obsługi sieci Corda. Współdziałają z przepływem i zapewniają niestandardową funkcjonalność CorDapp.

Wniosek

To prowadzi nas do końca naszego samouczka dotyczącego Corda. Tutaj spojrzeliśmy na Cordę i próbowaliśmy zobaczyć IoU CorDapp. Omówiliśmy jego różne sekcje, korzystając ze szkolenia dotyczącego szablonów dostępnego w repozytorium Corda GitHub.

Naszym celem jest rozpoczęcie pracy z Cordą bez wyjaśniania wszystkiego, co oferuje Corda. W tym celu zawsze możesz skorzystać z dokumentacji Corda. Mamy również nadchodzący kurs dotyczący samouczka programistycznego Corda. Na pewno powinieneś to sprawdzić, jeśli potrzebujesz kompletnego przewodnika programistycznego.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me