Wstęp

Nick Szabo po raz pierwszy opisał inteligentne kontrakty w latach 90. Zdefiniował wówczas inteligentny kontrakt jako narzędzie formalizujące i zabezpieczające sieci komputerowe poprzez połączenie protokołów z interfejsami użytkownika.

Szabo omówił potencjalne wykorzystanie inteligentnych kontraktów w różnych obszarach obejmujących umowy, takich jak systemy kredytowe, przetwarzanie płatności i zarządzanie prawami do treści.

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

Inteligentne kontrakty Blockchain pozwalają na tworzenie protokołów bez zaufania. Oznacza to, że dwie strony mogą podejmować zobowiązania za pośrednictwem blockchain, bez konieczności wzajemnej znajomości i zaufania. Mogą być pewni, że w przypadku niespełnienia warunków umowa nie zostanie zrealizowana. Poza tym zastosowanie inteligentnych kontraktów może wyeliminować potrzebę pośredników, znacznie zmniejszając koszty operacyjne.

Choć protokół Bitcoin od wielu lat wspiera inteligentne kontrakty, spopularyzował je twórca i współzałożyciel Ethereum, Vitalik Buterin. Warto jednak zaznaczyć, że każdy blockchain może prezentować inny sposób realizacji inteligentnych kontraktów.

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


Jak oni pracują?

Mówiąc najprościej, inteligentny kontrakt działa jak program deterministyczny. Wykonuje określone zadanie, gdy i jeśli zostaną spełnione określone warunki. W związku z tym inteligentny system kontraktów często opiera się na stwierdzeniach „jeśli… to…”. Jednak pomimo popularnej terminologii inteligentne kontrakty nie są umowami prawnymi ani inteligentnymi. Są po prostu fragmentem kodu działającym w systemie rozproszonym (blockchain).

W sieci Ethereum inteligentne kontrakty odpowiadają za wykonywanie i zarządzanie operacjami blockchain, które mają miejsce, gdy użytkownicy (adresy) wchodzą ze sobą w interakcję. Każdy adres, który nie jest inteligentną umową, nazywany jest kontem zewnętrznym (EOA). Zatem inteligentne kontrakty są kontrolowane przez kod komputerowy, a EOA są kontrolowane przez użytkowników.

Zasadniczo inteligentne kontrakty Ethereum składają się z kodu kontraktu i dwóch kluczy publicznych. Pierwszym kluczem publicznym jest ten dostarczony przez twórcę umowy. Drugi klucz reprezentuje samą umowę, działając jako identyfikator cyfrowy, unikalny dla każdej inteligentnej umowy.

Wdrożenie dowolnego inteligentnego kontraktu odbywa się poprzez transakcję typu blockchain i można go aktywować wyłącznie po wywołaniu przez EOA (lub inne inteligentne kontrakty). Jednak pierwszy wyzwalacz jest zawsze spowodowany przez EOA (użytkownika).


Kluczowe cechy

Inteligentna umowa Ethereum często ma następujące cechy:

Rozpowszechniane. Inteligentne kontrakty są replikowane i dystrybuowane we wszystkich węzłach sieci Ethereum. Jest to jedna z głównych różnic w stosunku do innych rozwiązań opartych na scentralizowanych serwerach.

Deterministyczny. Inteligentne kontrakty wykonują tylko te działania, do których zostały zaprojektowane, pod warunkiem spełnienia wymagań. Ponadto wynik będzie zawsze taki sam, niezależnie od tego, kto je wykona.

Autonomiczny. Inteligentne kontrakty mogą automatyzować wszelkiego rodzaju zadania, działając jak samowykonujący się program. Jednak w większości przypadków, jeśli inteligentny kontrakt nie zostanie uruchomiony, pozostanie „uśpiony” i nie wykona żadnej akcji.

Niezmienny. Inteligentnych kontraktów nie można zmienić po wdrożeniu. Można je „usunąć” tylko wtedy, gdy dana funkcja została wcześniej zaimplementowana. Można zatem powiedzieć, że inteligentne kontrakty mogą zapewnić kod odporny na manipulacje.

