Jak napsat svou první chytrou smlouvu?



Naučte se základy vývoje inteligentních smluv a začněte psát svou první inteligentní smlouvu. Budete také vědět, jak inteligentní smlouvu otestovat.

V , jste se dozvěděli o tom, co jsou inteligentní smlouvy, různé jazyky inteligentních smluv a jak nastavit vývojové prostředí inteligentních smluv. V tomto článku se dozvíte, jak vytvořit svůj první inteligentní kontrakt. Budu používatRemix IDE pro vývoj a testování chytré smlouvy.

V tomto výukovém programu pro vývoj inteligentních kontraktů jsou popsána níže uvedená témata:





Vytváření inteligentní smlouvy

V rámci této série blogů bude vyvinuta inteligentní smlouva o jednoduché objednávce. Jak tato řada postupuje a jak se zavádějí nové koncepty programovacího jazyka solidity, bude se inteligentní smlouva o vývoji vyvíjet a zlepšovat.



Struktura inteligentní smlouvy

Solidní inteligentní smlouva je v podstatě souborem následujících

  • data - který udržuje aktuální stav smlouvy
  • funkce - které používají logiku k přechodu stavu smlouvy

Solidní inteligentní smlouvy se řídí standardní strukturou. Jakákoli chytrá smlouva začíná následujícím prohlášením



Směrnice Pragma

Klíčové slovo „pragma“ lze použít k povolení určitých funkcí nebo kontrol kompilátoru. Níže uvedené prohlášení definuje, že zdrojový soubor (inteligentní kontrakt) nebude kompilován s kompilátorem starším než 0.4.0 a verzí kompilátoru po 0.6.0. Toto prohlášení zajišťuje, že při zavedení nové verze kompilátoru nebude zavedeno žádné nechtěné chování.

pragma solidity> = 0,4,0<=0.6.0 

Prohlášení smlouvy

Smlouva je deklarována pomocí klíčového slova „smlouva“. Tím se deklaruje prázdná smlouva, která je označena názvem „PurchaseOrder“.

smlouva PurchaseOrder {}

Ukládání příslušných údajů ke smlouvě

Každá smlouva nebo obecně řečeno každý program může vyžadovat uložení některých dat. Přidání dat do programu mu poskytuje úroveň flexibility. Důležitým prvkem je přechod od pevně zakódovaných hodnot v programu k hodnotám poskytnutým uživatelem. Proměnné umožňují ukládat data, označovat je, načítat a manipulovat s nimi.

Chytrý vývoj smlouvy: Představujeme proměnné

V solidnosti jsou proměnné dvou typů

  1. Typ hodnoty: Tyto typy proměnných jsou předávány podle hodnoty, tj. Jsou vždy kopírovány, když jsou použity jako argumenty funkcí nebo v přiřazeních. Například: celá čísla, booleovská adresa atd.
  2. Referenční typy: Tyto typy proměnných jsou složitých typů a jsou předávány odkazem, tyto proměnné se nevejdou do 256 bitů a je třeba je pečlivě spravovat, protože jejich kopírování je drahé.

Přidání dat do inteligentní smlouvy

Pojďme ke smlouvě přidat nějakou datovou proměnnou. Ke každé nákupní objednávce musí být přidruženo určité množství produktu. Přidejme proměnnou product_quantity, která bude datového typu integer nebo number.

jak implementovat abstraktní metodu v javě

Proměnná, kterou nyní zavádíme, je celé číslo bez znaménka a je reprezentována uint256, 256 zde znamená 256 bitové úložiště.

  • U - nepodepsaný (což znamená, že tento typ může představovat pouze kladná celá čísla, nikoli kladná a záporná celá čísla)
  • INT - celé číslo
  • 256 - 256 bitů
  • minimální hodnota, kterou lze přiřadit uint256, je 0
  • maximální hodnota, kterou lze přiřadit uint256, je 2 ^ 256-1 [velmi velké číslo]

Množství produktu je pouze kladná hodnota a současný předpoklad je, že uspokojíme velmi velkou hodnotu pro množství produktu.

