Wstęp

W latach 90. Nick Szabo jako pierwszy zaproponował koncepcję inteligentnych kontraktów. Zdefiniował wówczas inteligentne kontrakty jako narzędzia standaryzujące i zapewniające bezpieczeństwo sieci komputerowych poprzez połączenie protokołów i interfejsów użytkownika.

Szabo omówił potencjalne wykorzystanie inteligentnych kontraktów w różnych obszarach związanych z umowami umownymi, takich jak systemy kredytowe, procesy płatności i zarządzanie prawami do treści.

W dziedzinie kryptowalut inteligentne kontrakty można zdefiniować jako aplikacje lub programy działające na blockchainie. Zwykle funkcjonują jako protokół cyfrowy, narzucony określonymi regułami. Reguły te są predefiniowane przez kod komputerowy i są replikowane i wykonywane przez wszystkie węzły sieci.

Inteligentne kontrakty Blockchain wspierają tworzenie protokołów pozbawionych zaufania. Oznacza to, że strony umowy podejmują zobowiązanie za pośrednictwem blockchain, nie znając się ani nie ufając sobie nawzajem. Strony ustaliły, że w przypadku niespełnienia warunków umowa nie zostanie zrealizowana. Dodatkowo zastosowanie inteligentnych kontraktów eliminuje potrzebę pośredników, znacząco obniżając koszty operacyjne.

Chociaż inteligentne kontrakty są wspierane przez protokół Bitcoin od wielu lat, spopularyzowały się dzięki twórcy i współzałożycielowi Ethereum Vitalikowi Buterinowi. Warto zauważyć, że każdy blockchain inaczej implementuje inteligentne kontrakty.​

W tym artykule skupimy się na inteligentnych kontraktach działających w wirtualnej maszynie Ethereum (EVM), ważnej części blockchainu Ethereum.


Jak działają inteligentne kontrakty?

Mówiąc najprościej, inteligentny kontrakt to deterministyczny program, który po spełnieniu określonych warunków wykonuje określone zadania. Dlatego inteligentne systemy kontraktów zwykle stosują się do instrukcji warunkowych „jeśli…to…”. Chociaż koncepcja „inteligentnej umowy” jest dobrze znana, nie jest ona ani umową prawną, ani inteligentną. Są po prostu fragmentem kodu działającym w rozproszonym systemie blockchain.

W sieci Ethereum inteligentne kontrakty odpowiadają za wykonywanie i zarządzanie operacjami typu blockchain, gdy użytkownicy (adresy) wchodzą ze sobą w interakcję. Adresy poza inteligentnymi kontraktami nazywane są „kontami zewnętrznymi (EOA)”. Dlatego inteligentne kontrakty są kontrolowane przez kod komputerowy, podczas gdy konta zewnętrzne (EOA) są kontrolowane przez użytkowników.

Inteligentne kontrakty Ethereum składają się zasadniczo z kodu kontraktu i dwóch kluczy publicznych. Pierwszy klucz publiczny jest dostarczany przez twórcę kontraktu, drugi klucz publiczny jest samą umową i służy jako unikalny identyfikator cyfrowy dla każdego inteligentnego kontraktu.

Całe wdrażanie inteligentnych kontraktów odbywa się poprzez transakcje typu blockchain i jest aktywowane dopiero po wywołaniu konta zewnętrznego (EOA) lub innego inteligentnego kontraktu. Jednak inteligentne kontrakty są zazwyczaj uruchamiane przez konto zewnętrzne (EOA), czyli użytkownika po raz pierwszy.


Kluczowe cechy

Inteligentne kontrakty Ethereum mają następujące wspólne cechy:

Rozpowszechniane. Inteligentne kontrakty są replikowane i dystrybuowane we wszystkich węzłach sieci Ethereum. Różni się to bardzo od innych scentralizowanych rozwiązań opartych na serwerach.

Pewność. Inteligentne kontrakty wykonują wcześniej zaprojektowane działania tylko wtedy, gdy spełnione są wymagania. I niezależnie od tego, kto to zrobi, wyniki pozostają spójne.

autonomia. W porównaniu z programami „samowykonującymi się”, inteligentne kontrakty automatycznie wykonują różne zadania. W większości przypadków niewyzwolone inteligentne kontrakty pozostają w stanie „uśpienia” i nie wykonują żadnych działań.

