Przejdź do głównej treści
Change page

Wprowadzenie do inteligentnych kontraktów

Czym jest inteligentny kontrakt?

"Inteligentny kontrakt" to po prostu program działający na blockchainie Ethereum. Jest to zbiór kodu (jego funkcji) i danych (jego stanu), który znajduje się pod określonym adresem na blockchainie Ethereum.

Inteligentne kontrakty to rodzaj konta Ethereum. Oznacza to, że mają saldo i mogą być celem transakcji. Nie są one jednak kontrolowane przez użytkownika, lecz wdrażane do sieci i działają zgodnie z zaprogramowaniem. Konta użytkowników mogą następnie wchodzić w interakcje z inteligentnym kontraktem, wysyłając transakcje, które wykonują funkcję zdefiniowaną w inteligentnym kontrakcie. Inteligentne kontrakty mogą definiować zasady, podobnie jak zwykły kontrakt, i automatycznie egzekwować je za pomocą kodu. Domyślnie inteligentnych kontraktów nie można usunąć, a interakcje z nimi są nieodwracalne.

Wymagania wstępne

Jeśli dopiero zaczynasz lub szukasz mniej technicznego wprowadzenia, polecamy nasze wprowadzenie do inteligentnych kontraktów.

Zanim zagłębisz się w świat inteligentnych kontraktów, upewnij się, że przeczytałeś o kontach, transakcjach i wirtualnej maszynie Ethereum.

Cyfrowy automat sprzedający

Być może najlepszą metaforą inteligentnego kontraktu jest automat sprzedający, jak opisał to Nick Szabo (opens in a new tab). Przy odpowiednich danych wejściowych gwarantowany jest określony wynik.

Aby otrzymać przekąskę z automatu:

pieniądze + wybór przekąski = wydana przekąska

Ta logika jest zaprogramowana w automacie sprzedającym.

Inteligentny kontrakt, podobnie jak automat sprzedający, ma w sobie zaprogramowaną logikę. Oto prosty przykład tego, jak wyglądałby ten automat, gdyby był inteligentnym kontraktem napisanym w języku Solidity:

Podobnie jak automat sprzedający eliminuje potrzebę zatrudniania sprzedawcy, inteligentne kontrakty mogą zastąpić pośredników w wielu branżach.

Niewymagający pozwoleń

Każdy może napisać inteligentny kontrakt i wdrożyć go do sieci. Musisz tylko nauczyć się kodować w języku inteligentnych kontraktów i mieć wystarczająco dużo ETH, aby wdrożyć swój kontrakt. Wdrożenie inteligentnego kontraktu jest technicznie transakcją, więc musisz zapłacić za gaz w taki sam sposób, w jaki płacisz za gaz przy zwykłym transferze ETH. Jednak koszty gazu za wdrożenie kontraktu są znacznie wyższe.

Ethereum posiada przyjazne dla programistów języki do pisania inteligentnych kontraktów:

  • Solidity
  • Vyper

Więcej o językach

Muszą one jednak zostać skompilowane przed wdrożeniem, aby wirtualna maszyna Ethereum mogła zinterpretować i przechować kontrakt. Więcej o kompilacji

Kompozycyjność

Inteligentne kontrakty są publiczne na Ethereum i można je traktować jako otwarte API. Oznacza to, że możesz wywoływać inne inteligentne kontrakty we własnym inteligentnym kontrakcie, aby znacznie rozszerzyć jego możliwości. Kontrakty mogą nawet wdrażać inne kontrakty.

Dowiedz się więcej o kompozycyjności inteligentnych kontraktów.

Ograniczenia

Same inteligentne kontrakty nie mogą uzyskiwać informacji o zdarzeniach z „prawdziwego świata”, ponieważ nie mogą pobierać danych ze źródeł pozałańcuchowych. Oznacza to, że nie mogą reagować na zdarzenia w świecie rzeczywistym. Jest to celowe działanie. Poleganie na zewnętrznych informacjach mogłoby zagrozić konsensusowi, który jest ważny dla bezpieczeństwa i decentralizacji.

Jednak dla aplikacji blockchain ważne jest, aby mogły korzystać z danych pozałańcuchowych. Rozwiązaniem są wyrocznie (oracles), czyli narzędzia, które pobierają dane pozałańcuchowe i udostępniają je inteligentnym kontraktom.

Kolejnym ograniczeniem inteligentnych kontraktów jest ich maksymalny rozmiar. Inteligentny kontrakt może mieć maksymalnie 24 KB, w przeciwnym razie zabraknie mu gazu. Można to obejść, stosując wzorzec diamentu (The Diamond Pattern) (opens in a new tab).

Kontrakty multisig

Kontrakty multisig (z wieloma podpisami) to konta inteligentnych kontraktów, które wymagają wielu ważnych podpisów do wykonania transakcji. Jest to bardzo przydatne w celu uniknięcia pojedynczych punktów awarii dla kontraktów przechowujących znaczne ilości etheru lub innych tokenów. Multisigi dzielą również odpowiedzialność za wykonanie kontraktu i zarządzanie kluczami między wiele stron i zapobiegają sytuacji, w której utrata pojedynczego klucza prywatnego prowadzi do nieodwracalnej utraty środków. Z tych powodów kontrakty multisig mogą być używane do prostego zarządzania DAO. Multisigi wymagają N podpisów z M możliwych akceptowalnych podpisów (gdzie N ≤ M i M > 1) w celu wykonania. Powszechnie używane są N = 3, M = 5 i N = 4, M = 7. Multisig 4/7 wymaga czterech z siedmiu możliwych ważnych podpisów. Oznacza to, że środki można nadal odzyskać, nawet jeśli trzy podpisy zostaną utracone. W tym przypadku oznacza to również, że większość posiadaczy kluczy musi wyrazić zgodę i złożyć podpis, aby kontrakt został wykonany.

Zasoby dotyczące inteligentnych kontraktów

OpenZeppelin Contracts - Biblioteka do bezpiecznego tworzenia inteligentnych kontraktów.

Dalsza lektura

Samouczki: Podpisy inteligentnych kontraktów (EIP-1271) na Ethereum

Ostatnia aktualizacja strony: 25 lutego 2026