Czym Są Smart Kontrakty?
Strona Główna
Artykuły
Czym Są Smart Kontrakty?

Czym Są Smart Kontrakty?

Średnio zaawansowany
Opublikowane Sep 16, 2019Zaktualizowane Jun 9, 2023
9m

Wprowadzenie

Nick Szabo po raz pierwszy opisał smart kontrakty w latach 90 XX wieku. Wtedy zdefiniował smart kontrakt jako narzędzie, które formalizuje i zabezpiecza sieci komputerowe poprzez łączenie protokołów z interfejsami użytkownika.

Szabo omówił potencjalne wykorzystanie tej technologii w różnych dziedzinach, które obejmują umowy kontraktowe - takie jak systemy kredytowe, przetwarzanie płatności i zarządzanie prawami do treści.

W świecie kryptowalut możemy zdefiniować smart kontrakt jako aplikację lub program działający na blockchainie. Zazwyczaj działają one jako umowa cyfrowa, która jest egzekwowana przez określony zestaw reguł. Reguły te są predefiniowane przez kod komputerowy, który jest replikowany i wykonywany przez wszystkie węzły w sieci.

Smart kontrakty na Blockchainie umożliwiają tworzenie protokołów, które wyłączają czynnik zaufania. Oznacza to, że dwie strony mogą podejmować zobowiązania za pośrednictwem blockchainu, bez konieczności wzajemnego poznania się lub zaufania kontrachentowi. Daje im to pewność, że jeśli warunki nie zostaną spełnione, kontrakt nie zostanie wyegzekwowany. Poza tym wykorzystanie smart kontraktów może wyeliminować potrzebę pośredników, znacznie obniżając koszty operacyjne.

Chociaż protokół Bitcoina od wielu lat wspiera smart kontrakty, spopularyzował je twórca i współzałożyciel Ethereum, Vitalik Buterin. Warto jednak zauważyć, że każdy blockchain może prezentować inną metodę wdrażania tego typu rozwiązań. 

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 smart kontrakt działa jak program deterministyczny. Oznacza to, iż wykonuje on określone zadanie, gdy spełnione zostaną określone w nim warunki. Smart kontrakty to w gruncie rzeczy zestawy 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 i zarządzanie określonymi operacjami w sieci blockchain, 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 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, pierwsza interakcja zawsze pochodzi od EOA (użytkownika).


Kluczowe funkcje

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ń.

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 smart 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.

Są konfigurowalne. Przed wdrożeniem, smart kontrakty można zakodować na wiele różnych sposobów. Dzięki temu, mogą one być używane do tworzenia wielu rodzajów zdecentralizowanych aplikacji ( DApps'ów). Jest to związane z faktem, że Ethereum jest blockchainem, który może pochwalić się właściwością 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?

Po wdrożeniu nie można dodawać nowych funkcji do kontraktu na Ethereum. Jeśli jednak twórca umieści w kodzie funkcję SELFDESTRUCT, będzie w stanie w przyszłości „usunąć” smart kontrakt – i zastąpić go nowym. Natomiast jeśli taka funkcja nie będzie zaimplementowana z wyprzedzeniem, nie będzie możliwości usunięcia.

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) swojego kontraktu 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, 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.

Innymi słowy, smart kontrakty można zaprojektować pod kątem szerokiej gamy zastosowań. Niektóre przykłady obejmują tworzenie tokenizowanych aktywów, systemów głosowania, portfeli krypto, zdecentralizowanych giełd, gier i aplikacji mobilnych. Mogą być również wdrażane wraz z innymi rozwiązaniami blockchain, które mają zastosowanie w dziedzinie opieki zdrowotnej, organizacji charytatywnych, łańcucha dostaw, zarządzania i zdecentralizowanych finansów (DeFi).


ERC-20

Tokeny emitowane na blockchainie Ethereum są zgodne ze standardem znanym jako ERC-20. Standard opisuje podstawowe funkcje wszystkich tokenów opartych na Ethereum. Jako takie, te zasoby cyfrowe są często określane jako tokeny ERC-20 i stanowią znaczną część istniejących kryptowalut.
Wiele firm blockchain i startupów wdrożyło smart kontrakty w celu wydawania swoich cyfrowych tokenów w sieci Ethereum. Po emisji, większość z tych firm rozprowadzała swoje tokeny ERC-20 za pośrednictwem wydarzeń zwanych Initial Coin Offering (ICO). W większości przypadków wykorzystanie smart kontraktów umożliwiło wymianę środków i dystrybucję tokenów w sposób niewymagający zaufania oraz efektywny.


Ograniczenia

Biorąc pod uwagę fakt, iż smart kontrakty składają się z kodu komputerowego napisanego przez ludzi, niosą 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.

Co więcej, niektórzy twierdzą, że scentralizowane systemy mogą obsługiwać większość rozwiązań i funkcjonalności oferowanych przez smart kontrakty. Główna różnica polega jednak na tym, że smart kontrakty działają w rozproszonej sieci P2P, a nie na scentralizowanym serwerze. A jako iż opierają się na systemie blockchain, są albo niezmienne, albo bardzo trudne do zmiany.

Niezmienność może być wspaniała w niektórych sytuacjach, ale bardzo zła w innych. Na przykład, kiedy zdecentralizowana organizacja autonomiczna (DAO) o nazwie „The DAO” została zhakowana w 2016 roku, miliony etheru (ETH) zostały skradzione z powodu błędów w ich kodzie kontraktu.

Ponieważ ich smart kontrakt był niezmienny, programiści nie byli w stanie naprawić kodu. Doprowadziło to w końcu do hard forka, dającego początek drugiemu łańcuchowi Ethereum. Mówiąc najprościej, jeden łańcuch „odwrócił” włamanie i zwrócił środki prawowitym właścicielom (stanowi on również część obecnego blockchainu Ethereum). Drugi łańcuch postanowił nie ingerować w hack, stwierdzając, że rzeczy, które dzieją się na blockchainie, nigdy nie powinny być zmieniane (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łączeniem pośredników z procesu podpisywania 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).


Przemyślenia końcowe

Po przeczytaniu tego artykułu nikt nie powinien mieć żadnych wątpliwości, iż smart 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ą w interakcję ze smart kontraktem idealnie podsumowuje szeroki zakres na polu potencjalnych implementacji - od usług finansowych po zarządzanie łańcuchem dostaw.

Smart kontrakty w połączeniu z blockchainem mają potencjał, by namieszać w prawie wszystkich obszarach naszego życia społecznego. Natomiast tylko czas pokaże, czy te przełomowe technologie zdołają pokonać wiele barier utrudniających adopcję na dużą skalę.