Technologia blockchain jest bardzo użyteczna, zapewniając powszechną dostępność, wiarygodność oraz niezmienność danych. Smartkontrakty dodatkowo zwiększają jej funkcjonalność, gdyż pozwalają traktować łańcuch bloków jak zdecentralizowany komputer.
Krótka historia smartkontraktów
Koncepcja inteligentnych kontraktów pojawiła się na początku lat 90. XX wieku. Nick Szabo sformułował to pojęcie, definiując je jako „skomputeryzowany protokół transakcji, który realizuje warunki umowy”.
Istotą pomysłu było osadzenie reguł działania w programie i wykonywanie ich za pomocą kodu, bez ingerencji z zewnątrz. Jeśli warunki umowy zostały spełnione, jest ona wypełniana automatycznie i nikt nie może temu zapobiec.
Koncepcja ta przez następne lata pozostała czystą teorią, ponieważ nie istniała jeszcze technologia umożliwiająca jej wdrożenie. Impulsem było uruchomienie sieci Bitcoin w roku 2009. Powstała zdecentralizowana baza danych, przetwarzana w sposób rozproszony i odporna na manipulacje. Użyty język skryptowy miał jednak zbyt ograniczone możliwości, by umożliwić realizację inteligentnych kontraktów.
Zmieniło się to wraz z powstaniem Ethereum w roku 2015. Ta platforma, oparta na EVM, była zdolna do przetwarzania smartkontraktów. Z tego powodu odniosła spektakularny sukces, stając się podstawą wszystkich funkcji blockchain innych, niż czyste przechowywanie wartości (w tej funkcji Bitcoin okazał się niezastąpiony).
Czym właściwie jest smartkontrakt?
Zadaniem smartkontraktów jest uproszczenie transakcji biznesowych pomiędzy stronami poprzez usunięcie pośredników. Zawarta umowa jest realizowana automatycznie, nie potrzeba już notariuszy, sędziów, rzeczoznawców czy komornika. Jeśli wyrocznia orzekła, że warunki umowy zostały spełnione – zostaje ona wykonana szybko, sprawnie i bez możliwości apelacji.
Pod względem technicznym smartkontrakt to wykonywalny kod zapisany na blockchainie, rodzaj prostego programu. Sprawdza on warunki (IF) zapisane w kodzie, a jeśli zostały spełnione, realizuje przedmiot umowy (THEN).
Nie jest przy tym istotne jakie są warunki umowy, ani też jej przedmiot. Inteligentnym kontraktem rządzi logika zerojedynkowa, nie ma on możliwości oceny, czy skutek wykonania umowy będzie pożądany. Tym zajmowali się ludzie piszący kod, po wdrożeniu może on zostać już tylko wykonany.
Skoro Ethereum było pierwszym blockchainem, który wprowadził funkcjonalność smartkontraktów, to ono wyznaczyło standardy. Jego smartkontrakty mogą m.in. przechowywać, wysyłać czy odbierać tokeny, zaś po wdrożeniu nie są kontrolowane przez żadnego użytkownika i działają tak, je je zaprogramowano.
Przykład smartkontraktu
Kod smartkontraktu napisany jest w wybranym języku programowania, np. Solidity i może wyglądać następująco:
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;
contract HelloWorld
function sayHelloWorld() public pure returns (string memory) {
return "Hello World";
}
Co to właściwie oznacza?
- SPDX-License-Identifier – oznaczenie licencji, której używa nasz program
- pragma solidity 0.8.13 – określa, której wersji Solidity używamy
- Contract HelloWorld – definiuje nasz kontrakt
- Function sayHelloWorld – funkcja, której zadaniem jest zwrot ciągu liter Hello World
Kontrakty, których zadaniem jest powiedzmy wymiana tokenów na Uniswap są jednak nieco bardziej skomplikowane. 😉
Czy blockchain jest konieczny?
Skoro smartkontrakty to takie wygodne i skuteczne rozwiązanie, dlaczego ich użycie ogranicza się do blockchain?
Cóż, jest to kwestia zaufania. Korzystając z usług Amazon, banku czy ZUS musimy ufać, że nie zmienią one zasad gry w jej trakcie (kto pamięta zabór środków z OFE?). Blockchain nie wymaga zaufania. Dopóki większość węzłów sieci pozostaje uczciwa, nikt nie może wycofać się z umowy lub zmienić jej warunków. Nikt nie może też ingerować w nasze decyzje ani decydować, co nam wolno, a co nie.
Właśnie dlatego zdecentralizowany, nie wymagający zaufania blockchain ma znaczenie. Domyślnie zapewnia każdemu swobodny dostęp do infrastruktury i takie same prawa. Nie da się tego zrobić w systemach scentralizowanych. Łańcuch oferuje przejrzystość i uczciwość w standardzie i dlatego właśnie jest idealnym środowiskiem dla działania smartkontraktów.
Nie znaczy to, że na blockchainie nie ma oszustów. Jeśli jednak wpadasz w kłopoty, to dużo częściej z własnej winy niż dlatego, że zawiodła technologia.
Jak działają smartkontrakty
Cykl życia smartkontraktu na ogół wygląda następująco:
- Tworzenie: napisanie inteligentnego kontraktu przez programistę, np. przy użyciu języka Solidity lub Rust. Zapisane zostają warunki wykonania, sposób działania i ew. interakcja z innymi kontraktami, a ich działanie przetestowane.
- Wdrożenie: polega na wysłaniu do sieci blockchain transakcji, która zawiera skompilowany kod kontraktu. Po wdrożeniu smartkontrakt staje się integralną częścią blockchain.
- Wykonanie: następuje automatycznie po spełnieniu warunków określonych w kodzie kontraktu. Może to być np. osiągnięcie konkretnej daty lub otrzymanie określonej ilości kryptowaluty.
- Walidacja: górnicy lub walidatorzy sprawdzają transakcję, aby upewnić się, że spełnia ona wymagane kryteria (prawidłowe podpisy, wystarczająca opłata za gaz itd).
- Realizacja: jeżeli transakcja przeszła proces walidacji, zostaje dodana do bloku i realizowana jest funkcja kontraktu. Polega to na uruchomieniu kodu, który może modyfikować stan kontraktu i wchodzić w interakcję z innymi smartkontraktami.
- Zapis: po wykonaniu wynik działania smartkontraktu rejestrowany jest w łańcuchu bloków. Taki zapis jest niezmienny, co zapewnia wiarygodność wypełnienia umowy, gdyż każdy może go zweryfikować.
Możliwe przypadki użycia
Smartkontrakt będzie świetnie działał tam, gdzie przedmiotem umowy są dane i wartości, które można zapisać w postaci cyfrowej. Przesłanie środków innej osobie, głosowanie za wyborem jakiejś propozycji czy wymiana tokenów to oczywiste przykłady.
Smartkontrakty w krypto
- handel tokenami na DEX (np. Uniswap)
- platformy pożyczkowe (np. AAVE)
- rynek prognoz i zakładów (np. Augur)
- gry i rynek GameFi (np. Vulcan Forged)
- rynek tokenów NFT (OpenSea)
Poza segmentem kryptowalut
- łańcuchy dostaw
- tokenizacja nieruchomości
- potwierdzenie tożsamości
- automatyzacja ubezpieczeń
- głosowania online
Główna zaleta smartkontraktów polega na tym, że są nie tylko obiektywne, ale i wykonywane automatycznie. Z tego powodu najlepiej sprawdzą się tam, gdzie wykonanie umowy nie wymaga zaangażowania instytucji zewnętrznych. Tak zadziała na przykład kontrakt przenoszący własność ETH z zamian za pewną ilość USDT.
Sytuacja komplikuje się, kiedy smartkontrakty dotyczą aktywów poza łańcuchem. Do przeniesienia własności nieruchomości w większości przypadków nie wystarczy zakup tokena, konieczna będzie także zmiana wpisu w księgach hipotecznych. Podobnie, jeśli np. kupiłeś NFT reprezentujące Ferrari, wystawione na sprzedaż przez innego użytkownika. Co jeśli będzie ono miało wady, których wcześniej nie zauważyłeś?
Korzyści z użycia smartkontraktów
- automatyzacja – po wdrożeniu kontraktu nie musisz robić nic więcej
- obiektywność – po spełnieniu warunków umowa jest wykonywana bez względu na wszystko
- programowalność – inteligentne kontrakty można dostosowywać do konkretnych wymagań
- szybkość– smartkontrakty działają natychmiast, odpada np. przedstawianie dokumentów
- oszczędność – kontrakty pozwalają obejść się bez prawników czy windykatorów
- bezpieczeństwo – poprawnie napisany, wdrożony i audytowany smartkontrakt uniemożliwia manipulacje
Słabości inteligentnych kontraktów
- problemy techniczne – smartkontrakt jak każdy program jest podatny na błędy i luki w kodzie
- złożoność – inteligentne kontrakty mogą być złożone i trudne do zrozumienia dla użytkowników
- brak uznania prawnego – smartkontrakty nie są prawnie uznane, co wpływa na ich wykonalność w świecie rzeczywistym
- możliwość oszustwa – hackerzy mogą tworzyć nieuczciwe kontrakty w celu oszukania innych
- zależność od technologii – powoduje ona podatność na awarie sieci czy brak prądu
- tylko względna niezmienność – możliwe jest wbudowanie furtki, pozwalającej na zmiany
Czy naprawdę są niezmienne?
Niezmienność smartkontraktów jest podstawą blockchain. Nikt nie chciałby lokować swoich środków w umowie, jeśli jej twórca mógłby w dowolnej chwili ją zmienić. Na szczęście smartkontrakt jest zapisywany w łańcuchu bloków, który z definicji jest odporny na modyfikacje.
Na świecie nie ma jednak rzeczy doskonałych i zdarzają się sytuacje, kiedy twórcy smartkontraktów mogą wprowadzać w nich zmiany. Najczęściej stosowane sposoby to:
- Funkcje administracyjne: pozwalają one właścicielowi lub administratorowi na modyfikację kluczowych funkcji kontraktu lub jego zatrzymanie. Potocznie określane są jako backdoory.
- Kontrakty proxy: smartkontrakt działa tylko jako pośrednik między użytkownikami a rzeczywistym kontraktem, wywołując go w miarę potrzeby. Autor może zaktualizować kod rzeczywistego kontraktu bez modyfikowania trwale zapisanego kodu proxy.
- Modyfikowalne smartkontrakty: umowy od początku tworzone z opcją ich aktualizacji. Wykorzystują one wzorce projektowe, które umożliwiają zmianę logiki kontraktu, np. biblioteki OpenZeppelin.
- Parametryzacja: zdefiniowanie kluczowych parametrów (np. wysokość opłat) jako zmiennych, które mogą być modyfikowane przez właściciela bez zmiany kodu kontraktu.
- Opcja Selfdestruct: pozwala na usunięcia kodu bajtowego z blockchainu Ethereum i wysłania środków z kontraktu na określony adres. Obecnie już niestosowana, może być nadal obecna w starszych smartkontraktach.
Powyższy katalog wygląda wygląda niepokojąco. Czyżby smartkontrakty były jedną wielką pułapką na naiwnych?
Na szczęście nie jest tak źle. Owszem, zdarzają się smartkontrakty napisane w celu oszukania użytkowników lub tez po prostu niechlujnie. Jest to jednak domena głównie nowych i mało znanych projektów. Smartkontrakty poważnych platform, jak MakerDAO czy AAVE przechodziły wielokrotne audyty i są z powodzeniem używane przez setki tysięcy użytkowników.
W razie potrzeby, smartkontrakt sieci kompatybilnej z EVM możemy sprawdzić przy użyciu TokenSniffer, platformy GoPlusLabs lub DeFiScanner.
dApps a smartkontrakty
Skoro smartkontrakt oznacza rodzaj programu zapisanego na blockchainie, co to jest zdecentralizowana aplikacja? Czy są to różne nazwy tego samego bytu?
Nie. Chociaż zarówno smartkontrakty, jak i dApps działają na blockchainie, znacząco różnią się one od siebie. Można powiedzieć, że o ile inteligentne kontrakty zapewniają logikę działania, dApps ubierają ją w zrozumiały dla użytkownika interfejs. Bez tego obsługa smartkontraktów byłaby wyłącznie domeną programistów. Uwzględniając to, o ile smartkontrakty mogą funkcjonować bez pomocy dApps, te ostatnie bez nich nie zadziałają.
Nie jest jednak tak, że dApps to wyłącznie interfejs. Są to funkcjonalne programy, zaś smartkontrakty odpowiadają tylko za pewien fragment ich logiki. Aplikacje dają zatem swoim użytkownikom łatwy dostęp do operacji na blockchain bez potrzeby ich żmudnego kodowania.
Oba rozwiązania są zautomatyzowane i działają w oparciu o zdecentralizowaną sieć. Przez analogię można zatem powiedzieć, że o ile dApps to elegancki Jaguar, smartkontrakt jest silnikiem V8, który go napędza.
Przyszłość inteligentnych kontraktów
Dalszy los smartkontraktów ściśle związany jest z rozwojem całej branży blockchain. O ile nie nastąpi jakieś niespodziewane wydarzenie w rodzaju blackoutu na skalę planety lub wprowadzenie bardzo restrykcyjnych przepisów, wzrost ich znaczenia jest przesądzony.
Są po temu dobre powody. Ta innowacyjna technologia redefiniuje sposób realizacji umów, eliminując potrzebę pośredników i przy okazji znacząco upraszczając cały proces.
Dlatego, o ile wartość rynku inteligentnych kontraktów w roku 2023 stanowiła mniej niż 2 miliardy dolarów, szacuje się, że w roku 2032 prawdopodobnie przekroczy 12 miliardów $.
Smartkontrakty wkraczają powoli do nowych branż, wychodząc poza kryptowaluty i transakcje finansowe. Przesądzona jest np. ich integracja z Internetem rzeczy (IoT), oferująca ogromne możliwości automatyzacji.
Równie obiecująco wygląda połączenie inteligentnych kontraktów z modelami sztucznej inteligencji i uczenia maszynowego. Pozwoli to na zautomatyzowanie podejmowania decyzji, a co za tym idzie – inteligentną automatyzację. Ogromną niszą jest także tokenizacja, której rozwój nie jest możliwy bez zastosowania smartkontraktów.
Wykorzystanie tych perspektyw zależy jednak zarówno od dalszego wzrostu skalowalności blockchain, jak i wprowadzenia przepisów, włączających smartkontrakty w obowiązujący system prawny.
W miarę wdrażania technologii blockchain, smartkontrakty prawdopodobnie staną się jednym z najważniejszych jej zastosowań. Potencjał jest ogromny, nie wiadomo jednak czy nie zostanie on zahamowany przez próby regulacji blockchain, podejmowane przez Unię Europejską, USA i inne globalne organizacje.
Inwestowanie jest ryzykowne. Inwestuj odpowiedzialnie.