Nasazení vašeho prvního chytrého kontraktu
Předpokládáme, že se stejně jako my těšíte, až nasadíte a budete interagovat s vaším prvním chytrým kontraktem na blockchainu Etherea.
Nemějte obavy, jelikož se jedná o náš první chytrý kontrakt, nasadíme ho na lokální testovací síti, takže vás jeho nasazení nebude nic stát a budete si s ním moci hrát, jak se vám zlíbí.
Napsání našeho kontraktu
Prvním krokem je navštívit Remix (opens in a new tab) a vytvořit nový soubor. V levé horní části rozhraní Remix přidejte nový soubor a zadejte požadovaný název souboru.
Do nového souboru vložíme následující kód.
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // Veřejná proměnná typu unsigned int pro uchování počtu7 uint256 public count = 0;89 // Funkce, která navyšuje náš čítač10 function increment() public {11 count += 1;12 }1314 // Nepovinný getter pro získání hodnoty počítadla15 function getCount() public view returns (uint256) {16 return count;17 }1819}Zobrazit všePokud jste zvyklí programovat, snadno uhodnete, co tento program dělá. Zde je vysvětlení řádek po řádku:
- Řádek 4: Definujeme kontrakt s názvem
Counter. - Řádek 7: Náš kontrakt ukládá jedno celé číslo bez znaménka s názvem
countzačínající na 0. - Řádek 10: První funkce změní stav kontraktu a navýší (
increment()) naši proměnnoucount. - Řádek 15: Druhá funkce je pouze getter pro čtení hodnoty proměnné
countmimo chytrý kontrakt. Všimněte si, že jelikož jsme naši proměnnoucountdefinovali jako veřejnou (public), není to nutné, ale je to uvedeno jako příklad.
To je k našemu prvnímu jednoduchému chytrému kontraktu vše. Jak možná víte, vypadá to jako třída z jazyků OOP (objektově orientovaného programování), jako je Java nebo C++. Nyní je čas si s naším kontraktem pohrát.
Nasazení našeho kontraktu
Jelikož jsme napsali náš první chytrý kontrakt, nyní ho nasadíme na blockchain, abychom si s ním mohli hrát.
Nasazení chytrého kontraktu na blockchain je vlastně jen odeslání transakce obsahující kód zkompilovaného chytrého kontraktu bez určení jakýchkoli příjemců.
Nejprve zkopilujeme kontrakt kliknutím na ikonu kompilace na levé straně:
Poté klikněte na tlačítko kompilace:
Můžete si vybrat možnost „Automatická kompilace“, takže kontrakt bude vždy zkompilován, když uložíte obsah v textovém editoru.
Poté přejděte na obrazovku "nasazení a spouštění transakcí":
Jakmile se ocitnete na obrazovce "nasazení a spouštění transakcí", dvakrát zkontrolujte, zda se zobrazuje název vašeho kontraktu, a klikněte na tlačítko Nasadit. Jak vidíte v horní části stránky, aktuální prostředí je „JavaScript VM“, to znamená, že nasadíme náš chytrý kontrakt a budeme s ním interagovat na lokálním testovacím blockchainu, abychom mohli testovat rychleji a bez poplatků.
Jakmile kliknete na tlačítko „Nasadit“, uvidíte, že se váš kontrakt objeví ve spodní části. Kliknutím na šipku vlevo ho rozbalíte, abychom viděli obsah našeho kontraktu. Zde je naše proměnná count, naše funkce increment() a getter getCounter().
Pokud kliknete na tlačítko count nebo getCount, ve skutečnosti se načte obsah proměnné count kontraktu a zobrazí se. Jelikož jsme funkci increment ještě nevolali, měla by se zobrazit 0.
Nyní zavoláme funkci increment kliknutím na tlačítko. Uvidíte záznamy o provedených transakcích, které se objeví ve spodní části okna. Uvidíte, že záznamy jsou odlišné, když stisknete tlačítko pro načtení dat namísto tlačítka increment. Je to proto, že čtení dat na blockchainu nevyžaduje žádné transakce (zápis) ani poplatky. Protože pouze úprava stavu blockchainu vyžaduje provedení transakce:
Po stisknutí tlačítka inkrementace, které vygeneruje transakci pro volání naší funkce increment(), přečteme při opětovném kliknutí na tlačítka count nebo getCount nově aktualizovaný stav našeho chytrého kontraktu, kde proměnná count bude větší než 0.
V dalším návodu si ukážeme, jak můžete do svých chytrých kontraktů přidávat události. Zaznamenávání událostí je pohodlný způsob, jak ladit váš chytrý kontrakt a porozumět tomu, co se děje při volání funkce.
Stránka naposledy aktualizována: 26. dubna 2024







