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
- É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.
- 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.
Kattintson a fájl ikonjára, amint azt a fenti kép kiemeli, és megnyílik a fájlkezelő.
- A plusz ikonra kattintva új fájl hozható létre, nevezze el a PurchaseOrder.sol fájlt
- Ezzel létrehoz egy üres fájlt PurchaseOrder.sol néven, kattintson és nyissa meg ezt a fájlt.
- Másoljuk be a teljes szerződés beillesztését a PurchaseOrder.sol fájlba.
- 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.
- A Compiler címke alatt válassza ki a fordító verzióját. A jelenlegi kiválasztott verzió 0.5.8.
- 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
- 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.
- 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)
- A konzol ablakban a következő információk jelennek meg
- Tranzakciós kivonat - egyedileg azonosítja a szerződés telepítését
- Tranzakciós költség
- Szerződés címe
Interakció a telepített szerződéssel
- 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.
- Mindkét interakciós módszer a „Megrendelés” szerződésben meghatározott nyilvános módszer.
- Frissítési mennyiség Az „update_quantity” metódushoz bemeneti paraméterre van szükség, ezért a beviteli mező.
- Get mennyiség A „get_quantity” módszer lekéri a product_quantity értékét.
- 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
- 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.