Co to Smart Kontrakt?

Udostępnij
Copied to clipboard!
Co to Smart Kontrakt?
Posłuchaj tego artykułu
00:00 / 00:00

Smart Kontrakty zostały opisane przez Nicka Szabo już w latach 90 XX wieku. Już wtedy zdefiniowane zostały jako narzędzie, które formalizuje i zabezpiecza sieci komputerowe łącząc protokół sieciowy z interfejsem użytkownika. Szabo w swoim przełomowym dokumencie omówił potencjalne zastosowania dla inteligentnych umów w różnych obszarach - m.in w systemach kredytowych, procesorach płatności czy oprogramowaniu pomagającym zarządzaniem prawami autorskimi.

W świecie kryptowalut smart kontrakt najprościej zdefiniować jako aplikację lub program działający na sieci blockchainie. Smart kontrakty, to nic innego jak cyfrowe umowy, które są egzekwowane przez określony zestaw reguł bez ingerencji człowieka. Reguły te są wstępnie definiowane przez kod komputerowy, który jest replikowany i wykonywany przez wszystkie węzły działające w danej sieci.

Zasadniczo rzecz ujmując inteligentne umowy tworzone w sieciach blockchain pozwalają na tworzenie swoistych protokołów sieciowych, w których użytkownicy nie muszą wzajemnie sobie ufać. Oznacza to, że dwie strony mogą podejmować zobowiązania za pośrednictwem blockchain, bez konieczności wzajemnego poznawania się lub obdarowywania się na wzajem zaufaniem co do spełnienia zapisów umowy. Każda ze stron smart kontraktu po jego wejściu w życie może być pewne, że jeśli warunki nie zostaną spełnione, to zapisy umowy nie zostaną spełnione. Inteligentne kontrakty eliminują również konieczność zasięgania pomocy ze strony osób trzecich (pośredników), co znacząco pozwala zmniejszyć koszty zawieranych w ten sposób umów.

O ile protokół sieci Bitcoin od wielu lat wspiera już inteligentne kontrakty, to ta forma cyfrowych umów została ostatecznie rozpowszechniona przez twórcę i współzałożyciela Ethereum, Vitalika Buterina. Przy tej okazji warto również zwrócić uwagę na fakt, iż podejście do w kwestii smart kontraktów różni się pomiędzy każdą z sieci blockchain. 

W tym artykule skoncentrujemy się na smart kontraktach działających na wirtualnej maszynie Ethereum (EVM), która jest istotną częścią sieci blockchain Ethereum.


Jak działa Smart Kontrakt?

Krótko mówiąc inteligentny kontrakt, to program deterministyczny. Oznacza to, iż wykonuje one określone zadanie, gdy spełnione zostaną określone w nim warunki. Smart kontrakty to w gruncie rzeczy zestaw reguł "jeśli… to…". Pomimo swojej nazwy, smart kontrakty nie są ani inteligentne, ani umowami sklasyfikowanymi prawnie. Każdy smart kontrakt, to tak na prawdę fragment kodu, który działa i funkcjonuje dzięki rozproszonej sieci węzłów (blockchain).

W sieci Ethereum smart kontrakty są odpowiedzialne za wykonywanie określonych operacji w sieci blockchain i zarządzanie nimi, a które mają miejsce, gdy użytkownicy (właściwie adresy) wejdą ze sobą w określone interakcje. Każdy adres, który nie jest smart kontraktem nazywany jest zewnętrznie zarządzanym kontem (EOA). Mówiąc wprost: smart kontrakty są kontrolowane przez kod komputerowy, a EOA są kontrolowane przez użytkowników.

Zasadniczo rzecz ujmując każdy ze smart kontraktów w sieci Ethereum składa się z kodu umowy i dwóch kluczy publicznych. Pierwszy klucz publiczny, to ten dostarczony przez twórcę kontraktu. Drugi klucz natomiast reprezentuje samą umowę, działając jako jej identyfikator cyfrowy, który jest unikalny dla każdego smart kontraktu.

Uruchomienie jakiegokolwiek kontraktu wymaga wykonania się transakcji w sieci blockchain. Dodatkowo, każdy ze smart kontraktów musi zostać uruchomiony przez EOA (lub inny smart kontrakt). Niezależnie od źródła aktywującego działanie danego kontraktu, to pierwsza interakcja zawsze pochodzi od EOA (użytkownika).


