Ako napísať svoju prvú inteligentnú zmluvu?



Osvojte si základy vývoja inteligentných zmlúv a začnite písať svoju prvú inteligentnú zmluvu. Budete tiež vedieť, ako testovať inteligentnú zmluvu.

V , dozvedeli ste sa, čo sú inteligentné zmluvy, rôzne jazyky inteligentných zmlúv a ako nastaviť vývojové prostredie inteligentných zmlúv. V tomto článku sa dozviete, ako vytvoriť svoj prvý inteligentný kontrakt. Budem používaťRemix IDE pre vývoj a testovanie inteligentnej zmluvy.

V tomto výučbe vývoja inteligentných zmlúv sa venujeme týmto témam:





Budovanie vašej inteligentnej zmluvy

Súčasťou tejto série blogov bude vyvinutá jednoduchá inteligentná zmluva o objednávke. Postupom tejto série a zavádzaním nových koncepcií programovacieho jazyka solídnosti sa bude inteligentná zmluva o nákupe vyvíjať a zlepšovať.



Štruktúra inteligentnej zmluvy

Solidity smart contract je v podstate súborom nasledujúcich informácií

  • údaje - ktorá zachováva súčasný stav zmluvy
  • funkcia - ktoré uplatňujú logiku pri prechode zo stavu zmluvy

Solidné inteligentné zmluvy majú štandardnú štruktúru. Akákoľvek inteligentná zmluva sa začína nasledujúcim vyhlásením



Smernica Pragma

Kľúčové slovo „pragma“ možno použiť na povolenie určitých funkcií alebo kontrol kompilátora. Nasledujúce vyhlásenie definuje, že zdrojový súbor (inteligentná zmluva) sa nebude kompilovať s kompilátorom starším ako 0.4.0 a verziou kompilátora po 0.6.0. Toto vyhlásenie zaručuje, že pri zavedení novej verzie kompilátora nebude zavedené žiadne nechcené správanie.

pragmatická pevnosť> = 0,4,0<=0.6.0 

Vyhlásenie zmluvy

Zmluva sa deklaruje pomocou kľúčového slova „zmluva“. Týmto sa vyhlasuje prázdna zmluva, ktorá sa označuje názvom „PurchaseOrder“.

zmluva PurchaseOrder {}

Uloženie relevantných údajov k zmluve

Každá zmluva alebo všeobecne povedané každý program môže vyžadovať uloženie niektorých údajov. Pridanie údajov do programu mu poskytuje úroveň flexibility. Dôležitým prvkom je prechod od pevne zakódovaných hodnôt v programe k hodnotám poskytnutým používateľom. Premenné umožňujú ukladať údaje, označovať ich, načítať a manipulovať s nimi.

Inteligentný vývoj zmluvy: Predstavujeme premenné

Celkovo sú premenné dva typy

  1. Typ hodnoty: Tieto typy premenných sa odovzdávajú podľa hodnoty, t. J. Vždy sa kopírujú, keď sa používajú ako argumenty funkcií alebo v priradeniach. Napríklad: celé čísla, boolovská adresa atď.
  2. Referenčné typy: Tieto typy premenných sú zložitých typov a sú odovzdávané odkazom. Tieto premenné sa nezmestia do 256 bitov a je potrebné ich starostlivo spravovať, pretože ich kopírovanie je drahé.

Pridávanie údajov do inteligentnej zmluvy

Poďme do zmluvy pridať nejakú premennú údajov. S každou objednávkou musí byť spojené určité množstvo produktu. Pridajme premennú product_quantity, ktorá bude údajového typu integer alebo number.

ako nainštalovať php 7 na Windows 10

Premenná, ktorú teraz zavádzame, je celé číslo bez znamienka a predstavuje ju uint256, 256 tu znamená 256 bitové úložisko.

  • U - nepodpísaný (čo znamená, že tento typ môže predstavovať iba kladné celé čísla, nie kladné a záporné celé čísla)
  • INT - celé číslo
  • 256 - 256 bitov
  • minimálna hodnota, ktorú je možné priradiť, je 0
  • maximálna hodnota, ktorú možno priradiť uint256, je 2 ^ 256-1 [veľmi veľké číslo]

Množstvo produktu je iba kladná hodnota a súčasný predpoklad je, že uspokojíme veľmi veľkú hodnotu množstva produktu.

