Skip to main content

Smart contracts to inaczej inteligentny kontrakt, inteligenta umowa. Innymi słowy jest to protokół komputerowy przeznaczony do tworzenia cyfrowych umów. Dzięki smart contracts z łatwością możesz weryfikować, egzekwować, negocjować zawartą umowę bez angażowania osób trzecich. 

Pierwsza, odpowiadająca za strukturę sieci Bitcoin implementacja Blockchaina pochodzi z 2008 r. Od tamtej pory inżynierowie opracowali ogromną ilość różnych form i pomysłów na jej działanie.

Smart contracts – czym jest?

Działania klasycznego Bitcoina nie zmieniła się aż tak bardzo. Nowe rodzaje i implementacje Blockchainów bardzo się od siebie różnią. Niektóre z nich służą po prostu jako miejsce do zapisu informacji np jak Bitcoin. Inne są w stanie uruchomić na tych danych zaprogramowane instrukcje. Te instrukcje to zwykłe programy komputerowe, nazywane smart kontraktami.

W naszym głównym artykule o smart kontraktach można znaleźć fragment:

Niektóre z Blockchainów pozwalają na uruchomienie na nich programów komputerowych, które są wykonywane i weryfikowane przez wszystkich uczestników sieci. Można więc w uproszczeniu uznać je za ogromne, rozproszone komputery, na których wykonują się programy nazywane smart kontraktami.

Paradoksalnie, najpopularniejszy z Blockchainów, czyli ten, na którym operuje Bitcoin, nie pozwala na uruchomienie smart kontraktu. Największą siecią oferującą tą funkcjonalność jest Ethereum.

Pierwszą koncepcję smart kontraktów na długo przed powstaniem pierwszego Blockchaina przedstawił Nick Szabo. Pisał o niezależnych programach działających na rozproszonej sieci, których najważniejszą cechą jest przewidywalność działania.

Jak działa smart contract?

Do intuicyjnego przedstawienia koncepcji smart kontraktu posłużymy się metaforą przedstawionego wyżej wynalazcy. Wyobraźmy sobie automat z przekąskami stojący gdzieś w poczekalni. 

Zasada jego działania jest bardzo prosta:

  • Wybranie produktu przez użytkownika
  • Automat pokazuje cenę danego produktu
  • Zapłata podanej ceny przez użytkownika
  • Automat wydaje przekąskę, jeżeli wpłacona kwota jest wystarczająca

Automat wyda wybrany produkt tylko w przypadku, jeżeli wszystkie warunki zostaną spełnione. Jeżeli użytkownik nie wybierze produktu lub nie zapłaci wymaganej kwoty, automat nie wyda produktu. 

Automatyzacja 

Smart kontrakty cechują się pełną automatyzacją ich wykonania. Analogicznie do przykład automatu z przekąskami. Jak widać jest on w pełni zautomatyzowany, nie wymaga ciągłego nadzoru i obsługi przez jego operatora.

Przewidywalność

Częstym powodem konfliktów między ludźmi jest inna interpretacja umowy, którą między sobą podpisali. Wielokrotnie można usłyszeć, że w sądzie prawnicy obu stron próbują przedstawić inne znaczenie lub interpretację słów zapisanych w kontrakcie między sądzącymi się stronami. Dzieje się tak dlatego, że nasz język, nawet formalny, nie jest aż tak jednoznaczny i szczegółowy jak język programowania.

Działanie smart kontraktu jest w pełni przewidywalne dla danego wejścia (czyli sposobu, w jaki użytkownik wchodzi z nim w interakcję). Smart kontrakt dostarcza nam informacje o środowisku, zmianach kontraktu i komputerze na którym został wykonany. Blockchain na którym taki kontrakt jest tworzony daje możliwość przeglądania kodu programu oraz pełen wgląd w jego zmiany.

Przejrzystość

Otwartość kodu smart contracts pozwala na audyt ich bezpieczeństwa i prześledzenie sposobu działania. Dzięki temu z łatwością przejrzysz wszystkie transakcje i działania wykonane przez dany kontrakt. Blockchain przechowuje i zapisuje je zawsze.

Bezpieczeństwo smart contracts

Smart kontrakt, jak każde oprogramowanie może stać się celem ataku. Decentralizacja może być tutaj tak zabezpieczeniem, jak i wektorem ataku. Jeżeli posiadasz oprogramowanie na jedynym serwerze jest ono całkowicie pod Twoją kontrolą. W momencie gdy ktoś z zewnątrz znajdzie lukę w infrastruktorze Twojej aplikacji, może ona zostać narażona na atak. Twoim celem jest usunąć tę lukę, zaktualizować aplikację zaktualizować i ją zabezpieczyć jeszcze raz.

W przypadku smart kontraktu wdrożonym na Blockchainie trzeba wziąć pod uwagę stopień trudności jego aktualizacji, gdyż wykonuje się na całej sieci. Bardzo często jest to wręcz niemożliwe i sytuacja wymaga napisania kontraktu na nowo, wdrożenia go i korzystanie z nowej instancji pod nowym adresem. 

Bardzo ważne jest przestrzeganie najnowszych dobrych praktyk bezpieczeństwa podczas implementacji smart kontraktu, niedopatrzenie na tym etapie może nas bardzo drogo kosztować. Program może pozwalać na nieuprawniony dostęp do niektórych jego funkcji lub nawet przejęcia kontroli nad zasobami kontraktu.

Optymalizacja kodu nabiera zupełnie nowego znaczenia w przypadku programowania smart kontraktu, ponieważ każda operacja (nawet proste dodawanie!) kosztuje nas tzw. gas fee, czyli tokeny, które kupujemy za realne pieniądze. W przypadku Ethereum, w czasie dużego ruchu w sieci prosta wymiana na jednej z giełd mogła kosztować nawet 30-40 dolarów!

Smart contracts i jego zastosowanie

Zastosowanie inteligentnych kontraktów wdrażamy tam gdzie potrzebujemy automatycznego, transparentnego mechanizmu do przechowywania lub przetwarzania danych.

Taki zapis można traktować jako rozproszony “skarbiec”. Do danego kontraktu możemy zdeponować pewną ilość środków i poprzez specjalną implementację zarządzania nimi, można sprawować nad nim wspólną kontrolę. To jest istota działania tzw. DAO (Decentralized Autonomous Organization). Czyli ludzi, którzy mogą być sobie całkowicie obcy, ale głos każdego z nich się liczy, jeżeli smart kontrakt ich rozpoznaje poprzez adres portfela albo posiadanie specjalnego typu tokenu.

Powstają pierwsze projekty, które próbują zastąpić fizyczne umowy napisane prawniczym językiem przy użyciu smart kontraktu. W wyniku tego wykorzystanie blockchaina do zapisania warunków umów nie dają pola do osobistej interpretacji prawników, ich wykonanie i rezultaty są przewidywalne.