Główne cechy

Smart kontrakty tworzone w sieci Ethereum najczęściej charakteryzują się następującymi cechami:

Są rozproszone. Smart kontrakty podlegają replikowacji i dystrybucji na wszystkie węzły obecne w sieci Ethereum. Sposób dystrybucji i uruchamiania smart kontraktów, to ich największy plus w odniesieniu do tradycyjnych, scentralizowanych rozwiązań (np. serwerów utrzymujących zapisy umowy).

Są deterministyczne. Smart kontrakty wykonują tylko te działania, do których zostały zaprojektowane, pod warunkiem spełnienia zapisanych w nich założeń. Wyniki wykonania się danego kontraktu zawsze będą takie same, niezależnie od tego kto zainicjuje pierwszą interakcję.

Są autonomiczne. Smart kontrakty świetnie sprawdzają się na polu automatyzacji wszelkiego rodzaju zadań - działają jak samowystarczalny program. Co jednak istotne: w większości przypadków, jeśli inteligentny kontrakt nie zostanie uruchomiony, to znajduje się on w stanie "uśpienia" i nie wykona żadnej akcji.

Są niezmienne. Kodu każdego ze smart kontraktów nie można zmienić po ich uruchomieniu. Można je "usunąć" tylko wtedy, gdy takowa funkcja została wcześniej w nich zaimplementowana. Możemy zatem powiedzieć, że zapisy w smart kontraktach są odporne na modyfikacje.

Można je dostosować do swoich potrzeb. Przed ostatecznym uruchomieniem, każdy ze smart kontraktów można napisać na wiele różnych sposobów. Co za tym idzie można również je wykorzystywać do tworzenia zdecentralizowanych aplikacji (dApps). Jest to możliwe biorąc pod uwagę fakt, iż sieci blockchain Ethereum charakteryzuje sięKompletnością Turinga.

Są "Trustless". Dzięki tej cesze każda ze stron smart kontraktu może wchodzić w interakcje z inną stroną bez konieczności znania drugiej strony, ani darzenia jej jakimkolwiek stopniem zaufania. Na tę cechę składa się również rzetelność i niezmienność danych zapisanych w łańcuchu sieci Blockchain.

Są transparentne. Biorąc pod uwagę fakt, iż każdy ze smart kontraktów w sieci Ethereum oparty jest o publiczną sieć blockchain, to ich kod źródłowy jest nie tylko niezmienny, ale także widoczny i dostępny dla każdego, kto chciałby go sprawdzić lub dokonać jego audytu.


Czy można zmieniać lub usuwać smart kontrakty?

Co do zasady dodanie jakiejkolwiek nowej funkcji do smart kontraktu po jego uruchomieniu w sieci Ethereum jest niemożliwe. Jednakże jeżeli twórca smart kontraktu zdecyduje się zawrzeć tworzonym przez siebie kodzie funkcję o nazwie SELFDESTRUCT, to zyska możliwość "usunięcia" kontraktu w przyszłości w celu podmiany go na nowszą wersję. Bez zamieszczenia tej funkcji w kodzie nikt ani nic nie będzie w stanie zatrzymać (czyli usunąć) smart kontraktu.

Przy tej okazji warto również wspomnieć, iż smart kontrakty zapewniają swoim twórcom osiągnięcie odpowiedniej elastyczności w zakresie ich aktualizowania - nawet biorąc pod uwagę jedną z ich głównych cech, jaką jest niezmienność. Istnieje wiele sposobów tworzenia smart kontraktów, a przyjęta metoda rzutuje na to, jakie komponenty umowy można zmodyfikować.

Najprostszą metodą dającą dostęp do relatywnie łatwego sposobu aktualizowania smart kontraktu, jest podzielenie go na mniejsze smart kontrakty. Przy takiej konstrukcji jako twórca kodu nadajesz odpowiednim komponentom (funkcjom) swojej umowy cechy niezmienności przy jednoczesnym uposażeniu innych komponentów w funkcję 'delete'.


Zalety i przykłady wykorzystania

Biorąc pod uwagę fakt, iż smart kontrakty składają się z kodu komputerowego, to są one wysoce konfigurowalne i mogą być zaprojektowane na wiele różnych sposobów, oferując wiele rodzajów usług i rozwiązań.

