Hogyan írhatod meg az első okos szerződésedet?



Ismerje meg az intelligens szerződésfejlesztés alapjait, és kezdje el megírni az első okos szerződését. Azt is tudni fogja, hogyan kell tesztelni az okos szerződést.

Ban,-ben , megtudta, mi az intelligens szerződés, az intelligens szerződés különböző nyelvei és az intelligens szerződés-fejlesztési környezet beállítása. Ebben a cikkben megtudhatja, hogyan kell elkészíteni az első intelligens szerződését. Használni fogomRemix IDE egy intelligens szerződés fejlesztéséhez és teszteléséhez.

Az alábbi témákkal foglalkozik ez az intelligens szerződés-fejlesztési oktatóanyag:





Az intelligens szerződés felépítése

A blogsorozat részeként kidolgoznak egy egyszerű vételi megbízási okos szerződést. Ennek a sorozatnak az előrehaladtával és a szilárdsági programozási nyelv új koncepcióinak bevezetésével a vásárlási megrendelés intelligens szerződése fejlődik és javul.



Az intelligens szerződés felépítése

A szilárdsággal kapcsolatos okos szerződés lényegében a következők gyűjteménye

  • adat - amely fenntartja a szerződés jelenlegi állapotát
  • funkció - amelyek logikát alkalmaznak a szerződés állapotának átmenetére

A szilárdsági okos szerződések szokásos struktúrát követnek. Bármely okos szerződés a következő nyilatkozattal kezdődik



Pragma irányelv

A „pragma” kulcsszó használható bizonyos fordítói funkciók vagy ellenőrzések engedélyezésére. Az alábbi állítás meghatározza, hogy a forrásfájl (intelligens szerződés) nem fordít le a fordítóval 0,4-nél régebbi és a fordítói verzióval 0,6,0 után. Ez a nyilatkozat biztosítja, hogy a fordító új verziójának bevezetésekor ne kerüljön be nem szándékolt viselkedés.

pragma szilárdság> = 0,4,0<=0.6.0 

A szerződés nyilatkozata

A szerződést a „szerződés” kulcsszóval jelentik be. Ez üres szerződést jelent, amelyet a „PurchaseOrder” név azonosít.

szerződés PurchaseOrder {}

A szerződés releváns adatainak tárolása

Minden szerződés vagy általános értelemben minden program megkövetelhet bizonyos adatok tárolását. Adatok hozzáadása a programhoz bizonyos szintű rugalmasságot biztosít. Fontos jellemző a programban található kódolt értékektől a felhasználó által megadott értékek felé való elmozdulás. A változók lehetővé teszik az adatok tárolását, címkézését, visszakeresését és manipulálását.

Intelligens szerződésfejlesztés: Változók bemutatása

A szilárdság szempontjából a változók kétféle típusúak

  1. Érték tipusa: Az ilyen típusú változókat érték adja át, vagyis mindig másolja őket, ha függvény argumentumként vagy hozzárendelésként használják őket. Például: egész számok, logikai címek stb.
  2. Referencia típusok: Az ilyen típusú változók összetett típusúak, és referenciaként adják át őket, ezek a változók nem férnek bele a 256 bitesbe, és gondosan kell kezelni őket, mivel a másolás költséges.

Adatok hozzáadása az intelligens szerződéshez

Vegyünk fel néhány adatváltozót a szerződésbe. Minden vásárlási rendeléshez hozzá kell rendelni bizonyos mennyiségű terméket. Adjunk hozzá egy változó product_quantity értéket, amely egész vagy szám adattípusú lesz.

program egy szám megfordítására java-ban

Az a változó, amelyet most bevezetünk, előjel nélküli egész szám, amelyet uint256 képvisel, 256 itt a 256 bites tárhelyet jelenti.

  • U - aláírás nélküli (vagyis ez a típus csak pozitív egész számokat képviselhet, nem pozitív és negatív egészeket)
  • INT - egész szám
  • 256 - 256 bit méretű
  • az uint256 hozzárendelhető minimális érték 0
  • az uint256 hozzárendelhető maximális értéke 2 ^ 256-1 [nagyon nagy szám]

A termékmennyiség csak pozitív érték, és a jelenlegi feltételezés szerint a termékmennyiség nagyon nagy értékét fogjuk kiszolgálni.

