Smart contracts, czyli „inteligentne kontrakty”, to jedno z najbardziej obiecujących zastosowań technologii blockchain. Wbrew pozorom (i nazwie) smart kontrakt to nie tyle umowa, co samoobsługowy mechanizm w formie programu komputerowego do wykonania całości lub części zobowiązań wynikających z zawartych umów.
Co to jest smart kontrakt?
Smart kontrakt to uzgodnione wzajemne zobowiązania stron zapisane w postaci kodu komputerowego, oparte na założeniu: jeśli wystąpi zdarzenie X, to wykonaj działanie Y.
Łatwo sobie wyobrazić korzyści wynikające z takiego rozwiązania. Jeśli zawieramy umowę najmu i wpłacamy kaucję wynajmującemu, dobrze byłoby otrzymać automatycznie klucze do mieszkania (np. w formie kodu do zamku szyfrowego) od razu po dokonaniu zapłaty, nie czekając na to, aż wynajmujący upewni się w swoim banku, że kaucja została wpłacona i mając jednocześnie gwarancję, że wynajmujący nie może skutecznie przeciwstawić się wydaniu kluczy, jeśli została dokonana zapłata.
Można też sobie wyobrazić, że zostaje zawarty smart kontrakt pomiędzy dostawcą energii elektrycznej i właścicielem domu, w ramach którego w oparciu o pomiary dokonywane przez inteligentny licznik następuje automatyczna zapłata z konta właściciela.
Jak działa smart kontrakt?
Smart kontrakt działa w następujący sposób:
1) strony najpierw ustalają warunki umowy;
2) warunki umowy zapisuje się w formie kodu komputerowego (jeśli wystąpi X, to Y) – w tym miejscu powstaje smart kontrakt;
3) kod zapisuje się w bazie danych w technologii blockchain (lub innej opartej na zasadach rozproszonego rejestru – np. ethereum) i od tej chwili nie może być on zmieniony (m. in. dzięki temu, że jest on zabezpieczony kryptograficznie);
4) jeśli wystąpi zdarzenie X, następuje realizacja funkcji Y.
Zdarzenie X może być innym wpisem w ramach blockchain (np. zapłata określonej kwoty w kryptowalucie) lub może być to np. upływ terminu. W takich przypadkach wykonanie smart kontraktu następuje całkowicie automatycznie.
Jeśli jednak zdarzenie “X” występuje poza blockchain, gdyż jest to np. wykonanie usługi w świecie fizycznym albo wystąpienie określonego zdarzenia fizycznego (np. powodzi), wykonanie smart kontraktu wymaga zaangażowania osoby trzeciej, tak zwanej “oracle” (pol. wyrocznia), który jest odpowiedzialna za wprowadzenie do blockchain wymaganych informacji do realizacji smart kontraktu. Taka strona trzecia może być wyznaczona przez strony lub może być zaufaną bazą danych lub zdecentralizowaną usługą, istniejącą w ramach blockchain.
Jak wygląda smart kontrakt?
Przykład prostego smart kontraktu:
Kod zawiera po prawej strony komentarze objaśniające jego działanie. Ten smart kontrakt służy do tworzenia i transferu tzw. tokenów – umożliwiających zakup usługi w modelu crowdfundingu lub służących do zbierania kapitału.
Jeszcze prościej – bo w formie graficznej – przedstawiony jest smart kontrakt w serwisie, który umożliwia tworzenie smart kontraktów przy pomocy edytora graficznego; można w nim zobaczyć np. prostą umowę sprzedaży lub żartobliwy przykład umowy z wróżką zębuszką.
Automatyzacja i bezpieczeństwo
Smart kontrakt umożliwia eliminację szeregu czynności związanych z wykonaniem umowy. Wykonywanie standardowej umowy polega na tym, że prawa i obowiązki stron zapisane w umowie muszą być najpierw przeanalizowane przez człowieka, który następnie w oparciu o wnioski z tej analizy dokonuje działań przewidzianych postanowieniami umowy. Tworząc smart kontrakt, strony zapisują prawa i obowiązki w ramach kodu komputerowego, który jest bezpośrednio wykonywany, poprzez uruchomienie samoistnie wykonywanych poszczególnych postanowień umowy.
Idea automatyzacji umów nie jest nowa, jednak dopiero pojawienie się technologii blockchain umożliwiło jej rzeczywistą realizację. Technologia blockchain zapewnia smart kontraktom bezpieczeństwo transakcyjne dzięki kryptograficznej i rozproszonej strukturze bazy danych, w której są one zapisane. Wykorzystanie technologii blockchain sprawia zatem, że inteligentne umowy stają się wiarygodne. Każda transakcja realizowana za pośrednictwem smart kontraktu jest dostępna przez sieć powiązanych ze sobą bloków składających się na jeden rejestr i można w każdej chwili zweryfikować, czy została prawidłowa zapisana. Co więcej, weryfikacji może dokonać każdy, kto ma dostęp do blockchaina. Każda taka osoba może odczytać kod smart kontraktu. To ważna cecha smart kontraktów, odróżniająca je od innych form automatycznych skryptów, które wykonywalne są zazwyczaj na infrastrukturze, nad którą obie strony umowy nie mają takiej samej kontroli.
Ponadto, ponieważ blockchain uniemożliwia zmianę historii transakcji (można tylko dodawać nowe zapisy), uzgodnionych warunków smart kontraktów zasadniczo nie można jednostronnie zmienić, a tym samym zatrzymać realizacji takiej umowy.
Integralność warunków umowy w ramach smart kontraktu jest z jednej strony zaletą, gdyż eliminuje ryzyko niewykonania umowy, ale z drugiej strony sprawia, że smart kontrakt może nie być najlepszym rozwiązaniem tam, gdzie konieczna jest elastyczność w wykonaniu umowy. Niewątpliwie jednak smart kontrakt świetnie sprawdzi się wszędzie tam, gdzie ważne jest przede wszystkim zagwarantowanie, że w ramach realizacji umowy wystąpi określony ciąg zdarzeń, których nie może powstrzymać żadna ze stron.
Przykładowo, smart kontrakt może zastąpić umowy powiernicze typu escrow, które są wykorzystywane w transakcjach z partnerami handlowymi, których wiarygodność trudno ocenić. Umowy escrow (rachunku powierniczego) polegają one na powierzeniu bankowi roli strażnika interesów każdej ze stron transakcji, który rozliczy transakcję dopiero po spełnieniu warunków ustalonych pomiędzy stronami. Środki zdeponowane na rachunku powierniczym mogą zostać uruchomione przez bank dopiero na podstawie np. dokumentów potwierdzających przekazanie własności przedmiotu transakcji. Jeśli wszystkie dane w ramach transakcji byłyby zapisane jako smart kontrakt, wówczas możliwa byłoby automatyczna zapłata po uaktualnieniu danych właściciela w odpowiednim rejestrze (np. księgach wieczystych), bez konieczności angażowania banku.
Ograniczenia smart kontraktów
Automatyzm smart kontraktów, który wynika z konieczności ich zapisania w języku programowania, sprawia, że trudno w nich uregulować szereg istotnych kwestii, takich jak np. odpowiedzialność umowna czy przyznanie stronom możliwości oceny danej sytuacji i podjęcia na tej podstawie odpowiedniej decyzji.
Umowa najmu typowo zawiera postanowienie, że najemca nie odpowiada za normalne zużycie przedmiotu najmu będące następstwem prawidłowego używania, jednakże opowiada za wszelkie inne szkody w przedmiocie najmu. Trudno sobie wyobrazić, w jaki sposób w ramach kodu komputerowego można by zapisać wszelkie możliwe sytuacje, które mogą wystąpić w ramach oceny czy np. niewielkie rysy na meblach mieszczą się w ramach normalnego zużycia. Podobnie trudno sobie wyobrazić zapisanie w ramach kodu takich pojęć jak „należyta staranność” lub „dobra wiara”.
Dlatego też, moim zdaniem, smart kontrakty nie powinny być (przynajmniej obecnie) używane w każdej sytuacji wymagającej zawarcia umowy. Tam, gdzie relacje umowne są złożone i gdzie strony powinny mieć prawo do oceny skutków danej sytuacji, smart kontrakty mogą być wykorzystywane wyłącznie do realizacji wybranych elementów umowy.
Nie wydaje się także na obecną chwilę rozsądne zawieranie umów wyłącznie w formie kodu komputerowego. Jeśli powstanie spór pomiędzy stronami, będzie on rozpatrywany przez sąd, który nie ma doświadczenia w interpretacji umów zapisanych w formie kodu i może go zinterpretować odmiennie od woli stron. Co więcej, zapewne interpretacji kodu dokonywać będzie biegły, na którego opinii oprze się sąd i to ten biegły de facto rozstrzygnie spór. Dlatego też rozsądne jest de lege lata tworzenie umów tradycyjnych równolegle do smart kontraktów, które muszą być jednak ze sobą jednoznacznie powiązane, tak, by nie było wątpliwości, że stanowią całość.
Smart kontrakty a konsumenci
Warto także zwrócić uwagę, że smart kontrakty nie mogą w wielu sytuacjach zastąpić „zwykłej” umowy z uwagi na regulacje prawa konsumenckiego. Smart kontrakt zapisany wyłącznie w formie kodu będzie w wielu przypadkach niezrozumiały dla stron umowy – jeśli jedną z nich będzie konsument, będzie musiał być i tak poinformowany w sposób jasny i zrozumiały o treści zawieranej umowy (art. 8 ustawy o prawach konsumenta).
Czy smart kontrakt jest ważny w świetle polskiego prawa?
Ponieważ, jak wskazałem wyżej, smart kontrakt to nie tyle umowa, co samoobsługowy mechanizm do wykonania w całości lub części zawartych umów, nie wymaga on wprowadzenia specjalnych regulacji prawnych do polskiego prawa. Smart kontrakt będzie zatem zazwyczaj elementem postanowień umownych lub częścią wykonania umowy. Ponieważ na gruncie przepisów polskiego prawa umowa może zostać zawarta przez strony w zasadzie w dowolnej formie (z zastrzeżeniem szczególnych przypadków) umowa może być także zawarta wyłącznie w formie kodu programistycznego. Jak jednak wskazałem wyżej, na obecną chwilę nie wydaje się takie rozwiązanie rozsądne, gdyż rozstrzygnięcie sporu dotyczącego umowy zapisanej w takiej formie przekraczać będzie “notoryjne” kompetencje sądu, co prowadzi do powstania trudnych do zarządzenia ryzyk.
Kto powinien pisać smart kontrakty
Smart kontrakty wymagają stworzenia kodu możliwego do wykonania jako program komputerowy. Nie oznacza to, że prawnicy stają się niepotrzebni. Nadal konieczne jest uzgodnienie warunków umowy oraz takie ich zapisanie, aby mogły być one jednoznacznie przeniesione na język kodu. Prawnicy nadal będą także pomocni w rozstrzyganiu wątpliwości (np. co do występowania potencjalnych błędów w kodzie) i sporów. Niewątpliwie jednak choćby podstawowa znajomość zasad programowania będzie przydatna dla prawnika.
Jakie są możliwe zastosowania smart kontraktów?
Smart kontrakty wydają się oczywistym rozwiązaniem wszędzie tam, gdzie realizowane są masowe transakcje, zwłaszcza wówczas, gdy warunki ich realizacji są zapisane cyfrowo. W sektorze finansowym mogą to być rozliczenia i rozrachunki handlowe lub przetwarzanie świadczeń z tytułu umowy ubezpieczenia. W sektorze przemysłowym może to być realizacja płatności w oparciu o dane o wykonaniu dostaw. Smart kontrakty mogą też być wykorzystane np. do zapewnienia wypłacania należności licencyjnych za każde użycie utworu muzycznego lub audiowizualnego.
Jednak warto spojrzeć na smart kontrakty szerzej – mogą one być wykorzystane dla opisania w zasadzie każdego procesu biznesowego, który jest oparty na danych. Mogą to być zarówno proste procesy, takie jak zapłata po dostawie jak i złożone algorytmy pierwszeństwa spłaty wierzytelności wynikających z obligacji.
Cechą szczególną smart kontraktów jest ich modułowość – kod smart kontraktu może być wielokrotnie wykorzystywany, poszczególne smart kontrakty mogą być także zestawiane ze sobą niczym klocki.
Nadchodząca automatyzacja świata wokół nas, związana w szczególności z rozwojem Internetu Rzeczy (Internet of Things) zapewne sprawi, że smart kontrakty staną się immanentnym elementem naszej rzeczywistości. Będą one opisywały biznesową logikę wszelkich zautomatyzowanych procesów, a ich weryfikowalność i pewność związana z oparciem na technologii blockchain pozwoli na stopniowe stworzenie całego systemu smart kontraktów, eliminując stopniowo potrzebę podpisywania tradycyjnych umów. Można sobie wyobrazić, że system automatyki przemysłowej będzie zawierał „samodzielnie” umowę na np. dostawę dodatkowej energii po wyczerpaniu wcześniej zamówionych limitów. Może dojść zatem do realizacji całego szeregu powiązanych ze sobą smart kontraktów.
Uwaga na ryzyka!
Podając wyżej przykłady zastosowań smart kontraktów, odwoływałem się zarówno do realiów biznesowych jak i konsumenckich, jednak w najbliższej przyszłości smart kontrakty będą głównie przynależały do świata transakcji biznesowych. Wydaje się bowiem, że transparentności smart kontraktów nie da się bowiem obecnie w pełni pogodzić z wymogami dotyczącymi ochrony prywatności i danych osobowych w realiach transakcji z konsumentami. Dotyczy to w szczególności realizacji prawa do zapomnieniawprowadzanego przez RODO w zestawieniu z brakiem możliwości edycji i usuwania zapisów w ramach blockchain.
Kolejnym ryzykiem, które wydaje się trudne do pominięcia, jest to, że smart kontrakty poprzez automatyzację zmieniają rozkład ryzyk biznesowych związanych ze sporami dotyczącymi niewykonania umowy. W standardowej umowie strona uważająca, że druga nie wykonuje umowy, nie dokona zapłaty za np. towary z wadami i to ewentualnie ta druga strona będzie ją pozywała o zapłatę. W smart kontrakcie to strona poszkodowana będzie żądała zwrotu kwoty automatycznie zapłaconej – jej zdaniem niesłusznie – co całkowicie zmienia rozkład ryzyk biznesowych pomiędzy stronami, co wynika z automatyzacji wykonania umowy w ramach smart kontraktu. Z kolei rezygnacja z automatyzacji zmniejsza atrakcyjność biznesową smart kontraktów.
Ponadto może się zdarzyć, że smart kontrakt zadziałał w sposób przez żadną ze stron niezamierzony w wyniku np. błędu w kodzie komputerowym, co spowodowało, że została dokonana zapłata mimo, że towar nie został w ogóle dostarczony. W takim przypadku odpowiedzialność ponosić może także osoba odpowiedzialna za przygotowanie smart kontraktu. Są to kwestie, które do tej pory w ogóle nie występowały w praktyce – osoba przygotowująca umowę zawsze może się zasłonić argumentem, że strony, które ją podpisały, złożyły oświadczenie woli obejmujące jej treść i powinny uwzględnić ewentualne błędy. Przy smart kontraktach umowie towarzyszy kod komputerowy, który powinien przekładać na język programowania postanowienia umowne – występuje zatem tu ryzyko popełnienia błędu przez osobę piszącą dany smart kontrakt.
Problem może także wystąpić, gdy strony wykryły błąd w kodzie smart kontraktu już po jego uruchomieniu. Zmiana tego kodu wymagać będzie zgody obu stron, podczas, gdy jedna z nich może nie być zainteresowania usunięciem luki dla niej korzystnej.
Podsumowując…
Smart kontrakty to fascynujący obszar z olbrzymim potencjałem rozwojowym. Dopiero zaczynamy przygodę z nimi, jednak nieuchronna digitalizacja i automatyzacja świata wymusi na nas wdrożenie tej koncepcji. Im więcej danych będzie w obrocie, im więcej elementów świata rzeczywistego będzie zapisywanych w postaci danych cyfrowych, tym więcej będzie zastosowań smart kontraktów. Trzeba zatem rozumieć, czym są smart kontrakty i potrafić trafnie określać ryzyka prawne i biznesowe z nimi związane.
Zapraszam do dyskusji. Jeśli coś w artykule wymaga poprawienia, będę wdzięczny za informację.
Artykuł został po raz pierwszy opublikowany w serwisie ipwsieci.pl w dniu 30 sierpnia 2017 r.