vysvětlit mvc architekturu v Javě s příkladem

Deklarovaná proměnná „product_quantity“ je součástí stavu kontraktu, a proto je zachována nebo uložena v prostoru kontraktu. V současné době bude mít tato proměnná výchozí hodnotu 0.

smlouva PurchaseOrder {uint256 product_quantity}

Definování konstruktoru

Konstruktor je volán, když je nasazena smlouva. Konstruktor inicializuje kontrakt s některými hodnotami. V aktuálním scénáři je množství produktu nastaveno na 100, když je nasazena smlouva. Parametrizovaný konstruktor lze také vytvořit předáním proměnné a inicializací product_quantity pomocí předané hodnoty.

Klíčovým bodem, který je zde třeba poznamenat, je modifikátor přístupu „public“ spojený s konstruktorem. Veřejné klíčové slovo určuje, že k této funkci má přístup kdokoli, nejde o omezenou funkci.

konstruktor () public {product_quantity = 100}

Přidávání funkcí

Pojďme nyní přidat funkci, aby byl náš program interaktivní. Funkce jsou řízené funkce, které lze přidat do programu. Jakékoli funkci předchází funkce klíčových slov. Celkově tak vypadá deklarace funkce' funkce “.

Získejte funkci

Jedním z nejběžnějších požadavků pro libovolný program je čtení uložené hodnoty. V následující smlouvě si budeme muset přečíst hodnotu „product_quantity“. Za účelem poskytnutí této funkce je přidána funkce čtení nebo funkce get. V této funkci neprovádíme žádnou manipulaci s uloženou hodnotou, pouze načítáme uloženou hodnotu.

Pojďme nyní rozebrat naši funkci get (get_quantity)

Ne. Klíčové slovo Hodnota
jeden get_quantity (){nejsou předány žádné parametry}
2 veřejnost{k funkci má přístup kdokoli}
3 Pohled{znamená, že funkce čte pouze stav kontraktu, nemění stav kontraktu, tedy pohled}
4 vrací proměnnou typu uint256 {definováno, co je vráceno funkcí}
funkce get_quantity () veřejné zobrazení vrací (uint256) {návrat product_quantity}

Funkce seřizovače

Čtení dat je nutné a dosáhli jsme toho v poslední části, ale většina scénáře také vyžaduje schopnost zapisovat / aktualizovat data. Tato specifická funkce je zajištěna přidáním funkce setter. Tato funkce přebírá od uživatele hodnotu ve formě vstupního parametru. Pomocí hodnoty poskytované funkci uživatelem se do proměnné „product_quantity“ zapíše / aktualizuje hodnota.

Pojďme nyní rozebrat naši nastavenou funkci (update_quantity)

Přidání funkce k aktualizaci hodnoty množství produktu

Ne. Klíčové slovo Hodnota
jeden update_quantity (hodnota uint256){je předána hodnota parametru typu uint256}
2 veřejnost{k funkci má přístup kdokoli}
3 Není vyžadováno, protože stav se aktualizuje funkcemi
4 vrátí proměnnou typu uint256 (definováno, co je vráceno funkcí)
funkce update_quantity (hodnota uint256) public {product_quantity = product_quantity + value}

Když to všechno spojíme, tak by měla vypadat celková smlouva.