c ++ mi a névtér

A deklarált „product_quantity” változó a szerződés állapotának része, ezért fennmarad vagy tárolódik a szerződésben. Jelenleg ez a változó alapértelmezett értéke 0.

szerződés PurchaseOrder {uint256 product_quantity}

A konstruktor meghatározása

A kivitelezőt a szerződés telepítésekor hívják meg. A kivitelező néhány értékkel inicializálja a szerződést. Az aktuális forgatókönyv szerint a termék mennyisége 100-ra van állítva, amikor a szerződést telepítik. Paraméterezett konstruktort is létrehozhatunk egy változó átadásával és a termék_mennyiség inicializálásával az átadott érték felhasználásával.

A legfontosabb szempont, amelyet itt meg kell jegyezni, a konstruktorhoz társított „nyilvános” hozzáférés-módosító. A nyilvános kulcsszó megadja, hogy bárki elérheti ezt a funkciót, ez nem korlátozott funkció.

konstruktor () public {product_quantity = 100}

Funkciók hozzáadása

Most adjunk hozzá funkciót, hogy interaktívvá tegyük programunkat. A funkciók olyan vezérelt képességek, amelyek hozzáadhatók egy programhoz. Bármely függvényt kulcsszófüggvény előzi meg. Összességében így néz ki a függvénydeklaráció' funkció ”.

Get függvény

Az egyik leggyakoribb követelmény a program bármelyikével szemben a tárolt érték beolvasása. A következő szerződésben le kell olvasnunk a „product_quantity” értéket. Ennek a képességnek a biztosításához egy olvasási vagy egy get függvényt adunk hozzá. Ebben a funkcióban nem végezünk semmilyen manipulációt a tárolt értékkel, csak a tárolt értéket kapjuk le.

Most bontsuk le a get függvényünket (get_quantity)

Nem. Kulcsszó Érték
egy get_quantity (){nincsenek paraméterek átadva}
2 nyilvános{bárki elérheti a funkciót}
3 Kilátás{azt jelzi, hogy a függvény csak a szerződés állapotát olvassa, nem változtatja meg a szerződés állapotát, ezért nézet}
4 uint256 típusú változót ad vissza {meghatározza, hogy mit ad vissza a függvény}
függvény get_quantity () nyilvános nézet visszatér (uint256) {return product_quantity}

Szetter funkciók

Az adatok elolvasása szükséges, és ezt az utolsó szakaszban teljesítettük, de a legtöbb forgatókönyv megköveteli az adatok írásának / frissítésének képességét is. Ezt a speciális képességet egy beállító funkció hozzáadásával lehet biztosítani. Ez a függvény egy értéket vesz fel a felhasználótól egy bemeneti paraméter formájában. A függvény által a felhasználó által megadott érték felhasználásával a „product_quantity” változó értéke a / frissítésre kerül.

Most bontsuk le a beállított függvényünket (update_quantity)

Funkció hozzáadása a termékmennyiség értékének frissítéséhez

Nem. Kulcsszó Érték
egy update_quantity (uint256 érték){az uint256 típusú paraméter értéke átadva}
2 nyilvános{bárki elérheti a funkciót}
3 Nem szükséges, mivel az állapot frissül a funkciók által
4 uint256 típusú változót ad vissza (meghatározza, hogy mit ad vissza a függvény)
függvény update_quantity (uint256 érték) public {product_quantity = product_quantity + value}

Mindezeket összekapcsolva így kell kinéznie a teljes szerződésnek.

pragma szilárdság> = 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 } } 

Az intelligens szerződés bevezetése

Ideje tesztelni az okos szerződést. Ennek az okos szerződésnek a tesztelésére felhasználjuk Remix Online IDE .

A Remix egy online játszótér ethereum okos szerződés . A Remix teljesen böngésző alapú. A Remix egy online IDE-t (integrált fejlesztői környezet) biztosít Önnek, ahol megírhatja intelligens szerződéseit. A Remix egy online szilárdság-fordítót biztosít. A Remix IDE-ben található intelligens szerződés összeállítható egy adott fordítói verzió zökkenőmentesen.

A Remix lehetővé teszi az intelligens szerződés gyors tesztelését is.