Niezmienność. Inteligentnych kontraktów nie można zmienić po ich wdrożeniu. Inteligentne kontrakty można „usunąć” dopiero po zaimplementowaniu określonych funkcji. Równie dobrze moglibyśmy więc powiedzieć, że inteligentne kontrakty zapewniają kod odporny na manipulacje.

Dostosowywanie. Przed wdrożeniem inteligentne kontrakty są kodowane na różne sposoby. Dlatego można go używać do tworzenia szerokiej gamy zdecentralizowanych aplikacji (DApps). Idzie to w parze z faktem, że Ethereum jest blockchainem kompletnym opartym na architekturze Turinga.

Nie ufaj. Dwie lub więcej stron może wchodzić w interakcje za pośrednictwem inteligentnych kontraktów bez konieczności wzajemnej znajomości i zaufania. Dodatkowo technologia blockchain zapewni dokładność danych.

Przezroczystość. Podstawą inteligentnych kontraktów jest publiczny blockchain, więc kod źródłowy jest nie tylko niezmienny, ale także otwarty i przejrzysty dla każdego.


Czy inteligentne kontrakty można zmienić lub usunąć?

Po wdrożeniu inteligentne kontrakty Ethereum nie mogą dodawać nowych funkcji. O ile jednak twórca kontraktu zastrzeże w kodzie funkcję „SELFDESTRUCT”, funkcja ta może później „usunąć” inteligentny kontrakt i zastąpić go nowym kontraktem. Jeśli ta funkcja nie jest zastrzeżona w kodzie, inteligentnego kontraktu nie można usunąć.

Warto zaznaczyć, że dzięki tzw. inteligentnym kontraktom z możliwością aktualizacji deweloperzy mogą działać bardziej elastycznie na niezmienności kontraktu. Istnieje wiele sposobów tworzenia inteligentnych kontraktów z możliwością aktualizacji, każdy o różnym poziomie złożoności.

Jako prosty przykład załóżmy, że inteligentny kontrakt jest podzielony na wiele mniejszych kontraktów. Niektóre części zaprojektowano tak, aby były niezmienne, podczas gdy inne umożliwiają funkcje „usuwania”. Oznacza to, że części kodu (inteligentne kontrakty) można usunąć i zastąpić, podczas gdy inne funkcjonalności pozostają niezmienione.


Korzyści i przypadki użycia

Jako kody programowalne, inteligentne kontrakty można w dużym stopniu dostosowywać, projektować na wiele sposobów i zapewniać szeroką gamę usług i rozwiązań.

Jako zdecentralizowane i samowykonujące się programy, inteligentne kontrakty zwiększają przejrzystość i zmniejszają koszty bieżące. W zależności od wdrożenia inteligentne kontrakty mogą również poprawić efektywność wdrożenia i zmniejszyć uciążliwe koszty.

Inteligentne kontrakty są szczególnie przydatne w przypadku transferów środków lub transakcji pomiędzy dwiema lub więcej stronami.

Innymi słowy, inteligentne kontrakty można dostosować do szerokiego zakresu zastosowań, w tym do tworzenia tokenizowanych aktywów, systemów głosowania, portfeli kryptowalut, zdecentralizowanych giełd, gier i aplikacji mobilnych. Inteligentne kontrakty można również wdrażać z innymi rozwiązaniami typu blockchain obejmującymi takie obszary, jak opieka zdrowotna, działalność charytatywna, łańcuch dostaw, zarządzanie i zdecentralizowane finanse (DeFi).


ERC-20

Tokeny wyemitowane na blockchainie Ethereum są zgodne ze standardem ERC-20. Standard ten określa podstawową funkcjonalność wszystkich tokenów Ethereum. Dlatego te zasoby cyfrowe są często nazywane „tokenami ERC-20” i stanowią dużą część istniejących kryptowalut.

Wiele firm i start-upów działających w oparciu o technologię blockchain wdrożyło inteligentne kontrakty w celu autonomicznego wydawania tokenów cyfrowych w sieci Ethereum. Po wydaniu tokena większość firm dystrybuuje swoje tokeny ERC-20 w ramach pierwszej oferty monet (ICO). W większości przypadków zastosowanie inteligentnych kontraktów pozwala skutecznie realizować transakcje funduszy i dystrybucję tokenów w sposób pozbawiony zaufania.


ograniczenia

