Przejdź do głównej treści

Wdrażanie pierwszego inteligentnego kontraktu

inteligentne kontrakty
Remix
Solidity
wdrażanie
Początkujący
jdourlens
3 kwietnia 2020
3 minut czytania

Zgaduję, że jesteś równie podekscytowany jak my, aby wdrożyć i wejść w interakcję ze swoim pierwszym inteligentnym kontraktem na blockchainie Ethereum.

Nie martw się, ponieważ jest to nasz pierwszy inteligentny kontrakt, wdrożymy go w lokalnej sieci testowej, więc jego wdrożenie nic Cię nie będzie kosztować i będziesz mógł się nim bawić do woli.

Pisanie naszego kontraktu

Pierwszym krokiem jest odwiedzenie Remix (opens in a new tab) i utworzenie nowego pliku. W lewej górnej części interfejsu Remix dodaj nowy plik i wprowadź wybraną nazwę pliku.

Adding a new file in the Remix interface

W nowym pliku wkleimy następujący kod.

Jeśli jesteś przyzwyczajony do programowania, możesz łatwo odgadnąć, co robi ten program. Oto wyjaśnienie linijka po linijce:

  • Linia 4: Definiujemy kontrakt o nazwie Counter.
  • Linia 7: Nasz kontrakt przechowuje jedną liczbę całkowitą bez znaku (unsigned integer) o nazwie count, zaczynającą się od 0.
  • Linia 10: Pierwsza funkcja zmodyfikuje stan kontraktu i zwiększy (increment()) naszą zmienną count.
  • Linia 15: Druga funkcja to po prostu getter, który pozwala na odczytanie wartości zmiennej count poza inteligentnym kontraktem. Zauważ, że ponieważ zdefiniowaliśmy naszą zmienną count jako publiczną, nie jest to konieczne, ale zostało pokazane jako przykład.

To wszystko, jeśli chodzi o nasz pierwszy prosty inteligentny kontrakt. Jak być może wiesz, wygląda on jak klasa z języków programowania obiektowego (OOP), takich jak Java czy C++. Nadszedł czas, aby pobawić się naszym kontraktem.

Wdrażanie naszego kontraktu

Skoro napisaliśmy nasz pierwszy inteligentny kontrakt, teraz wdrożymy go na blockchainie, aby móc się nim pobawić.

Wdrożenie inteligentnego kontraktu na blockchainie to tak naprawdę tylko wysłanie transakcji zawierającej kod skompilowanego inteligentnego kontraktu bez określania żadnych odbiorców.

Najpierw skompilujemy kontrakt, klikając ikonę kompilacji po lewej stronie:

The compile icon in the Remix toolbar

Następnie kliknij przycisk kompilacji:

The compile button in the Remix solidity compiler

Możesz zaznaczyć opcję „Auto compile” (Automatyczna kompilacja), dzięki czemu kontrakt będzie zawsze kompilowany po zapisaniu zawartości w edytorze tekstu.

Następnie przejdź do ekranu „deploy and run transactions” (wdrażanie i uruchamianie transakcji):

The deploy icon in the Remix toolbar

Gdy znajdziesz się na ekranie „deploy and run transactions”, upewnij się, że nazwa Twojego kontraktu jest widoczna, i kliknij „Deploy” (Wdróż). Jak widać na górze strony, obecne środowisko to „JavaScript VM”, co oznacza, że wdrożymy nasz inteligentny kontrakt i będziemy z nim wchodzić w interakcje na lokalnym testowym blockchainie, aby móc testować szybciej i bez żadnych opłat.

The deploy button in the Remix solidity compiler

Po kliknięciu przycisku „Deploy” zobaczysz swój kontrakt na dole. Kliknij strzałkę po lewej stronie, aby go rozwinąć, dzięki czemu zobaczymy zawartość naszego kontraktu. To nasza zmienna counter, nasza funkcja increment() oraz getter getCounter().

Jeśli klikniesz przycisk count lub getCount, pobierze on zawartość zmiennej count kontraktu i ją wyświetli. Ponieważ nie wywołaliśmy jeszcze funkcji increment, powinno wyświetlić się 0.

The function button in the Remix solidity compiler

Wywołajmy teraz funkcję increment, klikając przycisk. Zobaczysz logi wykonanych transakcji pojawiające się na dole okna. Zauważysz, że logi różnią się, gdy naciskasz przycisk do pobierania danych, w porównaniu do przycisku increment. Dzieje się tak, ponieważ odczytywanie danych na blockchainie nie wymaga żadnych transakcji (zapisu) ani opłat. Tylko modyfikacja stanu blockchaina wymaga wykonania transakcji:

A log of transactions

Po naciśnięciu przycisku inkrementacji, który wygeneruje transakcję wywołującą naszą funkcję increment(), jeśli ponownie klikniemy przyciski count lub getCount, odczytamy nowo zaktualizowany stan naszego inteligentnego kontraktu, w którym zmienna count będzie większa niż 0.

Newly updated state of the smart contract

W następnym samouczku omówimy, jak możesz dodawać zdarzenia do swoich inteligentnych kontraktów. Logowanie zdarzeń to wygodny sposób na debugowanie inteligentnego kontraktu i zrozumienie, co dzieje się podczas wywoływania funkcji.