prepojený zoznam v c návode

Deklarovaná premenná „product_quantity“ je súčasťou stavu zmluvy, a preto je pretrvávajúca alebo uložená v priestore zmluvy. V súčasnosti bude mať táto premenná predvolenú hodnotu 0.

zmluva PurchaseOrder {uint256 product_quantity}

Definovanie konštruktéra

Konštruktér sa volá, keď je zmluva nasadená. Konštruktor inicializuje zmluvu s niektorými hodnotami. V súčasnom scenári je množstvo produktu nastavené na 100, keď je nasadená zmluva. Parametrizovaný konštruktor je možné vytvoriť aj odovzdaním premennej a inicializáciou product_quantity pomocou hodnoty passed in.

Kľúčovým bodom, ktorý je potrebné tu poznamenať, je modifikátor prístupu „public“ spojený s konštruktorom. Verejné kľúčové slovo určuje, že k tejto funkcii má prístup ktokoľvek, nejde o obmedzenú funkciu.

constructor () public {product_quantity = 100}

Pridávanie funkcií

Teraz pridajme funkciu, aby bol náš program interaktívny. Funkcie sú riadené schopnosti, ktoré je možné pridať do programu. Pred každou funkciou predchádza funkcia kľúčových slov. Celkovo takto vyzerá deklarácia funkcie funkcia “.

Získajte funkciu

Jednou z najbežnejších požiadaviek pre akýkoľvek program je načítanie uloženej hodnoty. V nasledujúcej zmluve si budeme musieť prečítať hodnotu „product_quantity“. Na zabezpečenie tejto schopnosti sa pridáva funkcia čítania alebo funkcia get. V tejto funkcii nerobíme žiadnu manipuláciu s uloženou hodnotou, iba načítame uloženú hodnotu.

Poďme si teraz rozobrať našu funkciu get (get_quantity)

Č. Kľúčové slovo Hodnota
jeden get_quantity (){nie sú odovzdané žiadne parametre}
2 verejné{k funkcii má prístup ktokoľvek}
3 vyhliadka{znamená, že funkcia iba číta stav zmluvy, nezmení stav zmluvy, teda zobrazenie}
4 vráti premennú typu uint256 {definované čo sa vracia funkciou}
funkcia get_quantity () verejné zobrazenie sa vracia (uint256) {return product_quantity}

Funkcie nastavovača

Čítanie údajov je potrebné a dosiahli sme to v poslednej časti, ale väčšina scenára tiež vyžaduje schopnosť zapisovať / aktualizovať tiež údaje. Táto špecifická schopnosť je zabezpečená pridaním funkcie nastavovača. Táto funkcia preberá od používateľa hodnotu vo forme vstupného parametra. Pomocou hodnoty poskytnutej funkcii používateľom sa zapíše / aktualizuje hodnota premennej „product_quantity“.

Poďme si teraz rozobrať našu nastavenú funkciu (update_quantity)

Pridanie funkcie na aktualizáciu hodnoty množstva produktu

Č. Kľúčové slovo Hodnota
jeden update_quantity (hodnota uint256){je odovzdaná hodnota parametra typu uint256}
2 verejné{k funkcii má prístup ktokoľvek}
3 Nie je to potrebné, pretože funkcie sa aktualizujú
4 vráti premennú typu uint256 (definované, čo vráti funkcia)
funkcia update_quantity (hodnota uint256) public {product_quantity = product_quantity + value}

Keď to všetko spojíme, takto by mala vyzerať celková zmluva.

pragmatická pevnosť> = 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 } } 

Nasadenie inteligentnej zmluvy

Je čas otestovať inteligentnú zmluvu. Na otestovanie tejto inteligentnej zmluvy použijeme Remix Online IDE .

Remix je online ihrisko pre smart zmluva ethereum . Remix je úplne založený na prehliadači. Remix vám poskytuje online IDE (integrované vývojové prostredie), kde môžete písať svoje inteligentné zmluvy. Remix vám poskytuje schopnosť online kompilátora kompilácie. Inteligentný kontrakt v Remix IDE je možné ľahko zostaviť pomocou konkrétnej verzie kompilátora.

Remix tiež poskytuje možnosť rýchleho otestovania inteligentnej zmluvy.