pragma solidity> = 0,4,0<=0.6.0 contract PurchaseOrder{ uint256 product_quantity //state variable /*Called with the contract is deployed and initializes the value*/ constructor() public{ product_quantity = 100 } // Get Function function get_quantity() public view returns(uint256){ return product_quantity } // Set Function function update_quantity(uint256 value) public { product_quantity = product_quantity + value } } 

Nasazení inteligentní smlouvy

Je čas otestovat chytrou smlouvu. K otestování této chytré smlouvy použijeme Remix Online IDE .

Remix je online hřiště pro ethereum smart contract . Remix je zcela založen na prohlížeči. Remix vám poskytuje online IDE (integrované vývojové prostředí), kde můžete psát své chytré smlouvy. Remix vám poskytuje schopnost online kompilátoru solidnosti. Inteligentní kontrakt v Remix IDE lze bezproblémově kompilovat pomocí konkrétní verze kompilátoru.

Remix také poskytuje schopnost rychle otestovat inteligentní kontrakt.

Remix poskytuje kompletní sadu nástrojů pro zahájení vývoje inteligentního kontraktu a testování inteligentního kontraktu jednotkou bez nutnosti instalace na místním počítači. To je velmi užitečné pro začátek solidnosti, protože vývojáři se musí soustředit pouze na psaní chytré smlouvy, spíše se starat o infrastrukturu.

S Remix IDE potřebujete pouze prohlížeč a připojení k internetu, abyste mohli začít s vývojem chytrých smluv. Rychlý vývoj, testování a ověření nápadu pro inteligentní smlouvu.

Remix nedávno upgradoval své uživatelské rozhraní.

Remix-UI-Smart-Contracts-Edureka

Kliknutím na ikonu souboru zvýrazněnou na obrázku výše se otevře průzkumník souborů.

  1. Kliknutím na ikonu plus lze vytvořit nový soubor, pojmenujte soubor PurchaseOrder.sol
  2. Tím se vytvoří prázdný soubor s názvem PurchaseOrder.sol, klikněte a otevřete tento soubor.
  3. Zkopírujte a vložte celou smlouvu do PurchaseOrder.sol.
  4. Klikněte na druhou ikonu, v levé nabídce těsně pod ikonou souboru by se měla zobrazit možnost kompilátoru solidity.
  5. Pod štítkem kompilátoru vyberte verzi kompilátoru. Aktuální vybraná verze je 0.5.8.
  6. Po výběru verze kompilátoru klikněte na „Compile PurchaseOrder.sol“. Tím se sestaví inteligentní smlouva.

7. Jakmile se chytrá smlouva úspěšně zkompiluje, klikněte na tlačítko „Podrobnosti kompilace“ a měly by se objevit následující podrobnosti. Po kompilaci jsou k dispozici dvě klíčové informace

    • ABI - binární rozhraní aplikace. Toto je soubor JSON, který podrobně popisuje všechny metody vystavené v inteligentní smlouvě spolu s metadaty metod. Více o tom pojednáme v následujících blogech.
    • Bytecode- Provozní kód EVM (virtuální stroj Ethereum), inteligentní kontrakt logiky se při kompilaci převede na bytecode.

8. Aby bylo možné inteligentní smlouvu otestovat, je třeba nasadit inteligentní smlouvu. Chcete-li nasadit inteligentní kontrakt, klikněte na další ikonu v levé nabídce pod ikonou kompilace. Zobrazí se následující obrazovka. Aby bylo možné inteligentní smlouvu otestovat, je třeba nasadit inteligentní smlouvu. Chcete-li nasadit inteligentní kontrakt, klikněte na další ikonu v levé nabídce pod ikonou kompilace. Zobrazí se následující obrazovka.

Možnost nasazení

Obrazovka nasazení poskytuje několik možností, pojďme se na ně podívat jeden po druhém.

  • Prostředí: Tuto možnost lze považovat za možnost podobnou výběru nákupu notebooku od Amazonu, Flipkartu, Neweggu (všichni jsou online prodejci), ze kterých si můžete vybrat, kde chcete nakupovat, na základě vašich požadavků. Podobně v případě Remixu máme možnost, kde nasadit chytrou smlouvu a otestovat chytrou smlouvu. Rozbalovací nabídka vedle štítku prostředí poskytuje tři výběry
    • JavaScript VM - místní uzel Ethereum je roztočen v paměti prohlížeče a poskytuje 5 předem financovaných testovacích účtů, které lze použít pro transakci (nasazení, vyvolání funkcí)
    • Injected Web3 Provide - Toto se spoléhá na MetaMask. Metamask je jako makléř nebo prostředník, který umožňuje webovým aplikacím komunikovat s chytrým kontraktem. Metamask poskytuje schopnost spravovat identity a také podepisovat transakce, které mají být odeslány do sítě ethereum. Tento prostředník nebo 3rdstrana vám pomůže určit blockchainovou síť, do které bude inteligentní smlouva nasazena.
    • Poskytovatel Web3 - pokud používáte místní uzel Ethereum a je k dispozici koncový bod RPC, lze tuto možnost použít. Chytrý kontrakt bude nasazen do místního uzlu Ethereum.
  • Účty: Tyto informace jsou vyplněny na základě vybraného prostředí. Například. JavaScript VM poskytuje 5 předfinancovaných testovacích účtů. V případě poskytovatele Web3 a Injected Web3 neposkytujte předem financované testovací účty.
  • Limit plynu: Definuje maximální množství plynu, které je iniciátor ochoten utratit za jakoukoli transakci. Toto je místo k ochraně proti nekonečné smyčce a vyčerpání všech finančních prostředků účtu v případě podmínky nekonečné smyčky.
  • Hodnota: Hodnota, která může být požadována k odeslání napříč při nasazování inteligentní smlouvy. Toto je volitelná hodnota.

Chcete-li nasadit smlouvu, vyberte možnost JavaScript VM, vyberte první účet z rozevíracího seznamu účtů, poznamenejte si zůstatek účtu (100 ether).

Ujistěte se, že se název inteligentního kontraktu zobrazuje jako PurchaseOrder, klikněte na nasadit. Klíčové akce, které se stanou

  1. Zůstatek na účtu se mění ze 100 ether na 99,999999 ether, odečtená částka představuje transakční náklady na nasazení inteligentní smlouvy.
  2. V rámci nasazené smlouvy se objeví nová dlaždice pro inteligentní smlouvu, která také poskytne adresu nové inteligentní smlouvy něco takového (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. V okně konzoly se zobrazí následující informace
    1. Transakční hash - jednoznačně identifikuje nasazení smlouvy
    2. Transakční náklady
    3. Adresa smlouvy

Interakce s nasazenou smlouvou

  1. V rámci nasazené smlouvy jsou k dispozici následující dvě metody interakce update_quantity a get_quantity.
  2. Obě tyto metody interakce jsou veřejné metody definované ve smlouvě „Objednávka“.
  3. Metoda aktualizace „update_quantity“ vyžaduje vstupní parametr, tedy vstupní pole.
  4. Metoda „získat množství“ get_quantity načte hodnotu product_quantity.
  5. Podívejme se, co se stane, když se vyvolá get_quantity, zobrazí se návratová hodnota 100, která byla inicializována v konstruktoru. To nezpůsobí transakci
  6. Vyvolejme update_quantity a poskytněte 30 jako vstup. To způsobí, že dojde k transakci

Stručně řečeno, každá operace, která způsobí operaci zápisu do stavu kontraktu (tj. Změní proměnné kontraktu), bude mít za následek transakci.

Jakákoli operace, která právě čte stav smlouvy, nezpůsobí transakci.

Závěr o vývoji inteligentní smlouvy

S tímto jsme právě vytvořili náš první inteligentní kontrakt, jen jsme poškrábali povrch solidnosti. Právě jsme viděli, co je potřeba k testování chytré smlouvy od nasazení chytré smlouvy po zahájení transakcí.

jaký je rozdíl mezi git a github

V dalším blogu, který je pokračováním vývojové řady inteligentních kontraktů, se budeme zabývat hlouběji základy solidnosti a hlouběji se ponoříme do nasazení inteligentních kontraktů.

S tím uzavírám toto Chytrá smlouva vývojový blog. Doufám, že se vám tento blog líbil a shledal vás poučným.

Pokud se chcete naučit Smart Contracts, budovat kariéru v doméně Blockchain a získat odborné znalosti v programování Ethereum, zaregistrujte se živě online Zde je k dispozici podpora 24 * 7, která vás provede celým obdobím učení.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů „Chytrý vývoj kontraktů“ a my se vám ozveme hnedSvatý.