Ethereum - szybki przewodnik

Ogromny sukces Bitcoina wzbudził zainteresowanie w umysłach wielu osób tworzeniem własnych walut. Patrząc na zalety oferowane przez Bitcoin - walutę cyfrową, ludzie chcieli wykorzystać koncepcję Blockchain we własnych aplikacjach. Ludzie chcieli zrezygnować ze swoich fizycznych umów na rzecz inteligentnych umów cyfrowych, w których kilka kwestii, takich jak odrzucenie, przejrzystość, bezpieczeństwo itp. Zostanie automatycznie rozwiązanych. Efektem tych starań było powstanie Ethereum - popularnej platformy do tworzenia rozproszonych aplikacji Blockchain obsługujących inteligentne kontrakty.

W tym samouczku dowiesz się, jak utworzyć aplikację rozproszoną (DAPP) na platformie Ethereum. Dokładniej, dowiesz się, jak napisać umowę, przetestować ją na lokalnym Blockchain, a następnie wdrożyć na zewnętrznym Blockchain w celu głębokiego testowania i użytku komercyjnego. Będziesz używaćSolidity, język zorientowany obiektowo do tworzenia kontraktów. Będziesz także używaćRemix, środowisko IDE typu open source do tworzenia i testowania umów. Aby wdrożyć przetestowaną umowę na zewnętrznym Blockchainie, użyjeszGanache. Do interakcji z umową będziesz potrzebować aplikacji klienckiej. UżyjemyMyEtherWalletstworzyć portfel dla każdego takiego klienta. Twórca umowy opublikuje umowę. Każdy inny klient przyjrzy się wartości kontaktu, korzystając z interfejsu udostępnionego w umowie i prześle pieniądze twórcy za wykonanie części zamówienia.

Zacznijmy więc od napisania umowy.

Dostępnych jest kilka narzędzi do tworzenia i testowania umów. Jedno z najprostszych narzędzi znajduje się na samej oficjalnej stronie Ethereum. Narzędzie nazywa sięRemix, użyjemy tego do rozwoju naszych kontraktów.

Remiks dla rozwoju kontraktu

Otwórz Remix IDE, wpisując następujący adres URL w przeglądarce.

https://remix.ethereum.org

Pojawi się następujący ekran.

W środkowym oknie zobaczysz domyślny kod, który jest przykładowym kodem Solidity. Kod kontraktu wpiszesz w tym edytorze kodu. Twój kod może zostać automatycznie skompilowany. Po udanej kompilacji kodu będziesz mógł uruchomić kod w tym samym IDE. Po wykonaniu metod kontraktu wyniki zostaną wyświetlone w tym samym oknie IDE. Istnieją narzędzia do debugowania kodu i testowania jednostkowego projektu. Można je zobaczyć na pasku menu w prawym górnym rogu, jak pokazano na poniższym zrzucie ekranu IDE. Wkrótce będziesz używać tych opcji.

Teraz zaczniesz pisać swoją umowę.

Solidity to język zorientowany obiektowo, opracowany specjalnie do pisania umów. Jest to język wysokiego poziomu, który dziedziczy cechy z C ++, Pythona i JavaScript. Kompilator Solidity kompiluje kod źródłowy do kodu bajtowego, który działa na maszynie wirtualnej Ethereum (EVM).

Aby szybko zrozumieć składnię Solidity, spójrz na przykładowy kod w środowisku IDE.

