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

Wprowadzenie do inteligentnych kontraktów

Ostatnia edycja: @wackerow(opens in a new tab), 22 kwietnia 2024

Czym jest inteligentny kontrakt?

„Inteligentny kontrakt" jest po prostu programem, który działa w blockchainie Ethereum. Jest to zbiór kodu (jego funkcje) i danych (jego stan), które znajdują się pod określonym adresem w blockchainie Ethereum.

Inteligentne kontrakty są rodzajem konta Ethereum. Oznacza to, że mają one saldo i mogą wysyłać transakcje przez sieć. Jednak nie są one kontrolowane przez użytkownika, zamiast tego są wdrażane do sieci i uruchamiane w sposób zaprogramowany. Konta użytkowników mogą następnie wchodzić w interakcję z inteligentnym kontraktem poprzez przesyłanie transakcji, które wykonują funkcję zdefiniowaną w inteligentnym kontrakcie. Inteligentne kontrakty mogą definiować reguły, tak jak zwykłe kontrakty, i automatycznie egzekwować je za pośrednictwem kodu.

Warunki wstępne

Upewnij się, że zapoznałeś się z kontami, transakcjami i

Cyfrowy automat do sprzedaży

Być może najlepszą metaforą dla inteligentnego kontraktu jest automat do sprzedaży opisany przez Nicka Szabo. Przy odpowiednich nakładach gwarantowany jest określony wynik.

Aby uzyskać przekąskę z automatu do sprzedaży:

1pieniądze + wybór przekąsek = przekąski wydane

Ta logika jest zaprogramowana w automacie sprzedającym.

Inteligentny kontrakt, jak automat sprzedający, ma zaprogramowaną logikę. Oto prosty przykład, jak taki automat może wyglądać jako inteligentny kontrakt:

1pragma solidity 0.6.11;
2
3contract VendingMachine {
4
5 // Deklaracja zmiennych stanu kontraktu
6 address public owner;
7 mapping (address => uint) public cupcakeBalances;
8
9 // Kiedy kontrakt 'VendingMachine' jest wdrożony:
10 // 1. ustawia adres podmiotu wdrażającego jako właściciela kontraktu
11 // 2. ustawia bilans babeczek wdrożonego inteligentnego kontraktu na 100
12 constructor() public {
13 owner = msg.sender;
14 cupcakeBalances[address(this)] = 100;
15 }
16
17 // Umożliwia właścicielowi zwiększenie salda babeczek inteligentnego kontraktu
18 function refill(uint amount) public {
19 require(msg.sender == owner, "Only the owner can refill.");
20 cupcakeBalances[address(this)] += amount;
21 }
22
23 // Umożliwia każdemu zakup babeczek
24 function purchase(uint amount) public payable {
25 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
26 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
27 cupcakeBalances[address(this)] -= amount;
28 cupcakeBalances[msg.sender] += amount;
29 }
30}
Pokaż wszystko
Kopiuj

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

Nie wymaga pozwolenia

Każdy może napisać inteligentny kontrakt i wdrożyć go do sieci. Musisz tylko nauczyć się kodowania w języku inteligentnego kontraktu i mieć wystarczająco dużo ETH, aby go wdrożyć. Wdrożenie inteligentnego kontraktu jest transakcją techniczną, więc musisz zapłacić Koszty gazu związane z wdrożeniem kontraktów są jednak znacznie wyższe.

Ethereum ma przyjazne dla deweloperów języki do pisania inteligentnych kontraktów:

  • Solidity
  • Vyper

Więcej języków

Muszą one jednak zostać skompilowane przed ich uruchomieniem, tak aby maszyna wirtualna Ethereum mogła zinterpretować i przechowywać kontrakt. Więcej na temat kompilacji

Kompozycyjność – o wzajemnej zależności komponentów

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

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

Ograniczenia

Same inteligentne kontrakty nie mogą uzyskać informacji o zdarzeniach z „prawdziwego świata”, ponieważ nie mogą wysyłać żądań HTTP. Jest to celowe, ponieważ poleganie na informacjach z zewnątrz mogłoby zagrozić konsensusowi, który jest ważny dla bezpieczeństwa i decentralizacji.

Istnieją sposoby na obejście tego za pomocą wyroczni.

Zasoby inteligentnych kontraktów

Kontrakty OpenZeppelin – biblioteka do bezpiecznego tworzenia inteligentnych kontraktów.

DappSys – bezpieczne, proste, elastyczne elementy konstrukcyjne do inteligentnych kontraktów.

Dalsza lektura

Czy ten artykuł był pomocny?