Możliwość dostosowania. Przed wdrożeniem inteligentne kontrakty można kodować na wiele różnych sposobów. Można je zatem wykorzystać do tworzenia wielu typów zdecentralizowanych aplikacji (DApps). Wiąże się to z faktem, że Ethereum jest kompletnym blockchainem Turinga.

Bez zaufania. Dwie lub więcej stron może wchodzić w interakcje za pośrednictwem inteligentnych kontraktów, nie znając się ani nie ufając sobie nawzajem. Ponadto technologia blockchain zapewnia dokładność danych.

Przezroczysty. Ponieważ inteligentne kontrakty opierają się na publicznym blockchainie, ich kod źródłowy jest nie tylko niezmienny, ale także widoczny dla każdego.


Czy mogę zmienić lub usunąć inteligentną umowę?

Po wdrożeniu nie można dodać nowych funkcji do inteligentnej umowy Ethereum. Jeśli jednak jego twórca umieści w kodzie funkcję o nazwie SELFDESTRUCT, będzie mógł w przyszłości „usunąć” inteligentny kontrakt – i zastąpić go nowym. Natomiast jeśli funkcja nie jest wcześniej uwzględniona w kodzie, nie będzie można jej usunąć.

Warto zauważyć, że tak zwane inteligentne kontrakty z możliwością aktualizacji pozwalają programistom na większą elastyczność w zakresie niezmienności kontraktów. Istnieje wiele sposobów tworzenia inteligentnych kontraktów z możliwością aktualizacji, o różnym stopniu złożoności.

Biorąc uproszczony przykład, wyobraźmy sobie, że inteligentny kontrakt jest podzielony na wiele mniejszych kontraktów. Niektóre z nich zaprojektowano tak, aby były niezmienne, podczas gdy inne mają włączoną funkcję „usuwania”. Oznacza to, że część kodu (inteligentne kontrakty) można usunąć i zastąpić, inne funkcjonalności pozostają nienaruszone.


Zalety i przypadki użycia

Jako kod programowalny, inteligentne kontrakty można w dużym stopniu dostosowywać i projektować na wiele różnych sposobów, oferując wiele rodzajów usług i rozwiązań.

Jako zdecentralizowane i samowykonujące się programy, inteligentne kontrakty mogą zapewnić większą przejrzystość i obniżone koszty operacyjne. W zależności od wdrożenia mogą również zwiększyć efektywność i zmniejszyć koszty biurokratyczne.

Inteligentne kontrakty są szczególnie przydatne w sytuacjach, które wiążą się z transferem lub wymianą środków finansowych pomiędzy dwiema lub więcej stronami.

Innymi słowy, inteligentne kontrakty można zaprojektować do różnorodnych zastosowań. Niektóre przykłady obejmują tworzenie tokenizowanych aktywów, systemów głosowania, portfeli kryptograficznych, zdecentralizowanych giełd, gier i aplikacji mobilnych. Można je również wdrożyć wraz z innymi rozwiązaniami typu blockchain, które dotyczą dziedzin opieki zdrowotnej, działalności charytatywnej, ł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. W związku z tym te aktywa cyfrowe są często określane jako tokeny ERC-20 i reprezentują dużą część istniejących kryptowalut.

Wiele firm i start-upów typu blockchain wdrożyło inteligentne kontrakty w celu emisji swoich tokenów cyfrowych w sieci Ethereum. Po emisji większość tych firm dystrybuowała swoje tokeny ERC-20 w ramach wydarzeń ICO (Initial Coin Offer). W większości przypadków zastosowanie inteligentnych kontraktów umożliwiło wymianę środków i dystrybucję tokenów w sposób pozbawiony zaufania i efektywny.


Ograniczenia