A Remix egy teljes eszközkészletet biztosít az intelligens szerződés fejlesztésének és az intelligens szerződés tesztelésének megkezdéséhez, anélkül, hogy telepítést végezne a helyi gépen. Ez óriási hasznot jelent a szilárdságtól kezdve, mivel a fejlesztőknek csak egy okos szerződés megkötésére kell összpontosítaniuk, inkább az infrastruktúra miatt kell aggódniuk.

A Remix IDE használatával csak egy böngészőre és egy internetkapcsolatra van szükséged az intelligens szerződés-fejlesztés megkezdéséhez. Az okos szerződés ötletének gyors fejlesztése, tesztelése és validálása.

A Remix nemrég frissítette a felhasználói felületüket.

Remix-UI-Smart-Contracts-Edureka

Kattintson a fájl ikonjára, amint azt a fenti kép kiemeli, és megnyílik a fájlkezelő.

  1. A plusz ikonra kattintva új fájl hozható létre, nevezze el a PurchaseOrder.sol fájlt
  2. Ezzel létrehoz egy üres fájlt PurchaseOrder.sol néven, kattintson és nyissa meg ezt a fájlt.
  3. Másoljuk be a teljes szerződés beillesztését a PurchaseOrder.sol fájlba.
  4. Kattintson a második ikonra, a bal oldali menüben, közvetlenül a fájl ikon alatt, megjelenik a solidity compiler lehetőség.
  5. A Compiler címke alatt válassza ki a fordító verzióját. A jelenlegi kiválasztott verzió 0.5.8.
  6. A fordító verziójának közzétételéhez kattintson a „Compile PurchaseOrder.sol” elemre. Ez állítja össze az intelligens szerződést.

7. Miután az intelligens szerződés sikeresen összeállt, kattintson a „Összeállítás részletei” gombra, és a következő részletek jelenhetnek meg. A poszt összeállítása két kulcsfontosságú információt tesz elérhetővé

c ++ típusú konverzió
    • ABI - Alkalmazás bináris felület. Ez egy json fájl, amely részletezi az intelligens szerződésben kitett összes módszert, a meta adatokkal együtt. Erről bővebben a későbbi blogokban lesz szó.
    • Bytecode- EVM (Ethereum virtuális gép) működési kód, az intelligens szerződéses logika konvertáláskor konvertálódik byte-kóddá.

8. Az intelligens szerződés teszteléséhez telepíteni kell az intelligens szerződést. Az intelligens szerződés telepítéséhez kattintson a bal oldali menü következő ikonjára a fordítás ikon alatt. A következő képernyő jelenik meg. Az intelligens szerződés teszteléséhez telepíteni kell az intelligens szerződést. Az intelligens szerződés telepítéséhez kattintson a bal oldali menü következő ikonjára a fordítás ikon alatt. A következő képernyő jelenik meg.

Telepítési lehetőség

A telepítési képernyő néhány lehetőséget kínál, nézzük meg őket egyenként.

  • Környezet: Ez elképzelhető egy olyan lehetőségről, amely hasonló ahhoz, hogy laptopot vásároljon az Amazon, a Flipkart vagy a Newegg közül (ezek mind online kiskereskedők), ahol az igényei szerint választ, ahol vásárolni szeretne. Hasonlóképpen, a Remix esetében lehetőségünk van arra, hogy az intelligens szerződést telepítsük és teszteljük az intelligens szerződést. A környezeti címke melletti legördülő menü három választási lehetőséget kínál
    • JavaScript virtuális gép - egy helyi Ethereum egyetlen csomópont felpörög a böngésző memóriájában, és 5 előre finanszírozott tesztfiókot biztosít, amelyek felhasználhatók a tranzakcióhoz (telepítés, függvények meghívása)
    • Injected Web3 Provide - Ez a MetaMaskra támaszkodik. A Metamask olyan, mint egy bróker vagy közvetítő, amely lehetővé teszi, hogy a webalkalmazások kölcsönhatásba lépjenek az intelligens szerződéssel. A Metamask lehetőséget nyújt az identitások kezelésére, és aláírja az ethereum hálózatra küldendő tranzakciókat is. Ez a közvetítő vagyrdfél segítséget nyújt Önnek annak a blokklánc-hálózatnak a meghatározásában, amelyre az intelligens szerződést telepítik.
    • Web3-szolgáltató - ha helyi Ethereum-csomópontot futtat, és az RPC-végpont elérhető, akkor ez a lehetőség használható. Intelligens szerződés kerül telepítésre a helyi Ethereum csomópontra.
  • Fiókok: Ezek az információk a kiválasztott környezet alapján kerülnek feltöltésre. Például. A JavaScript virtuális gép 5 előre finanszírozott tesztfiókot biztosít. Web3-szolgáltató és az Injected Web3 esetében nem kell előre finanszírozott tesztfiókat megadni.
  • Gázkorlát: Ez határozza meg azt a maximális gázmennyiséget, amelyet a kezdeményező bármilyen tranzakcióra hajlandó elkölteni. Itt kell megvédeni a végtelen hurkot és a számla összes pénzének kimerülését végtelen hurok esetén.
  • Érték: Az az érték, amelyre szükség lehet az intelligens szerződés üzembe helyezése során. Ez egy opcionális érték.