Będąc zdecentralizowanymi i samowykonalnymi programami, smart kontrakty są w stanie zapewnić większą przejrzystość i niższe koszty operacyjne od swoich tradycyjnych odpowiedników. W zależności od podejścia i wdrożenia mogą również zwiększyć efektywność i zmniejszyć wydatki związane z biurokracją.

Smart kontrakty okazują się szczególnie przydatne w sytuacjach, które wymagają transferu aktywów lub wymiany środków między dwiema lub więcej stronami.

Na dzień dzisiejszy smart kontrakty posiadają już wiele realnych przykładów ich zastosowania. Obecnie najczęściej wykorzystywane są w następujących obszarach: tokenizacja aktywów, systemy głosowania, portfele do przechowywania kryptowalut , zdecentralizowane giełdy oraz w produkcji gier i aplikacji mobilne. Smart kontrakty można również jednocześnie wdrożyć z innymi rozwiązaniami, jakie dostarcza technologia blockchain w ramach takich dziedzin jak opieka zdrowotnadziałalność charytatywnałańcuch dostawszeroko pojęte zarządzanie czy w dziedzinie zdecentralizowanych finansów (DeFi) .


ERC-20

Tokeny wydane przy użyciu sieci blockchain Ethereum są zgodne ze standardem znanym w branży pod nazwą ERC-20. Standard ten opisuje podstawowe funkcje wszystkich tokenów opartych na sieć Ethereum. Bardzo często zdarza się również, iż cyfrowe aktywa określa się mianem tokenów ERC-20, co jest poprawnym określeniem. Tokeny, to obecnie największa grupa cyfrowych aktywów z rodziny kryptowalut.

Od chwili startu sieci Ethereum wiele firm i startupów z branży blockchain zdecydowało się już na wdrożenie swoich cyfrowych aktywów przy użyciu smart kontraktów. Najczęściej wykorzystywanym narzędziem służącym do dystrybucji tokenów ERC-20 są tzw. ICO - dosł. Wstępna Oferta Kryptowalutowa. Smart kontrakty przy okazji ICO odpowiadają m. in za wymianę funduszy i dystrybucję tokenów w niezawodny i skuteczny sposób.


Ograniczenia

Biorąc pod uwagę fakt, iż smart kontrakty składają się z kodu komputerowego napisanego przez ludzi, to niesie to ze sobą wiele zagrożeń. Każdy kod napisany przez człowieka jest potencjalnie podatny na luki i błędy. Co do zasady smart kontrakty tworzone są przez doświadczonych programistów, ale jako iż sfera ta zyskuje coraz większą popularność, to warto mieć świadomość tego, iż źle wdrożony kod może doprowadzić do nieodwracalnych strat materialnych.

Przeciwnicy technologii smart kontraktów twierdzą, że scentralizowane systemy mogą zapewnić większość jeżeli nie wszystkie możliwości dostępne w smart kontraktach. To, co jednak odróżnia smart kontrakty od innych form cyfrowych umów, to fakt iż smart kontrakty działają w sieci P2P, a nie w oparciu o scentralizowany serwer. Dodatkowo każdy ze smart kontraktów zabezpieczany jest przez sieć blockchain, która sama w sobie zapewnia niespotykany nigdzie indziej stopień odporności na nieuprawnioną modyfikację.

Idąc dalej, niezmienność (niemodyfikowalność) kodu smart kontraktów o ile z jednej strony jest ich wielką zaletą, to w wybranych sytuacjach może okazać się zgubną cechą. W 2016 przekonała się o tym zdecentralizowana autonomiczna organizacja (DAO) o nazwie "The DAO". Z powodu błędów w wykorzystywanym przez organizację smart kontrakcie hakerom udało się skraść miliony Etherów (ETH).

Ponieważ smart kontrakt stworzony przez programistów The DAO był niemodyfikowalny (brakowało mu parametru delete i podziału na odpowiednie komponenty) w efekcie organizacja nie mogła w żaden sposób naprawić swojego błędu. To ostatecznie doprowadziło do wykonania się tzw. hard forku który dał początek drugiemu łańcuchowi Ethereum. Hard fork został wykonany, aby "odwrócić" efekty działania hackerów i zwrócenia funduszy ich prawowitym właścicielom (ten łańcuch nazywa się Ethereum). Węzły (uczestnicy) drugiego łańcucha postanowił nie ingerować w efekty wywołane wykorzystaniem błędów w kodzie smart kontraktu The DAO, stwierdzając, że rzeczy, które wydarzą się w sieci blockchain, nigdy nie powinny zostać zmienione (ten łańcuch nazywa się teraz Ethereum Classic).

