Inteligentne kontrakty

Dzisiaj zaprezentuję praktyczny przykład wykorzystania inteligentnych kontraktów. Czym właściwie są? Cyfrowe kontrakty są fragmentami kodu umieszczonymi oraz wykonywanymi w sieci blockchain. Zazwyczaj realizują pewną logikę biznesową, wchodzą w interakcję z kontami użytkowników oraz innymi kontraktami w sieci.
Zasadniczo smart kontrakty są kontami kontrolowanymi przez kod – posiadają własny balans, miejsce przechowywania danych oraz kod maszynowy.
W jaki sposób utworzyć inteligentny kontrakt? Najprostszym i zdecydowanie najpopularniejszym narzędziem jest Remix. Jest dostępny z poziomu dowolnej przeglądarki. Umożliwia kompilację, testowanie oraz wdrażanie kontraktów zaimplementowanych w języku Solidity.
W przeciwieństwie do kont użytkownika kontrakty nie są współdzielone między poszczególnymi sieciami Ethereum.
Domyślnym środowiskiem testowym jest wirtualna maszyna utworzona specjalne do tego celu (JavaScript VM) uruchomiona lokalnie w obrębie naszej przeglądarki. W tym przypadku transakcje wykonywane są natychmiast – nie musimy czekać na „wykopanie” kolejnego bloku.
Dodatkowo Remix pozwala wybrać dowolną instancję Web3 np. wstrzykniętą przez wtyczkę MetaMask – możemy wchodzić w interakcję z dowolną siecią Ethereum (w tym główną) korzystając z utworzonych wcześniej kont. Nie wiesz jeszcze jak korzystać z rozszerzenia MetaMask? Odsyłam do Pierwsza transakcja w Ethereum.
Rozważmy stosunkowo prosty przykład, który świetnie ilustruje składnie oraz specyfikę języka Solidity. Napisałem kontrakt, który weryfikuje czy dana osoba (profesjonalista) ukończyła szkolenie blockchain organizowane przez ITshape.pl.
W tym miejscu warto zwrócić uwagę na różnicę między funkcją addProfessional a verify. Pierwsza z nich zapisuje dane (modyfikuje blockchain). Jej wykonanie wymaga wysłania transakcji – potrzebuje czasu niezbędnego do „wykopania” bloku oraz generuje koszty. Weryfikacja polega jedynie na odczytaniu danych z blockchain (bez opłat, natychmiast).
Prezentowany przykład został wykorzystany do budowy zdecentralizowanej aplikacji internetowej (DApp, Decentralised Application) dostępnej pod adresem www.dapp.itshape.pl. Każdy może zweryfikować określonego profesjonalistę – nikt nie jest w stanie zmodyfikować ani zmanipulować wprowadzonych danych.
Tylko właściciel kontraktu – konto, za pomocą którego wdrożyłem kontrakt może wysłać transakcję dodającą kolejnych profesjonalistów.
Zauważyłeś pewien problem? Aktualna wersja zakłada, iż dany profesjonalista był uczestnikiem tylko jednego szkolenia – kolejne instancje struktury Training będą nadpisywały poprzednie. Przemyśl jak usprawnić to rozwiązanie 😉
Chcesz wiedzieć więcej? Jak kompilować, testować oraz wdrażać kontrakty w środowisku komercyjnym? Jak napisać zdecentralizowaną aplikację webową? Z jakich technologii/frameworków korzystać? Zapisz się na najbliższe szkolenie Blockchain Developer!