Inteligentne kontrakty składają się z napisanego przez człowieka kodu komputerowego. Kod będzie miał wady i luki, które niosą ze sobą wiele zagrożeń. W idealnym przypadku inteligentne kontrakty powinny być pisane i wdrażane przez doświadczonych programistów, zwłaszcza gdy w grę wchodzą wrażliwe informacje i duże kwoty pieniędzy.

Ponadto niektórzy uważają, że scentralizowane systemy mogą zapewnić większość rozwiązań i funkcji inteligentnych kontraktów. Główna różnica polega na tym, że inteligentne kontrakty działają w rozproszonej sieci P2P, a nie na scentralizowanym serwerze. Co więcej, inteligentne kontrakty opierają się na systemach blockchain i dlatego często nie można nimi manipulować ani trudno je zmienić.

Niezmienność inteligentnych kontraktów ma oczywiste zalety, ale w niektórych przypadkach może przynieść efekt przeciwny do zamierzonego. Na przykład w 2016 r. zhakowano zdecentralizowaną autonomiczną organizację „The DAO”, w wyniku czego zniknęły miliony monet Ethereum (ETH). Powodem były wady kodu inteligentnego kontraktu.

Ponieważ inteligentne kontrakty są niezmienne, programiści nie mogą naprawić kodu. Ostatecznie doprowadziło to do hard forku, z którego narodził się drugi łańcuch Ethereum. Mówiąc najprościej, łańcuch (część obecnego blockchainu Ethereum) zostaje „przywrócony” do stanu sprzed włamania, zwracając środki pierwotnym właścicielom. Drugi łańcuch, obecnie znany jako Ethereum Classic, zdecydował się nie interweniować w włamanie, twierdząc, że nigdy nie należy manipulować zdarzeniami zachodzącymi w blockchainie.

Należy zauważyć, że ten problem nie jest spowodowany przez blockchain Ethereum, ale jest spowodowany niepoprawną realizacją inteligentnych kontraktów.

Kolejnym ograniczeniem inteligentnych kontraktów są związane z ich niejasnymi skutkami prawnymi. Inteligentne kontrakty w większości krajów znajdują się w szarej strefie i nie mają jeszcze zastosowania w obecnych ramach prawnych.

Na przykład wiele umów wymaga, aby obie strony transakcji przeszły odpowiednie uwierzytelnienie oparte na prawdziwym nazwisku i miały ukończone 18 lat. Anonimowość technologii blockchain i brak pośredników będą jednak sprzeczne z wymogami umowy. Rozwiązanie tego problemu może pojawić się w przyszłości. Inteligentne kontrakty działają jednak w rozproszonej sieci pozbawionej granic, co bardzo utrudnia egzekwowanie prawa.


Niedogodności

Niektórzy entuzjaści blockchainu postrzegają inteligentne kontrakty jako autonomiczne rozwiązania, które zastąpią większość istniejących systemów biznesowych i biurokratycznych. Choć pomysł może zostać zrealizowany, przed nim jeszcze długa droga, zanim stanie się normą.

Inteligentne kontrakty to rzeczywiście ciekawa technologia. Jednak cechy takie jak dystrybucja, determinizm, przejrzystość i niezmienność czasami zmniejszają atrakcyjność inteligentnych kontraktów.

Zasadniczą wadą inteligentnych kontraktów jest to, że nie potrafią one dobrze rozwiązać wielu praktycznych problemów. W rzeczywistości niektóre organizacje korzystają obecnie z tradycyjnych rozwiązań serwerowych jako rozwiązania tymczasowego.​

W porównaniu do inteligentnych kontraktów, scentralizowane serwery są łatwiejsze i tańsze w utrzymaniu i często mają duże zalety w zakresie szybkości i komunikacji międzysieciowej (interoperacyjność).


Podsumować

Nie ma wątpliwości, że inteligentne kontrakty wywarły głęboki wpływ na dziedzinę kryptowalut i rzeczywiście przyniosły poważne zmiany w dziedzinie blockchain. Użytkownicy końcowi niekoniecznie wchodzą w bezpośrednią interakcję z inteligentnymi kontraktami. Jednak w najbliższej przyszłości inteligentne kontrakty będą stosowane szerzej, obejmując różne dziedziny, takie jak usługi finansowe i zarządzanie łańcuchem dostaw.

Razem inteligentne kontrakty i blockchain zakłócają niemal każdy obszar dzisiejszego społeczeństwa. Jednak dopiero czas pokaże, czy te przełomowe technologie zdołają przełamać przeszkody i ostatecznie osiągnąć masowe przyjęcie.