Tworzenie kontraktu inteligentnego: to łatwiejsze niż myślisz

234
Tworzenie kontraktu inteligentnego: to łatwiejsze niż myślisz

Kontrakty inteligentne ułatwią Ci prowadzenie biznesu w nowej zdecentralizowanej gospodarce. Większość tego typu umów zawieranych jest na platformach DApp (zdecentralizowanych aplikacji, ang. Decentralized Application) takich jak Ethereum, Lisk czy Cardano, a duże firmy technologiczne – takie jak IBM – zaczynają budować własne systemy. Ma to sens, ponieważ istnieje wiele przedsiębiorstw, które wolałyby zaufać takiemu gigantowi, aby zbudował dla nich produkt, niż samodzielnie zmierzyć się z nową technologią.

Tworzenie kontraktów inteligentnych może stać się opłacalną umiejętnością dla programistów, którzy wiedzą, jak je budować. Zaskakującym elementem inteligentnych umów jest fakt, że nie są one trudne do zaimplementowania. Platformy DApp i związane z nimi narzędzia pozwalają łatwo stworzyć swoją własną technologię blockchain.

Programiści JavaScript nie powinni obawiać się blockchainu. Choć na początku wymaga nieco większego wysiłku w celu zrozumienia jego działania, łańcuch bloków jest jak większość innych frameworków, które każdy programista byłby w stanie zaimplementować.

Planowanie kontraktu inteligentnego

Kiedy po raz pierwszy tworzysz kontrakt inteligentny, powinieneś zdecydować, jakie zadanie ma on ułatwić.

W tym przykładzie skupmy się na sprzedaży biletów na jakieś wydarzenie. Zwykle wiąże się to z ogromnymi problemami z “konikami” kupującymi mnóstwo biletów oraz z osobami używającymi podrobionych wejściówek. Technologia blockchain wyróżnia się na wiele sposobów. Można wśród nich wymienić ułatwianie transakcji i śledzenie informacji.

Z tego powodu prosta linia kodu w kontrakcie może ograniczać ceny odsprzedaży biletów. Zapobiegłoby to masowemu kupowaniu biletów przez koników, ponieważ ich sprzedaż przestałaby być opłacalna. Korzystając z kontraktów inteligentnych, jesteś w stanie generować także unikatowe stokenizowane bilety, które są specyficzne dla właściciela i nie można ich sfałszować. Jeśli jesteś osobą chętnie uczestniczącą w koncertach, festiwalach i wydarzeniach sportowych, zrozumiesz zalety tego rozwiązania.

Opcje platform DApp

Następnym krokiem jest wybór platformy DApp do zbudowania umowy.

Ethereum jest największą i najbardziej ugruntowaną platformą. Ma również największą bazę użytkowników, a w każdym przedsięwzięciu aktywna społeczność, która odpowie na Twoje pytania, jest kluczem do ukończenia produktu. Jedyną wadą jest fakt, że do pisania umów używa własnego języka – Solidity.

Inna opcja – Lisk – jest platformą DApp opartą na JavaScript, więc nie musisz uczyć się żadnej nowej składni. Ma też własny sklep DApp (coś w rodzaju Google Play lub sklepu iTunes), w którym możesz opublikować swoją aplikację po jej ukończeniu.

Możesz także wypróbować Cardano, który został zbudowany przez założyciela Ethereum i ma duży, imponujący zespół. Ich produkt jest wciąż nowy, ale jeśli spełnią obietnicę oddzielenia informacji o umowie od danych transakcyjnych, może to być właściwy wybór.

Na razie wybierzmy Ethereum lub Lisk.

Dla programisty JavaScript, Lisk może wydawać się logiczną decyzją, ponieważ masz już doświadczenie w pisaniu w tym języku.

Nie skreślaj jednak Ethereum. Społeczność programistów jest tak silna, że ​​można nadrobić wszelkie braki związane z Solidity, korzystając z dostępnych dodatkowych informacji. Ethereum posiada również framework Truffle, stworzony przez Consensys, który pozwala łatwo zintegrować i przetestować stworzony kontrakt inteligentny.

Tworzenie kontraktu inteligentnego: to łatwiejsze niż myślisz1

Budowanie kontraktu inteligentnego

Solidity wydaje się bardziej groźne niż jest w rzeczywistości. Pierwszą rzeczą, jaką można zauważyć analizując składnię, jest uderzające podobieństwo do klas JavaScript. Są jednak pewne subtelne różnice, takie jak wymóg średników i użycie funkcji haszujących. Algorytmy te służą do tworzenia niepowtarzalnych kluczy i mapowania ich do pozostałych zmiennych. W naszym przykładzie użyjemy ich do stworzenia unikalnych biletów i przypisania ich do kont, które je kupują.

Podczas budowania pierwszego kontraktu Ethereum zalecamy korzystanie ze środowiska programistycznego na stronie remix.ethereum.org. To pozwala wykorzystać gotowy ekosystem w celu wdrożenia umowy i umożliwienia interakcji z nią z różnych kont Ethereum. Rozwijane menu pozwala przełączać konta i korzystać z dowolnych funkcjonalności Twojej umowy po naciśnięciu odpowiedniego przycisku.