pragma solidity >=0.4.22 <0.6.0;
contract Ballot {

Pierwsza linia to dyrektywa dla kompilatora. Drugi wiersz rozpoczyna definicję kontraktu. W ramach kontraktu deklarujesz zmienne, takie jak -

address chairperson;

Możesz także zdefiniować struktury, takie jak Proposali utwórz tablicę tych elementów struktury. Sprawdź to w oknie kodu.

Następnie można zdefiniować konstruktora, który jest wywoływany w momencie tworzenia wystąpienia kontraktu.

constructor(uint8 _numProposals) public {

Po konstruktorze zdefiniujesz kilka metod, które są metodami kontraktowymi. W przykładowej umowiegiveRightToVote jest jedną z takich metod o następującej składni -

function giveRightToVote(address toVoter) public {

Plik public słowo kluczowe sprawia, że ​​ta metoda jest publicznie wywoływana przez każdego klienta, który ma dostęp do kontraktu.

Podobnie przykładowa umowa definiuje trzy dodatkowe metody o nazwie delegate, vote, i winningProposal. Sprawdź je, aby zrozumieć składnię Solidity. Są to warunki wstępne do napisania własnej umowy. Wyjaśnienie pełnej składni Solidity wykracza poza zakres tego samouczka.

Nazwijmy nasz kontrakt MyContract jak w poniższej deklaracji -

contract MyContract {

Zadeklarujemy dwie zmienne w następujący sposób -

uint amount;
uint value;

Zmienna amountbędzie przechowywać zgromadzone pieniądze wysłane przez wykonawców kontraktu do twórcy kontraktu. Plikvaluepole będzie zawierało wartość kontraktu. Jako wykonawcy realizują kontrakt, plikvalue pole zostanie zmodyfikowane w celu odzwierciedlenia wartości kontraktu zbilansowanego.

W konstruktorze kontraktu ustawiamy wartości tych dwóch zmiennych.

constructor (uint initialAmount, uint initialValue) public {
   amount = 0;
   value = 1000;
}

Ponieważ początkowo kwota pobrana na kontrakcie wynosi zero, ustalamy amount pole na 0. Ustawiamy kontrakt value do dowolnej liczby, w tym przypadku jest to 1000. O tej wartości decyduje zleceniodawca.

Aby w dowolnym momencie sprawdzić zebraną kwotę, udostępniamy metodę zamówienia publicznego tzw getAmount zdefiniowane w następujący sposób -

function getAmount() public view returns(uint) {
   return amount;
}

Aby uzyskać zbilansowaną wartość kontraktu w dowolnym momencie, definiujemy getBalance metoda w następujący sposób -

function getBalance() public view returns(uint) {
   return value;
}

Na koniec piszemy metodę kontraktu (Send). Umożliwia klientom przesłanie pieniędzy do twórcy umowy -

function send(uint newDeposit) public {
   value = value - newDeposit;
   amount = amount + newDeposit;
}

Wykonanie send metoda zmieni oba value i amount pola zamówienia.

Pełny kod umowy znajduje się poniżej -

contract MyContract {
   uint amount;
   uint value;

   constructor (uint initialAmount, uint initialValue) public {
      amount = 0;
      value = 1000;
   }
   function getBalance() public view returns(uint) {
      return value;
   }
   function getAmount() public view returns(uint) {
      return amount;
   }
   function send(uint newDeposit) public {
      value = value - newDeposit;
      amount = amount + newDeposit;
   }
}

Po napisaniu pełnego kodu kontraktu, kompilacja go w tym IDE jest banalna. Po prostu kliknijAutocompile pole wyboru w IDE, jak pokazano na zrzucie ekranu poniżej -

Alternatywnie możesz skompilować umowę, klikając przycisk z tytułem “Start to compile”.

Jeśli jest jakaś literówka, popraw ją w oknie kodu. Upewnij się, że kod jest w pełni skompilowany bez błędów. Teraz jesteś gotowy do wdrożenia kontraktu.

W tym rozdziale dowiemy się, jak wdrożyć kontrakt na Ethereum. Kliknij opcję menu Uruchom, aby wdrożyć kontrakt. Pojawi się następujący ekran.

Nazwa kontraktu jest wyświetlana w podświetlonym polu listy. Poniżej tego zauważyszDeploykliknij go, aby wdrożyć kontrakt. Umowa zostanie wdrożona na wbudowanym łańcuchu blokowym Remix. U dołu ekranu będzie można zobaczyć wdrożoną umowę. Możesz to zobaczyć w podświetlonej części zrzutu ekranu poniżej.

Zwróć uwagę, obecność trzech nazw metod w tym podświetlonym regionie. Następnie będziesz wchodzić w interakcję z umową, wykonując metody kontraktowe.

Po kliknięciu wdrożonej umowy zobaczysz różne metody publiczne przewidziane w umowie. Pokazuje to poniższy zrzut ekranu.

Pierwsza metoda sendzawiera pole edycji przed nim. Tutaj wpisz parametry wymagane przez metodę kontraktu. Pozostałe dwie metody nie przyjmują żadnych parametrów.

Wysyłanie pieniędzy

Teraz wprowadź kwotę, na przykład 100, przed sendfunkcja widoczna w oknie umowy. Kliknijsendprzycisk. Spowoduje to wykonanie umowysend metoda obniżająca wartość zamówienia value pole i zwiększenie wartości amount pole.

Badanie wartości kontraktu

Poprzednie send money akcja zmniejszyła wartość kontraktu o 100. Możesz to teraz sprawdzić, wywołując getBalancesposób zawarcia umowy. Dane wyjściowe zobaczysz po kliknięciu plikugetBalance przycisk, jak pokazano na zrzucie ekranu poniżej -

Umowa value jest teraz zmniejszona do 900.

Badanie zebranej kwoty

W tej sekcji przeanalizujemy kwotę pieniędzy zebranych do tej pory w ramach tej umowy. W tym celu kliknijgetAmountprzycisk. Pojawi się następujący ekran.

Plik amount wartość pola zmieniła się z 0 na 100.

Spróbuj kilku send operacji i zbadania umowy value i amount pola, aby stwierdzić, że wdrożona umowa przebiega zgodnie z oczekiwaniami.

Środowisko Remix IDE, z którego korzystałeś do tej pory, jest wystarczająco dobre do programowania i wstępnego testowania umowy. W przypadku rzeczywistych umów musisz przetestować swoją funkcjonalność pod kątem różnych parametrów. Remix nie może tworzyć rzeczywistych (nie testowych) kont użytkowników w celu przesyłania środków między nimi. Nie masz kontroli nad konfiguracją Blockchain utworzonego przez Remix. Nie możesz nawet monitorować wykonywania transakcji.

Remix nie wykonuje kilku zaawansowanych operacji. Dlatego musimy wdrożyć naszą umowę na bardziej wyrafinowanym łańcuchu blokowym, który zapewnia wszystkie te funkcje. Jednym z takich Blockchain jestGanache o którym dowiesz się w następnym rozdziale.

Ganache służy do konfigurowania osobistego Ethereum Blockchain do testowania kontraktów Solidity. Zapewnia więcej funkcji w porównaniu do Remix. Dowiesz się o funkcjach podczas ćwiczeń z Ganache. Zanim zaczniesz korzystać z Ganache, musisz najpierw pobrać i zainstalować Blockchain na komputerze lokalnym.

Pobieranie Ganache

Możesz pobrać Ganache z następującego adresu URL -

https://truffleframework.com/ganache

Ganache jest dostępny na kilku platformach. Opracowaliśmy i przetestowaliśmy cały ten samouczek na komputerze Mac. Dlatego poniższe zrzuty ekranu pokażą instalację Maca. Po otwarciu adresu URL instalacji podanego powyżej automatycznie wykrywa system operacyjny komputera i kieruje do odpowiedniej instalacji binarnej. Poniższy zrzut ekranu przedstawia instalację Maca.

Po kliknięciu przycisku POBIERZ rozpocznie się pobieranie pliku DMG do instalacji na komputerze Mac.

Instalowanie Ganache

Znajdź plik „Ganache-2.0.0.dmg” w folderze Pobrane i kliknij go dwukrotnie, aby zainstalować Ganache. Po pomyślnej instalacji pojawi się następujący ekran -

Przeciągnij ikonę Ganache do folderu aplikacji. Teraz Ganache jest dostępny jako aplikacja na komputerze Mac.

Jeśli używasz innego systemu operacyjnego, postępuj zgodnie z instrukcjami podanymi w celu pomyślnej instalacji.

Uruchamiam Ganache

Teraz zlokalizuj Ganache w folderze aplikacji i kliknij dwukrotnie jego ikonę, aby uruchomić Ganache.

Ganache Desktop

Po uruchomieniu Ganache pojawi się ekran Ganache, jak pokazano poniżej -

Kliknij QUICKSTART, aby uruchomić Ganache. Zobaczysz konsolę Ganache, jak pokazano poniżej -

Konsola na powyższym zrzucie ekranu pokazuje dwa konta użytkowników z saldem 100 ETH (Ether - waluta do transakcji na platformie Ethereum). Pokazuje również liczbę transakcji równą zero dla każdego konta. Ponieważ użytkownik nie wykonał do tej pory żadnych transakcji, liczba ta wynosi oczywiście zero.

Otrzymamy teraz przegląd kilku ważnych ekranów Ganache, które mają dla nas bezpośrednie znaczenie.

Kliknij ikonę ustawień w prawym górnym rogu ekranu, jak pokazano na zrzucie ekranu poniżej -

Pojawi się ekran ustawień serwera, jak pokazano poniżej -

Tutaj będziesz mógł ustawić wartości adresu serwera i numeru portu dla twojego serwera Ganache. Na razie pozostaw te wartości domyślne. Identyfikator sieci to wewnętrzny identyfikator Blockchain serwera Ganache; pozostaw wartość domyślną. PlikAutomineprzycisk jest włączony, co oznacza, że ​​transakcje zostaną przetworzone natychmiast. Jeśli wyłączysz tę opcję, poprosi Cię o podanie czasu w sekundach, po którym bloki zostaną wydobyte.

Konto i klucze

Po kliknięciu pliku Accounts & Keys opcję menu, zobaczysz następujący ekran -

Tutaj byłbyś w stanie setdomyślne saldo dla każdego konta. Wartość domyślna to 100. To teraz wyjaśnia, dlaczego na zrzucie ekranu pulpitu wyświetlono 100 ETH dla każdego konta. Na tym ekranie możesz również ustawić liczbę kont. Wartość pokazana na tym zrzucie ekranu to 2, dlatego pulpit pokazał tylko dwa konta.

Teraz zajmiemy się ekranem dwóch ustawień; wystarczyłaby wiedza, jak te dwie rzeczy działają. Zrestartuj serwer, klikającRESTARTprzycisk po prawej stronie ekranu. Powrócisz teraz do ekranu Pulpitu. Spróbuj wprowadzić różne wartości w powyższych dwóch polach, zrestartuj serwer i zobacz efekt.

Teraz pokrótce zrozumiemy, co jest dostępne na pulpicie Ganache. Na pulpicie u góry mamy kilka opcji menu, z których kilka ma dla nas natychmiastowe znaczenie. Pasek menu jest podświetlony na zrzucie ekranu poniżej -

Klikając na TRANSACTIONSmenu pokazuje wszystkie dotychczas wykonane transakcje. Wkrótce będziesz wykonywać transakcje. Teraz wróć do powyższego ekranu i od czasu do czasu sprawdzaj transakcje. Typowy ekran transakcji jest pokazany poniżej -

Podobnie, gdy klikniesz plik BLOCKSmenu, zobaczysz różne zaminowane bloki. Rozważ poniższy zrzut ekranu, aby zrozumieć, jak wygląda menu BLOKI -

Kliknij na LOGSmenu. Otworzy dziennik systemowy. Tutaj możesz sprawdzić różne operacje, które wykonałeś na Ethereum Blockchain.

Teraz, gdy zrozumiałeś, jak używać Ganache do konfigurowania prywatnego Ethereum Blockchain, utworzysz teraz kilku klientów, którzy użyliby tego Blockchain.

W przypadku aplikacji klienckiej użyjesz MyEtherWallet.

Pobieranie MyEtherWallet oprogramowanie z następującego adresu URL -

https://github.com/kvhnuke/etherwallet/releases/tag/v3.21.06

W razie potrzeby rozpakuj pobrany plik i otwórz index.html. Zobaczysz następujący interfejs do tworzenia nowego portfela.

W tym rozdziale dowiemy się, jak stworzyć portfel Ethereum. Aby utworzyć nowy portfel, wprowadź wybrane przez siebie hasło, a następnie kliknij przycisk „Create New Wallet”. Gdy to zrobisz, zostanie utworzony portfel. Portfel cyfrowy to w zasadzie generacja pary kluczy publiczny / prywatny, którą należy przechowywać w bezpiecznym miejscu. Utworzenie portfela powoduje wyświetlenie następującego ekranu -

Kliknij na “Download Keystore File (UTC / JSON)”aby zapisać wygenerowane klucze. Teraz kliknij“I understand. Continue”przycisk. Twój klucz prywatny pojawi się na ekranie, jak widać na poniższym zrzucie ekranu -

Kliknij na “Print Paper Wallet”aby zachować fizyczny rejestr klucza prywatnego portfela. Będzie to potrzebne później do odblokowania portfela. Zobaczysz następujący ekran. Nie trać tego wyjścia.

Aby odblokować portfel, kliknij “Save Your Address”przycisk. Zobaczysz następujący ekran.

Portfel można odblokować za pomocą opcji klucza prywatnego, jak zaznaczono na powyższym ekranie. Wytnij i wklej klucz prywatny z poprzedniego zrzutu ekranu i kliknij przycisk Odblokuj. Twój portfel zostanie odblokowany, a na dole ekranu pojawi się komunikat. Ponieważ portfel na razie nic nie zawiera, odblokowanie portfela nie jest dla nas w tym momencie zbyt przydatne.

Utworzyłeś teraz portfel; ten portfel jest interfejsem klienta do Blockchain. Dołączymy portfel do Ganache Blockchain, który rozpocząłeś na wcześniejszej lekcji. Aby to zrobić, kliknijNetwork rozwijane pole, jak pokazano na zrzucie ekranu poniżej -

Idź na dół listy. Zobaczysz opcję dla“Add Custom Network / Node”. Wybierz tę pozycję.

Teraz pojawi się ekran z pytaniem o adres serwera Ganache i port, na którym nasłuchuje.

Wpisz dane swojego serwera Ganache - http://127.0.0.1 i port: 8545. Będą to wartości ustawione przez Ciebie w konfiguracji serwera Ganache. Daćnamedo tego węzła. Kliknij na“Save & Use Custom Node”przycisk. U dołu ekranu zostanie wyświetlony komunikat dotyczący połączenia. W tym momencie Twój portfel jest pomyślnie połączony z Ganache Blockchain.

Jesteś teraz gotowy do wdrożenia kontraktu na tym połączonym Blockchainie.

Aby wdrożyć kontrakt, wybierz Contracts opcja menu, jak pokazano na zrzucie ekranu poniżej -

Będziesz musiał wprowadzić kod bajtowy umowy na tym ekranie. Pamiętaj, że kiedy kompilujesz kod kontraktu Solidity, generuje on kod bajtowy, który działa na EVM. Będziesz teraz musiał pobrać ten kod bajtowy zRemix IDE.

Przejdź do ekranu Remix IDE, w oknie kodu powinna znajdować się Twoja wcześniej wpisana umowa. Jeśli nie, wpisz ponownie kontrakt w oknie kodu. Kliknij przycisk Bytecode, jak pokazano na poniższym zrzucie ekranu -

Kod bajtowy skompilowanego źródła jest kopiowany do schowka wraz z innymi informacjami. Wklej skopiowany kod do swojego ulubionego edytora tekstu. Poniżej znajduje się zrzut ekranu edytora tekstu -

Wartość objecttag zawiera żądany kod bajtowy. Skopiuj to uważnie, uważając, aby nie kopiować otaczających cudzysłowów. Kod bajtowy jest naprawdę długi, więc upewnij się, że skopiowałeś go do ostatniego bajtu włącznie. Teraz wklej ten kod bajtowy wDeploy Contract ekran, jak pokazano poniżej -

Plik Gas Limit pole jest ustawiane automatycznie.

Poniżej pola Limit gazu znajduje się opcja dostępu do portfela.

Teraz uzyskaj dostęp do portfela za pomocą Private Keykonta Ganache, na którym zostanie wdrożona ta umowa. Aby uzyskać ten klucz prywatny, wróć doGanacheokno. Kliknij nakeys ikona pierwszego konta, jak pokazano poniżej -

Zobaczysz klucz prywatny konta użytkownika nr 1, jak widać na poniższym zrzucie ekranu -

Skopiuj ten klucz prywatny i wklej go w sekcji „Wklej swój klucz prywatny”, jak pokazano poniżej -

Zobaczysz plik “Unlock”przycisk u dołu ekranu. Po odblokowaniu na dole ekranu pojawi się komunikat „sukces”. W tym momencie Twój portfel jest przypisany do konta nr 1 w Ganache Blockchain.

Teraz możesz podpisać i wdrożyć umowę. Kliknij na“Sign Transaction” przycisk, jak pokazano na zrzucie ekranu poniżej -

Podpisanie transakcji generuje i wyświetla oba Raw i Signedtransakcje. Kliknij na“Deploy Contract”przycisk, aby wdrożyć kontrakt na Ganache Blockchain. Pamiętaj, że umowa jest wdrażana przez użytkownika konta nr 1 w Ganache Blockchain. W związku z tym użytkownik konta nr 1 staje się twórcą umowy. Przed wdrożeniem umowy zostaniesz poproszony o potwierdzenie transakcji, ponieważ wdrożenie tej umowy na publicznym prawdziwym Ethereum Blockchain może kosztować Cię trochę prawdziwych pieniędzy. Nie martw się, w przypadku obecnego prywatnego Blockchain działającego na twoim lokalnym komputerze nie ma żadnych prawdziwych pieniędzy. Kliknij naMake transaction przycisk, jak pokazano na zrzucie ekranu poniżej -

Zbadaj konsolę Ganache; zobaczysz, że saldo ETH na koncie nr 1 zmniejszyło się, jak widać na poniższym zrzucie ekranu -

Teraz kliknij TRANSACTIONS menu, jak pokazano na zrzucie ekranu poniżej -

Zobaczysz szczegóły transakcji.

Na tym ekranie znajdziesz opublikowany adres umowy. Adres zaznaczono na powyższym zrzucie ekranu. Będziesz rozpowszechniać ten adres publicznie, aby inni wiedzieli, że Twoja umowa jest dostępna pod wskazanym adresem, z którym mogą się połączyć i realizować takie metody, jak wysyłanie pieniędzy do Ciebie - twórcy umowy. Skopiuj ten adres umowy do własnego użytku, ponieważ będziesz go potrzebować w następnym kroku.

Teraz jesteś gotowy do interakcji z wdrożoną umową. Wróć do pulpitu MyEtherWallet i kliknij kartę „Interakcja z umową”, jak pokazano na zrzucie ekranu poniżej -

Wklej adres umowy, który wcześniej skopiowałeś w “Contract Address”pole. Musisz również wkleić plik“ABI / JSON Interface” umowy na powyższym ekranie.

Aby uzyskać ABIprzejdź do Remix okno i kliknij ABI przycisk, jak pokazano na zrzucie ekranu poniżej.

Interfejs ABI / JSON zostanie skopiowany do schowka. Wklej to w swoim ulubionym edytorze, aby sprawdzić wygenerowany interfejs, który pokazano poniżej -

ABI / JSON Interface
[
   {
      "constant": false,
      "inputs": [
         {
            "name": "newDeposit",
            "type": "uint256"
         }
      ],
      "name": "send",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
   },
   {
      "inputs": [
         {
            "name": "initialAmount",
            "type": "uint256"
         },
         {
            "name": "initialValue",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "getAmount",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   },
   {
      "constant": true,
      "inputs": [],
      "name": "getBalance",
      "outputs": [
         {
            "name": "",
            "type": "uint256"
         }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
   }
]

Po wklejeniu tego JSON do MyEtherWallet interfejs, zauważysz, że przycisk ACCESS pod interfejsem JSON jest teraz aktywowany, jak pokazano poniżej -

Kliknij Access przycisk dostępu do umowy.

Po kliknięciu Accessprzycisk, na ekranie pojawi się lista rozwijana zawierająca adres umowy i wybór funkcji, podobnie jak w edytorze Remiksów. Jest to pokazane na poniższym zrzucie ekranu -

Możesz sprawdzić różne funkcje umowy, podobnie jak w przypadku wdrożenia Remix. Zwróć uwagę, że kontakt jest teraz wdrożony na zewnętrznym łańcuchu blokowym Ganache. SprawdźgetAmountfunkcjonować; otrzymasz wartość Kwota równą zero igetBalance pokaże saldo w wysokości 1000.

Teraz spróbuj wysłać trochę pieniędzy. Przedstawi ci pliktexteditkontrola wprowadzania kwoty. Kiedy piszesz umowę, użyjesz trochę „gazu” i zostaniesz poproszony o potwierdzenie transakcji przed zapisaniem jej w Blockchain. Transakcja zostanie wykonana w krótkim czasie, w zależności od czasu wyszukiwania ustawionego przez Ciebie na serwerze Ganache. Następnie możesz ponownie zbadać plikvalue i amount pola zamówienia w celu sprawdzenia, czy są one rzeczywiście zmodyfikowane.

Możesz teraz sprawdzić pulpit Ganache, aby wyświetlić transakcje, które wykonałeś do tej pory. Przykładowe dane wyjściowe pokazano poniżej -

Do tej pory byłeś zarówno twórcą, jak i wykonawcą kontraktu. Nie ma to większego sensu, ponieważ oczekujesz, że inni będą korzystać z Twojej umowy. W tym celu stworzymy kolejnego klienta dla naszego Ganache Blockchain i wyślemy pieniądze z nowo utworzonego konta nr 2 do twórcy umowy na koncie nr 1.

W tym rozdziale nauczymy się tworzenia użytkowników kontraktowych na Ethereum. Aby utworzyć użytkownika dla naszej opublikowanej umowy, utworzymy kolejnąMyEtherWalletklient podłączony do tego samego Ganache Blockchain, którego używałeś w poprzednich krokach. Przejdź doMyEtherWallet ekran i utwórz nowy portfel.

Kliknij na contracts menu i wybierz “Interact with Contract”opcja jak we wcześniejszym przypadku. Należy pamiętać, że ten nowy użytkownik po prostu wejdzie w interakcję z już opublikowaną umową i nie wdroży własnej umowy. Podaj adres umowy i ABI, których użyłeś we wcześniejszym przypadku.

Teraz kliknij Access i wywołaj send metoda. Gdy zostaniesz o to poproszony, wprowadź jakąś wartość, powiedz 100 ETH do wysłania. Prześlij transakcję. Po przesłaniu pojawi się następujący ekran.

Aby dołączyć tego nowego klienta do naszego Ganache Blockchain, przejdź do Ganache Console. Kliknij ikonę kluczy konta nr 2, jak pokazano na poniższym zrzucie ekranu -

Otrzymasz klucz prywatny do konta nr 2.

Skopiuj otrzymany klucz i użyj go w nowo utworzonym portfelu, jak pokazano tutaj -

Kliknij na Unlock przycisk do przypięcia portfela.

Po pomyślnym odblokowaniu portfela wpisz żądaną transakcję wysłania.

Wygeneruj transakcję, klikając “Generate Transaction” przycisk.

Maketransakcji i poczekaj, aż odbije się ona w Blockchain. Teraz wykonaj“getAmount”, wyświetlona kwota powinna teraz wynosić 200.

Wykonać “getBalance”. Plikvalue pole powinno teraz wynosić 800.

Sprawdź dziennik transakcji, aby zobaczyć różne transakcje wykonane przez różnych użytkowników.

Nauczyłeś się, jak napisać własny kontrakt cyfrowy w Solidity. Opracowałeś i przetestowałeś interfejs kontraktu w Remix IDE. W celu dalszych testów dla wielu użytkowników wdrożyłeś tę umowę na Ganache Blockchain. Na Ganache utworzyłeś dwa konta użytkowników. Pierwsze konto zostało użyte do opublikowania umowy. Drugie konto służyło do konsumowania kontraktu.

Co jest następne?

Ganache Blockchain, którego użyłeś w tym całym procesie, jest prywatny i lokalny dla twojego komputera. Gdy będziesz w pełni zadowolony z funkcjonowania umowy, możesz przystąpić do jej publikacji na rzeczywistym łańcuchu blokowym Ethereum. Jednak zrobienie tego wymagałoby wydania prawdziwych pieniędzy. W aplikacji demonstracyjnej domyślnie użyliśmy 1000 ETH dla każdego konta użytkownika w Ganache. Kiedy wdrażasz kontrakt na prawdziwym Blockchainie, będziesz musiał kupić ETH, przeliczając walutę własnego kraju na ETH. Ta waluta będzie przechowywana w Twoim portfelu i będziesz mógł ją wydawać tak, jak chcesz.