Przy tej okazji należy jednak podkreślić fakt, iż błąd ani fork nie jest efektem błędu w sieci blockchain Ethereum. Obydwa wydarzenia, to skutki tego, co zostało źle zaprogramowane w smart kontrakcie organizacji The DAO - największej na tamten czas zdecentralizowanej i autonomicznej organizacji.

Kolejne z ograniczeń smart kontraktów wiąże się z ich niepewnym statusem prawnym. Nie tylko dlatego, że dziedzina ta obecnie znajduje się w tzw. szarej strefie w większości krajów, ale w głównej mierze dlatego, że smart kontrakty nie odpowiadają obecnym na świecie ramom prawnym.

Dzieje się tak ponieważ w wielu krajach tradycyjne umowy, aby uznać je za zgodne z prawem wymagają prawidłowej identyfikacji tożsamości obu (lub więcej) stron umowy i ukończenia przez nie 18 lat, jeżeli mówimy o umowach zawieranych pomiędzy osobami fizycznymi. Pseudo-anonimowość zapewniana przez technologię blockchain w połączeniu z wyłączenia pośredników z procesu podpisywania umowy stoi w opozycji do tych wymogów. Chociaż istnieją potencjalne rozwiązania tego problemu, uprawomocnienie wykonalności zapisów smart kontraktów jest prawdziwym wyzwaniem - szczególnie jeżeli weźmiemy pod uwagę to, jak globalnie rozproszone są sieci blockchain.


Krytyka

Niektórzy entuzjaści technologii blockchain postrzegają smart kontrakty jako rozwiązanie, które wkrótce zastąpi i zautomatyzuje dużą część komercyjnych i państwowych systemów lub procesów. O ile taki scenariusz jest możliwy, to jednak daleko do uzyskania takiego stanu rzeczy.

Smart kontrakty są z pewnością interesującą i przełomową technologią. To, co jednak stanowi ich zalety - cechy takiej jak rozproszony charakter, deterministyczność, transparentność oraz w pewnym sensie niemodyfikowalność - bardzo szybko może przerodzić się w ich wady.

Przy okazji krytyki smart kontraktów, sceptycy tej technologii najczęściej podnoszą argument, iż smart kontrakty w rzeczywistości nie okazują się tak świetnym rozwiązaniem dla wielu rzeczywistych problemów, o czym próbują przekonać ich fascynaci. W rzeczywistości niektórym organizacjom lepiej i łatwiej jest skorzystać z konwencjonalnych alternatyw opartych na scentralizowanym serwerze aniżeli opierać swoje rozwiązania i systemy o technologię blockchain. 

W porównaniu ze smart kontraktami, to na dzień dzisiejszy właśnie scentralizowane serwery okazują się łatwiejsze i tańsze w utrzymaniu. Wykazują również wyższą wydajność pod względem szybkości i komunikacji z innymi sieciami (są bardziej interoperacyjne).


Zakończenie

Po przeczytaniu tego artykułu nikt nie powinien mieć żadnych wątpliwości, iż inteligentne kontrakty wywarły już znaczący wpływ na świat kryptowalut i z pewnością zrewolucjonizowały przestrzeń blockchain. To, że użytkownicy końcowi mogą nawet nie wiedzieć, iż w danym momencie wchodzą oni w interakcję ze smart kontraktem idealnie podsumowuje jej szeroki zakres na polu potencjalnych implementacji - od usług finansowych po zarządzanie łańcuchem dostaw.

Smart kontrakty w połączeniu z technologią blockchain okazują się być na tyle wielofunkcyjne, że niewykluczone, iż w najbliższym czasie możemy stać się świadkami wykładniczego przyrostu aplikacji o nie opartych. Na tę chwilę jedynie czas jest w stanie pokazać nam, czy te przełomowe technologie pokonają wiele barier utrudniających ich adopcję na globalną skalę.

Loading