Na co zwracać uwagę

Wyjątkową cechą Solidity jest wykorzystanie adresowania. Wszystkie konta Ethereum mają unikalne adresy, które reprezentują strony wyrażające zgodę na zawarcie umowy.

W naszym przykładowym kontrakcie sprzedaży biletów każdy, kto utworzy wydarzenie, będzie miał przypisany do niego adres konta. Za każdym razem, gdy ktoś kupi nowy bilet, środki zostaną przekazane bezpośrednio właścicielowi wydarzenia, wykluczając potrzebę korzystania z usług pośrednika. Kupujący wywołuje funkcję, a fundusze zostają pobrane z jego konta i oznakowane jego adresem, a następnie przekazane twórcy wydarzenia.

Solidity ma również wyjątkowy sposób na powiązanie środków z konkretnym wywołaniem kontraktu inteligentnego. Każde wywołanie funkcji generuje komunikat. Ta wiadomość może zawierać unikalne informacje od nadawcy, w tym adres jego konta, a także wartość w etherach, którą chce wysłać do właściciela umowy.

Warto również zauważyć, że w Solidity nie wszystkie wywołania kontraktu są bezpłatne. Aby zmienić informacje w umowie, np. kupić lub użyć biletu, sieć komputerów, które potwierdzają wykonanie kontraktu, pobiera należność w postaci “gasu”. Gas to w zasadzie opłata za korzystanie z mocy obliczeniowej w sieci.

Inne wywołania, które po prostu wysyłają zapytanie o umowę, np. sprawdzenie ceny biletu lub liczby pozostałych wejściówek, są bezpłatne. Dzieje się tak dlatego, że nie są aktualizowane żadne informacje dotyczące kontraktu – działania te nie powodują ryzyka.

Łączenie z JavaScript

Najtrudniejszą częścią pracy w Solidity jest integracja umowy z JavaScriptem. Wszystko to odbywa się za pomocą frameworka Truffle.

Pierwszym krokiem do integracji kontraktu jest jego wdrożenie i przeniesienie do sieci testowej. Truffle zapewnia własny protokół zdalnego wywoływania procedur, osobną sieć testową Ethereum, zwaną Ganache. Ten proces udostępnia wersję umowy w JSON, którą można wywołać za pomocą adresów sieci testowej za pośrednictwem aplikacji JavaScript.

Jeśli szukasz więcej informacji na temat tego procesu, na stronie Truffle znajdziesz dokumenty i świetnie opisane przykłady.

Kolejną trudnością do przezwyciężenia podczas tworzenia kontraktu inteligentnego jest jego konceptualizacja. Myśląc o blockchainie, tak jak pomyślałby twórca stron WWW, możesz go traktować jako zamiennik bazy danych. Zamiast jednego scentralizowanego źródła zawierającego wszystkie potrzebne dane, trzeba podążać za łańcuchem kontraktów i transakcji, który prowadzi do tych informacji.

W związku z faktem, że blockchain jest jak baza danych, naturalnym rozwiązaniem jest połączenie kontraktu z Twoim serwerem. Utworzenie warstwy API dla umowy sprawia, że ​​uzyskiwanie dostępu do informacji ze strony klienta aplikacji jest tak łatwe, jak wykonanie zapytania AJAX. Dobry przykład takiej konfiguracji zamieszczony jest na stronie Truffle.

Chociaż blockchain jest podobny do bazy danych, nie jest całkowicie identyczny. Posiada całkowicie unikalny protokół obejmujący transakcje, haszowanie i tworzenie bloku. To może być najtrudniejsza część programowania z użyciem Ethereum. W naszym przykładzie sprzedaży biletów musisz zbudować zapytanie dla kupowania biletu inaczej niż zapytanie umożliwiające skorzystanie z wejściówki. Maszyna wirtualna Ethereum jest wybredna w kwestii tych wywołań.

Jest to kolejny obszar, w którym ogromna społeczność programistów Ethereum bywa użyteczna. Istnieje duża szansa, że ​​na wszelkie pytania, które chciałbyś zadać, znajdziesz już gotową odpowiedź na Ethereum Stack Exchange, a jeśli nie, inni programiści są zawsze chętni udzielić pomocy podczas tworzenia kontraktu.

Podsumowanie

Ten artykuł nie miał na celu nauczyć Cię, jak zacząć pisać w Solidity. Zamiast tego miał dać Ci opis tego, czym jest kontrakt inteligentny i jak możesz go wdrożyć w aplikacji JavaScript. Tworzenie umów w oparciu o blockchain jest możliwe dla każdego, kto zna się na tworzeniu stron internetowych.

Technologia kryjąca się za blockchainem może być trudna do zrozumienia, ale jak każdy inny framework lub narzędzie dla programistów, niekoniecznie musisz wiedzieć, w jaki sposób został zbudowany, aby z niego korzystać. Nie pozwól, by tajemnicza aura blockchaina powstrzymała Cię od stworzenia czegoś wspaniałego.

 

Oryginał artykułu autorstwa Jake’a Bergala został opublikowany na CoinCentral.com