Remix poskytuje kompletnú sadu nástrojov na začatie vývoja inteligentnej zmluvy a testovanie jednotky inteligentnej zmluvy bez nutnosti akejkoľvek inštalácie na miestnom počítači. To je na úvod solídne užitočné, pretože vývojári sa musia sústrediť na napísanie inteligentnej zmluvy, skôr sa musia starať o infraštruktúru.

S Remix IDE potrebujete iba prehliadač a pripojenie na internet, aby ste mohli začať s vývojom inteligentných zmlúv. Rýchly vývoj, testovanie a overenie nápadu na inteligentnú zmluvu.

Remix nedávno inovoval svoje používateľské rozhranie.

Remix-UI-Smart-Contracts-Edureka

Kliknite na ikonu súboru zvýrazneného na obrázku vyššie, otvorí sa prieskumník súborov.

  1. Kliknutím na ikonu plus je možné vytvoriť nový súbor, ktorý pomenujete súbor PurchaseOrder.sol
  2. Týmto sa vytvorí prázdny súbor s názvom PurchaseOrder.sol, kliknite na tento súbor a otvorte ho.
  3. Skopírujte a vložte celú zmluvu do súboru PurchaseOrder.sol.
  4. Kliknite na druhú ikonu, v ľavej ponuke tesne pod ikonou súboru by sa mala zobraziť možnosť kompilátora solídnosti.
  5. Pod štítkom kompilátora vyberte verziu kompilátora. Aktuálna vybraná verzia je 0.5.8.
  6. Po výbere verzie kompilátora kliknite na „Compile PurchaseOrder.sol“. Takto sa zostaví inteligentná zmluva.

7. Po úspešnom zostavení inteligentnej zmluvy kliknite na tlačidlo „Podrobnosti kompilácie“ a mali by sa zobraziť nasledujúce podrobnosti. Po kompilácii sú k dispozícii dve kľúčové informácie

    • ABI - binárne rozhranie aplikácie. Toto je súbor JSON, ktorý podrobne popisuje všetky metódy vystavené v inteligentnej zmluve spolu s metaúdajmi metód. Viac sa o tom bude diskutovať v nasledujúcich blogoch.
    • Bytecode- Prevádzkový kód EVM (virtuálny stroj Ethereum), logika inteligentnej zmluvy sa pri kompilácii prevedie na bytecode.

8. Na otestovanie inteligentnej zmluvy je potrebné nasadiť inteligentnú zmluvu. Ak chcete nasadiť inteligentnú zmluvu, kliknite na ďalšiu ikonu v ľavom menu pod ikonou kompilácie. Zobrazí sa nasledujúca obrazovka. Na otestovanie inteligentnej zmluvy je potrebné nasadiť inteligentnú zmluvu. Ak chcete nasadiť inteligentnú zmluvu, kliknite na ďalšiu ikonu v ľavom menu pod ikonou kompilácie. Zobrazí sa nasledujúca obrazovka.

Možnosť nasadenia

Obrazovka nasadenia poskytuje niekoľko možností, pozrime sa na ne jeden po druhom.

  • Prostredie: Dá sa uvažovať o možnosti podobnej možnosti nákupu notebooku od spoločností Amazon, Flipkart a Newegg (všetci sú online maloobchod), na základe ktorých si vyberiete, kde chcete nakúpiť. Podobne v prípade Remixu máme možnosť, kde nasadiť inteligentnú zmluvu a vyskúšať inteligentnú zmluvu. Rozbaľovacia ponuka vedľa štítku prostredia poskytuje tri možnosti
    • JavaScript VM - lokálny jeden uzol Etherea je roztočený v pamäti prehliadača a poskytuje 5 predfinancovaných testovacích účtov, ktoré možno použiť na transakciu (nasadenie, vyvolanie funkcií)
    • Injected Web3 Provide - Toto sa spolieha na MetaMask. Metamask je ako sprostredkovateľ alebo sprostredkovateľ, ktorý umožňuje webovým aplikáciám komunikovať s inteligentnou zmluvou. Metamask poskytuje schopnosť spravovať identity a tiež podpisovať transakcie, ktoré sa majú odoslať do siete ethereum. Tento sprostredkovateľ alebo 3rdstrana vám pomôže určiť sieť blockchain, do ktorej bude inteligentná zmluva nasadená.
    • Poskytovateľ Web3 - ak máte spustený lokálny uzol Ethereum a je k dispozícii koncový bod RPC, je možné túto možnosť použiť. Inteligentná zmluva bude nasadená do miestneho uzla Etherea.
  • Účty: Tieto informácie sa vypĺňajú na základe vybratého prostredia. Napríklad. JavaScript VM poskytuje 5 predfinancovaných testovacích účtov. V prípade poskytovateľa Web3 a Injected Web3 neposkytujú predfinancované testovacie účty.
  • Limit pre plyn: Definuje maximálne množstvo plynu, ktoré je iniciátor ochotný minúť za každú transakciu. Toto je miesto na ochranu proti nekonečnému cyklu a vyčerpaniu všetkých finančných prostriedkov na účte v prípade stavu nekonečného cyklu.
  • Hodnota: Hodnota, ktorá sa môže vyžadovať na odoslanie pri nasadzovaní inteligentnej zmluvy. Toto je voliteľná hodnota.

