Smart kontrakty zostały opisane przez Nicka Szabo już w latach 90. Zostały one już zdefiniowane jako narzędzie, które formalizuje i chroni sieci komputerowe poprzez podłączenie protokołu sieciowego do interfejsu użytkownika. W swoim przełomowym dokumencie Szabo omówił potencjalne zastosowania smart kontraktów w różnych obszarach – w tym w systemach kredytowych, procesorach płatności i oprogramowaniu, które pomaga zarządzać prawami autorskimi.
W świecie rynku kryptowalut smart kontrakt najłatwiej zdefiniować jako aplikację lub program działający w sieci blockchain. Smart kontrakty to nic innego jak umowy cyfrowe, które są egzekwowane przez określony zestaw zasad bez interwencji człowieka. Reguły te są wstępnie zdefiniowane przez kod komputerowy, który jest replikowany i wykonywany przez wszystkie węzły działające w danej sieci.
Zasadniczo smart kontrakty tworzone w sieciach blockchain pozwalają na tworzenie określonych protokołów sieciowych, w których użytkownicy nie muszą sobie ufać. Oznacza to, że dwie strony mogą podejmować zobowiązania za pośrednictwem blockchain, bez potrzeby wzajemnego poznawania się lub wzajemnego zaufania w zakresie przestrzegania warunków umowy. Każda ze stron smart kontraktu po jej wejściu w życie może być pewna, że jeżeli warunki nie zostaną spełnione, postanowienia umowy nie zostaną spełnione. Smart kontrakty eliminują również potrzebę szukania pomocy od stron trzecich (pośredników), co znacznie obniża koszty umów zawieranych w ten sposób.
Chociaż protokół sieci Bitcoin od wielu lat obsługuje smart kontrakty , ta forma umów cyfrowych została w końcu rozpowszechniona przez twórcę i współzałożyciela Ethereum, Vitalika Buterina. Przy tej okazji warto również zauważyć, że podejście do smart kontraktów różni się w zależności od sieci blockchain.
W tym artykule skupimy się na smart kontraktach działających na maszynie wirtualnej Ethereum (EVM), która jest ważną częścią sieci blockchain Ethereum.
Jak działa Smart Kontrakt?
Krótko mówiąc, smart kontrakt to program deterministyczny. Oznacza to, że wykonuje określone zadanie, gdy spełnione są określone w nim warunki. Smart kontrakty to w zasadzie zbiór zasad „jeśli … to …”. Pomimo nazwy smart kontrakty nie są umowami inteligentnymi ani prawnie niejawnymi. Każdy smart kontrakt to tak naprawdę fragment kodu, który działa i działa dzięki rozproszonej sieci węzłów (blockchain).
W inteligentnej sieci Ethereum umowy są odpowiedzialne za wykonywanie określonych operacji w sieci blockchain i zarządzanie nimi, które mają miejsce, gdy użytkownicy (faktycznie adresują) wchodzą ze sobą w określone interakcje. Każdy adres, który nie jest smart kontraktem, nazywany jest kontem zarządzanym zewnętrznie (EOA). Mówiąc prosto: smart kontrakty są kontrolowane przez kod komputerowy, a EOA kontrolowani przez użytkowników.
Zasadniczo każda smart kontrakt w sieci Ethereum składa się z kodu umowy i dwóch kluczy publicznych. Pierwszy klucz publiczny to ten dostarczony przez twórcę kontraktu. Z drugiej strony drugi klucz reprezentuje samą umowę, działając jako jej identyfikator cyfrowy, który jest unikalny dla każdego smart kontraktu.
Realizacja dowolnej umowy wymaga transakcji w sieci blockchain. Ponadto każdy smart kontrakt musi zostać uruchomiony przez EOA (lub inny smart kontrakt). Niezależnie od źródła aktywującego działanie danego kontraktu, 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 są replikowane i dystrybuowane do wszystkich węzłów obecnych w sieci Ethereum. Sposób dystrybucji i uruchamiania smart kontraktów jest ich największym plusem w porównaniu z tradycyjnymi, scentralizowanymi rozwiązaniami (np. Serwery utrzymujące postanowienia umowne).
Są deterministyczni. Smart kontrakty wykonują tylko te czynności, dla których zostały zaprojektowane, pod warunkiem spełnienia zawartych w nich założeń. Wyniki wykonania danego zamówienia będą zawsze takie same, niezależnie od tego, kto zainicjuje pierwszą interakcję.
Są autonomiczne. Smart kontrakty świetnie nadają się do automatyzacji wszelkiego rodzaju zadań – działają jak samowystarczalny program. Co jednak ważne: w większości przypadków, jeśli smart kontrakt nie zostanie uruchomiony, będzie w stanie „uśpienia” i nie będzie wykonywać żadnych działań.
Są niezmienne. Kodu każdego smart kontraktu nie można zmienić po jej uruchomieniu. Można je „usunąć” tylko wtedy, gdy taka funkcja została wcześniej w nich zaimplementowana. Możemy zatem powiedzieć, że zapisy w smart kontraktach są odporne na modyfikacje.
Możesz je dostosować do swoich potrzeb. Przed ostatecznym uruchomieniem każdy z smart kontraktów można napisać na wiele różnych sposobów. W rezultacie można ich również używać do tworzenia zdecentralizowanych aplikacji (dApps). Jest to możliwe, biorąc pod uwagę fakt, że sieci blockchain Ethereum charakteryzują się kompletnością Turinga.
Są „bezufni”. Dzięki tej funkcji każda strona smart kontraktu może wchodzić w interakcje z inną stroną bez konieczności poznania drugiej strony lub zaufania do niego. Ta funkcja obejmuje również niezawodność i stabilność danych przechowywanych w łańcuchu Blockchain.
Są dostępne i przejrzyste. Biorąc pod uwagę fakt, że każdy z smart kontraktów w sieci Ethereum opiera się na publicznej sieci blockchain, ich kod źródłowy jest nie tylko niezmienny, ale także widoczny i dostępny dla każdego, kto chciałby to sprawdzić lub skontrolować.
Czy można zmieniać lub usuwać smart kontrakty?
Z reguły nie można dodać żadnej nowej funkcji do smart kontraktu po uruchomieniu go w sieci Ethereum. Jeśli jednak twórca smart kontraktu zdecyduje się włączyć funkcję o nazwie SELFDESTRUCT, będzie mógł w przyszłości „usunąć” umowę, aby zastąpić ją nowszą wersją. Bez tej funkcji w kodzie nikt ani nic nie będzie w stanie zatrzymać (tj. Usunąć) smart kontraktu.
Przy tej okazji warto również wspomnieć, że smart kontrakty zapewniają ich twórcom odpowiednią elastyczność w ich aktualizacji – nawet biorąc pod uwagę jedną z ich głównych cech, jaką jest niezmienność. Istnieje wiele sposobów tworzenia smart kontraktów, a zastosowana metoda wpływa na to, które elementy umowy można modyfikować.
Najprostszą metodą zapewniającą dostęp do stosunkowo łatwego sposobu aktualizacji smart kontraktu jest podzielenie jej na mniejsze smart kontrakty. Dzięki takiej konstrukcji, jako twórca kodu, nadajesz odpowiednim komponentom (funkcjom) umowy niezmienność, jednocześnie zapewniając innym komponentom funkcję „usuń”.
Zalety i przykłady wykorzystania
Biorąc pod uwagę fakt, że smart kontrakty składają się z kodu komputerowego, są one wysoce konfigurowalne i można je projektować 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 niż ich tradycyjne odpowiedniki. W zależności od podejścia i wdrożenia mogą również zwiększyć efektywność i zmniejszyć koszty biurokracji.
Smart kontrakty są szczególnie przydatne w sytuacjach, które wymagają transferu aktywów lub wymiany funduszy między dwiema lub więcej stronami.
Na dzień dzisiejszy smart kontrakty mają już wiele prawdziwych przykładów ich wykorzystania. Obecnie są one najczęściej używane w następujących obszarach: tokenizacja zasobów, systemy głosowania, portfele kryptowalut, zdecentralizowane wymiany oraz w produkcji gier i aplikacji mobilnych. Smart kontrakty można również realizować jednocześnie z innymi rozwiązaniami zapewnianymi przez technologię blockchain w takich obszarach, jak opieka zdrowotna, charytatywna, łańcuch dostaw, szeroko rozumiane zarządzanie lub w dziedzinie zdecentralizowanego finansowania (DeFi).
ERC-20
Tokeny wydane przy użyciu sieci blockchain Ethereum są zgodne ze standardem branżowym znanym jako ERC-20. Ten standard opisuje podstawowe funkcje wszystkich tokenów opartych na sieci Ethereum. Bardzo często zdarza się, że zasoby cyfrowe są nazywane tokenami ERC-20, co jest poprawnym terminem. Tokeny są obecnie największą grupą zasobów cyfrowych z rodziny kryptowalut.
Od momentu uruchomienia sieci Ethereum wiele firm i startupów z branży blockchain już zdecydowało się na wdrożenie swoich zasobów cyfrowych za pomocą smart kontraktów . Najczęściej stosowanym narzędziem do dystrybucji tokenów ERC-20 jest tzw. ICO – wstępna oferta kryptowalut. Smart kontrakty z okazji ICO są odpowiedzialne między innymi za wymianę funduszy i dystrybucję tokenów w niezawodny i skuteczny sposób.
Ograniczenia
Biorąc pod uwagę fakt, że i smart kontrakty składają się z kodu komputerowego napisanego przez ludzi, niesie za sobą wiele zagrożeń. Każdy kod napisany przez człowieka jest potencjalnie podatny na luki i błędy. Z reguły smart kontrakty są tworzone przez doświadczonych programistów, ale ponieważ ta sfera zyskuje coraz większą popularność, warto pamiętać, że źle zaimplementowany kod może prowadzić do nieodwracalnych strat materiałowych.
Przeciwnicy technologii smart kontraktów twierdzą, że scentralizowane systemy mogą zapewnić większość, jeśli nie wszystkie, możliwości dostępnych w smart kontraktach. Tym, co odróżnia inteligentne kontrakty od innych form umów cyfrowych, jest fakt, że smart kontrakty działają w sieci P2P, a nie w oparciu o scentralizowany serwer. Ponadto każdy smart kontrakt jest zabezpieczony przez sieć blockchain, który sam w sobie zapewnia niespotykany poziom odporności na nieautoryzowane modyfikacje.
Idąc dalej, niezmienność (niemodyfikowalność) kodu smart kontraktów, z jednej strony jest ich wielką zaletą, w wybranych sytuacjach może okazać się katastrofalna. W 2016 r. Zdecentralizowana autonomiczna organizacja (DAO) przekonała się do niej pod nazwą „The DAO”. Z powodu błędów w smart kontrakcie wykorzystywanym przez organizację hakerom udało się ukraść miliony Etherów (ETH).
Ponieważ smart kontrakt stworzony przez programistów DAO był niezmienny (brakowało parametru usuwania i podziału na odpowiednie komponenty), w wyniku czego organizacja nie mogła w żaden sposób naprawić swojego błędu. Doprowadziło to ostatecznie do wdrożenia tak zwanego twardego widelca, który dał początek drugiemu łańcuchowi Ethereum. Twardy widelec został stworzony w celu „odwrócenia” efektów hakerów i zwrotu funduszy ich prawowitym właścicielom (ten łańcuch nazywa się Ethereum). Węzły (uczestnicy) drugiego łańcucha postanowili nie ingerować w skutki spowodowane błędami w kodzie smart kontraktu DAO, stwierdzając, że rzeczy, które mają miejsce w sieci blockchain, nigdy nie powinny być zmieniane (ten łańcuch nazywa się teraz Ethereum Classic).
Przy tej okazji należy jednak podkreślić, że błąd lub rozwidlenie nie są wynikiem błędu w sieci blockchain Ethereum. Oba wydarzenia są efektem tego, co zostało źle zaprogramowane w smart kontrakcie DAO – największej wówczas zdecentralizowanej i autonomicznej organizacji.
Kolejnym ograniczeniem smart kontraktów jest ich niepewny status prawny. Nie tylko dlatego, że dziedzina ta znajduje się obecnie w tzw. Szarej strefie w większości krajów, ale głównie dlatego, że smartkontrakty nie odpowiadają obecnym ramom prawnym na świecie.
Wynika to z faktu, że w wielu krajach tradycyjne umowy wymagają od nich właściwej identyfikacji tożsamości obu (lub więcej) stron umowy i ukończenia 18 lat, jeżeli są to osoby fizyczne, które należy uznać za zgodne z prawem. Pseudo-anonimowość zapewniana przez technologię blockchain w połączeniu z wykluczeniem pośredników z procesu podpisywania umowy jest sprzeczna z tymi wymogami. Chociaż istnieją potencjalne rozwiązania tego problemu, sprawdzenie wykonalności smart kontraktów jest prawdziwym wyzwaniem – zwłaszcza jeśli weźmiemy pod uwagę, jak globalnie dystrybuowane 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ęść systemów lub procesów komercyjnych i państwowych. Chociaż ten scenariusz jest możliwy, daleko mu do osiągnięcia.
Smart kontrakty to z pewnością ciekawa i przełomowa technologia. Jednak to, co stanowi ich zalety – cechy takie jak charakter rozproszony, determinizm, przejrzystość i, w pewnym sensie, niemodyfikowalność – mogą bardzo szybko zamienić się w ich wady.
Krytykując smart kontrakty, sceptycy tej technologii najczęściej podnoszą argument, że inteligentne kontrakty nie okazują się tak świetnym rozwiązaniem wielu prawdziwych problemów, jak przekonują ich entuzjaści. W rzeczywistości niektóre organizacje lepiej i łatwiej korzystają z konwencjonalnych alternatyw opartych na scentralizowanym serwerze niż opierają swoje rozwiązania i systemy na technologii blockchain.
W porównaniu do ismart kontraktów, dziś scentralizowane serwery są ł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ć wątpliwości, że smart kontrakty miały już znaczący wpływ na świat kryptowalut i z pewnością zrewolucjonizowały przestrzeń blockchain. Fakt, że użytkownicy końcowi mogą nawet nie wiedzieć, że obecnie wchodzą w interakcje z smart kontraktem, doskonale podsumowuje jej szeroki zakres w zakresie potencjalnych wdrożeń – od usług finansowych po zarządzanie łańcuchem dostaw.
Smart kontrakty w połączeniu z technologią blockchain okazują się tak wielofunkcyjne, że możliwe jest, że w niedalekiej przyszłości możemy stać się świadkami gwałtownego wzrostu liczby opartych na nich aplikacji. W tej chwili tylko czas jest w stanie pokazać nam, czy te przełomowe technologie pokonają wiele barier w ich przyjęciu w skali globalnej.