A szerződés telepítéséhez válassza a JavaScript virtuális gép opciót, válassza ki az első fiókot a fiókok legördülő menüből, jegyezze fel a számlaegyenleget (100 éter).

Győződjön meg arról, hogy az intelligens szerződés neve PurchaseOrder, kattintson a telepítés gombra. Kulcsfontosságú cselekvések

  1. A számlaegyenleg 100 éterről 99,999999 éterre változik, a levont összeg az intelligens szerződés bevezetésének tranzakciós költsége.
  2. A telepített szerződés alapján megjelenik egy új csempe az intelligens szerződéshez, amely ilyesmi módon meg fogja adni az új intelligens szerződés címét is (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. A konzol ablakban a következő információk jelennek meg
    1. Tranzakciós kivonat - egyedileg azonosítja a szerződés telepítését
    2. Tranzakciós költség
    3. Szerződés címe

Interakció a telepített szerződéssel

  1. A telepített szerződés értelmében a következő két interakciós módszer áll rendelkezésre: update_quantity és get_quantity.
  2. Mindkét interakciós módszer a „Megrendelés” szerződésben meghatározott nyilvános módszer.
  3. Frissítési mennyiség Az „update_quantity” metódushoz bemeneti paraméterre van szükség, ezért a beviteli mező.
  4. Get mennyiség A „get_quantity” módszer lekéri a product_quantity értékét.
  5. Ellenőrizzük, mi történik a get_quantity meghívásakor, és megjelenik a 100 visszatérési érték, amelyet a konstruktorban inicializáltunk. Ez nem okoz tranzakciót
  6. Hívjuk meg az update_quantity értéket, és adjunk meg 30-at bemenetként. Ez tranzakciót okoz

Dióhéjban, minden olyan művelet, amely írási műveletet eredményez a szerződés állapotához (vagyis megváltoztatja a szerződés változóit) tranzakciót eredményez.

Minden olyan művelet, amely éppen a szerződés állapotát olvassa le, nem okoz tranzakciót.

Intelligens szerződésfejlesztési következtetés

Ezzel nemrég hoztuk létre az első okos szerződésünket, amely csak a szilárdság felszínét vakarja. Éppen most láttuk, mi szükséges az intelligens szerződés teszteléséhez, az intelligens szerződés bevezetésétől kezdve a tranzakciók kezdeményezéséig.

A következő blogban, amely az intelligens szerződés-fejlesztési sorozat folytatása, mélyebben elmélyülünk a szilárdsági alapokban, mélyebben elmélyülve az intelligens szerződések telepítésében.

Ezzel azt következtetem Intelligens szerződés fejlesztési blog. Remélem tetszett olvasni ezt a blogot, és informatívnak találta.

énHa meg akar tanulni intelligens szerződéseket, karriert építeni a Blockchain területén, és szaktudást szerezni az Ethereum programozásában, beiratkozhat az élő online itt 24 * 7 támogatás jár, amely végigvezeti Önt a tanulási időszak alatt.

Van egy kérdésünk? Kérjük, említse meg az „Intelligens szerződés-fejlesztés” megjegyzés rovatban, és mi kapcsolatba lépünk Önnelutca.