Ak chcete nasadiť zmluvu, vyberte možnosť JavaScript VM, vyberte prvý účet z rozbaľovacej ponuky účtov, poznačte si zostatok na účte (100 ether).

Zaistite, aby sa názov inteligentnej zmluvy zobrazoval ako PurchaseOrder, kliknite na nasadiť. Kľúčové akcie, ktoré sa stanú

  1. Zostatok na účte sa mení zo 100 éterov na 99,999999 éterov, odpočítaná suma predstavuje transakčné náklady na nasadenie inteligentnej zmluvy.
  2. V rámci nasadenej zmluvy sa objaví nová dlaždica pre inteligentnú zmluvu, ktorá tiež poskytne adresu novej inteligentnej zmluvy, napríklad „(0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. V okne konzoly sa zobrazia nasledujúce informácie
    1. Transakčný hash - jedinečne identifikuje nasadenie zmluvy
    2. Transakčné náklady
    3. Adresa zmluvy

Interakcia s nasadenou zmluvou

  1. V rámci nasadenej zmluvy sú k dispozícii nasledujúce dve metódy interakcie update_quantity a get_quantity.
  2. Obe tieto metódy interakcie sú verejné metódy definované v zmluve „Objednávka“.
  3. Metóda „update_quantity“ množstva aktualizácie vyžaduje vstupný parameter, a teda vstupné pole.
  4. Metóda „get_quantity“ získania množstva získa hodnotu produktu_množstvo.
  5. Poďme skontrolovať, čo sa stane, keď sa vyvolá get_quantity, zobrazí sa návratová hodnota 100, ktorá bola inicializovaná v konštruktore. Toto nespôsobuje uskutočnenie transakcie
  6. Vyvolajme update_quantity a zadajme 30 ako vstup. To spôsobí, že dôjde k transakcii

Stručne povedané, každá operácia, ktorá spôsobí operáciu zápisu do stavu kontraktu (t.j. zmení premenné kontraktu), bude mať za následok transakciu.

Akákoľvek operácia, ktorá iba načíta stav zmluvy, nespôsobí transakciu.

Záver o vývoji inteligentnej zmluvy

Týmto sme práve vytvorili náš prvý inteligentný kontrakt, ktorý len poškriabal povrch solídnosti. Práve sme videli, čo je potrebné na otestovanie inteligentnej zmluvy od nasadenia inteligentnej zmluvy po začatie transakcie.

jarný MVC návod pre začiatočníkov

V ďalšom blogu, ktorý je pokračovaním vývojovej série inteligentných zmlúv, sa budeme venovať hlbšie základom solídnosti a hlbšie sa ponoríme do nasadenia inteligentných zmlúv.

S tým uzatváram toto Inteligentná zmluva vývojový blog. Dúfam, že ste si tento blog radi prečítali a považovali ste ho za poučný.

JaAk sa chcete naučiť Smart Contracts, vybudovať si kariéru v doméne Blockchain a získať odborné znalosti v programovaní Ethereum, zaregistrujte sa naživo online tu je dodávaná s podporou 24 * 7, ktorá vás prevedie celým vzdelávacím obdobím.

Máte na nás otázku? Uveďte to v sekcii komentárov v časti „Vývoj inteligentných zmlúv“ a my sa vám ozveme hneďsv.