Inteligentne kontrakty składają się z kodu komputerowego napisanego przez ludzi. Wiąże się to z wieloma zagrożeniami, ponieważ kod jest podatny na luki i błędy. W idealnym przypadku powinny być napisane i wdrożone przez doświadczonych programistów, zwłaszcza gdy dotyczą poufnych informacji lub dużych kwot pieniędzy.

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

Bycie niezmiennym może być świetne w niektórych sytuacjach, ale bardzo złe w innych. Na przykład, gdy w 2016 r. zhakowano zdecentralizowaną organizację autonomiczną (DAO) o nazwie „DAO”, skradziono miliony eterów (ETH) z powodu błędów w kodzie inteligentnych kontraktów.

Ponieważ ich inteligentny kontrakt był niezmienny, programiści nie byli w stanie naprawić kodu. To ostatecznie doprowadziło do hard forku, dając początek drugiemu łańcuchowi Ethereum. Mówiąc najprościej, jeden z łańcuchów „cofnął” hack i zwrócił środki prawowitym właścicielom (jest to część obecnego blockchainu Ethereum). Drugi łańcuch postanowił nie ingerować w włamanie, stwierdzając, że niczego, co dzieje się na blockchainie, nie należy nigdy zmieniać (ten łańcuch nazywa się teraz Ethereum Classic).

Należy zauważyć, że problem nie wynika z blockchainu Ethereum. Zamiast tego było to spowodowane wadliwą implementacją inteligentnego kontraktu.

Kolejnym ograniczeniem inteligentnych kontraktów jest ich niepewny status prawny. Nie tylko dlatego, że w większości krajów znajduje się to w szarej strefie, ale także dlatego, że inteligentne kontrakty nie odpowiadają obecnym ramom prawnym.

Na przykład wiele umów wymaga, aby obie strony były prawidłowo zidentyfikowane i miały ukończone 18 lat. Pseudonimowość, jaką zapewnia technologia blockchain, w połączeniu z brakiem pośredników, może zagrozić tym wymaganiom. Chociaż istnieją potencjalne rozwiązania tego problemu, wykonalność prawna inteligentnych kontraktów stanowi prawdziwe wyzwanie – szczególnie w przypadku rozproszonych sieci pozbawionych granic.


Krytyka

Niektórzy entuzjaści blockchainu postrzegają inteligentne kontrakty jako rozwiązanie, które wkrótce zastąpi i zautomatyzuje znaczną część naszych systemów komercyjnych i biurokratycznych. Chociaż jest to możliwa rzeczywistość, prawdopodobnie nie stanie się ona normą.

Inteligentne kontrakty są z pewnością interesującą technologią. Jednak ich dystrybucja, determinizm, przejrzystość i w pewnym stopniu niezmienność mogą w niektórych sytuacjach sprawić, że będą mniej atrakcyjne.

Zasadniczo krytyka opiera się na fakcie, że inteligentne kontrakty nie są odpowiednim rozwiązaniem wielu rzeczywistych problemów. W rzeczywistości niektórym organizacjom lepiej będzie korzystać z konwencjonalnych rozwiązań alternatywnych opartych na serwerach.

W porównaniu do inteligentnych kontraktów, scentralizowane serwery są łatwiejsze i tańsze w utrzymaniu oraz zazwyczaj charakteryzują się wyższą wydajnością pod względem szybkości i komunikacji międzysieciowej (interoperacyjność).


Zamykanie myśli

Nie ma wątpliwości, że inteligentne kontrakty wywarły duży wpływ na świat kryptowalut, a na pewno zrewolucjonizowały przestrzeń blockchain. Chociaż użytkownicy końcowi mogą nie wchodzić w bezpośrednią interakcję z inteligentnymi kontraktami, prawdopodobnie w przyszłości będą one wykorzystywane w wielu zastosowaniach, od usług finansowych po zarządzanie łańcuchem dostaw.

Razem inteligentne kontrakty i blockchain mogą potencjalnie zakłócić niemal wszystkie obszary naszego społeczeństwa. Ale czas pokaże, czy te przełomowe technologie zdołają pokonać wiele barier stojących na drodze do wdrożenia na dużą skalę.