Kako napisati svojo prvo pametno pogodbo?



Spoznajte osnove razvoja pametnih pogodb in začnite pisati svojo prvo pametno pogodbo. Vedeli boste tudi, kako preizkusiti pametno pogodbo.

V , spoznali ste, kaj so pametne pogodbe, različni jeziki pametnih pogodb in kako nastaviti okolje za razvoj pametnih pogodb. V tem članku boste izvedeli, kako sestaviti svojo prvo pametno pogodbo. Uporabil bomRemix IDE za razvoj in testiranje pametne pogodbe.

V tej vadnici za razvoj pametnih pogodb so zajete spodnje teme:





Izdelava vaše pametne pogodbe

Kot del te serije blogov bo razvita preprosta pametna pogodba o naročilu. Z napredovanjem te serije in z uvajanjem novih konceptov programskega jezika solidity se bo pametna pogodba o naročilu razvijala in izboljševala.



Struktura pametne pogodbe

Pametna pogodba Solidity je v bistvu zbirka naslednjih

  • podatkov - ki ohranja trenutno stanje pogodbe
  • funkcijo - ki uporabljajo logiko za prehod na stanje pogodbe

Solidity pametne pogodbe sledijo standardni strukturi. Vsaka pametna pogodba se začne z naslednjo izjavo



Direktiva o pragmi

Ključna beseda 'pragma' se lahko uporablja za omogočanje nekaterih funkcij ali preverjanj prevajalnika. Spodnja izjava določa, da se izvorna datoteka (pametna pogodba) ne bo prevajala s prevajalnikom prej kot 0.4.0 in različico prevajalnika po 0.6.0. Ta izjava zagotavlja, da ob uvedbi nove različice prevajalnika ni nenamernega vedenja.

trdnost pragme> = 0,4,0<=0.6.0 

Izjava o pogodbi

Pogodba se prijavi s ključno besedo 'pogodba'. S tem je razglašena prazna pogodba, ki je označena z imenom „PurchaseOrder“.

naročilo PurchaseOrder {}

Shranjevanje ustreznih podatkov v pogodbo

Vsaka pogodba ali v splošnem smislu lahko vsak program zahteva shranjevanje nekaterih podatkov. Dodajanje podatkov v program mu zagotavlja raven prilagodljivosti. Pomembna odmik od trdo kodiranih vrednosti v programu do uporabniško določenih vrednosti. Spremenljivke vam omogočajo shranjevanje podatkov, označevanje podatkov, pridobivanje podatkov in upravljanje s podatki.

Razvoj pametnih pogodb: predstavitev spremenljivk

Kot trdnost so spremenljivke dve vrsti

  1. Vrsta vrednosti: Te spremenljivke se posredujejo po vrednosti, tj. Vedno se kopirajo, kadar se uporabljajo kot argumenti funkcij ali v nalogah. Na primer: cela števila, logični naslov itd.
  2. Vrste referenc: Te vrste spremenljivk so kompleksnih vrst in se posredujejo po sklicu. Te spremenljivke ne ustrezajo 256 bitom in jih je treba skrbno upravljati, saj je njihovo kopiranje drago.

Dodajanje podatkov v pametno pogodbo

V pogodbo dodajte nekaj podatkovnih spremenljivk. Za vsako naročilo mora biti povezana določena količina izdelka. Dodajmo spremenljivko product_quantity, ki bo podatkovnega tipa celo število ali število.

Vadnice za Microsoft SQL za začetnike

Spremenljivka, ki jo zdaj uvajamo, je celo število brez podpisa in je predstavljena z uint256, 256 tukaj pomeni 256 bitni pomnilnik.

  • U - nepodpisano (kar pomeni, da ta vrsta lahko predstavlja samo pozitivna cela števila, ne pa pozitivnih in negativnih celih števil)
  • INT - celo število
  • 256 - 256 bitov
  • najmanjša vrednost uint256, ki jo je mogoče dodeliti, je 0
  • največja vrednost uint256 je lahko dodeljena 2 ^ 256-1 [zelo veliko število]

Količina izdelka je le pozitivna vrednost in trenutno predpostavljamo, da bomo poskrbeli za zelo veliko vrednost za količino izdelka.

Deklarirana spremenljivka 'product_quantity' je del stanja pogodbe in se zato ohrani ali shrani v pogodbeni prostor. Trenutno bo ta spremenljivka privzeto vrednost 0.

naročilo PurchaseOrder {uint256 product_quantity}

Določitev konstruktorja

Konstruktor se pokliče, ko je pogodba razporejena. Konstruktor inicializira pogodbo z nekaterimi vrednostmi. V trenutnem scenariju je količina izdelka ob uvedbi pogodbe nastavljena na 100. Parametrizirani konstruktor lahko ustvarite tudi tako, da posredujete spremenljivko in inicializirate product_quantity z uporabo posredovane vrednosti.

Ključna točka, ki jo je treba omeniti tukaj, je modifikator dostopa “public”, povezan s konstruktorjem. Javna ključna beseda določa, da lahko kdo dostopa do te funkcije, to ni omejena funkcija.

konstruktor () public {product_quantity = 100}

Dodajanje funkcij

Zdaj dodajte funkcijo, da bo naš program interaktiven. Funkcije so nadzorovane zmogljivosti, ki jih je mogoče dodati v program. Pred katero koli funkcijo je funkcija ključne besede. Na splošno tako izgleda izjava funkcije' funkcijo '.

Pridobite funkcijo

Ena najpogostejših zahtev za kateri koli program je branje shranjene vrednosti. V naslednji pogodbi bomo morali prebrati vrednost 'product_quantity'. Da bi zagotovili to zmožnost, se doda funkcija branja ali funkcija pridobivanja. V tej funkciji ne izvajamo nobenih manipulacij s shranjeno vrednostjo, temveč samo pridobimo shranjeno vrednost.

Zdaj razčlenimo svojo funkcijo get (get_quantity)

Ne Ključna beseda Vrednost
eno get_quantity (){parametri niso posredovani}
2. javnosti{kdor koli lahko dostopa do funkcije}
3. pogled{pomeni funkcijo samo bere stanje pogodbe, ne spreminja stanja pogodbe, torej pogled}
4. vrne spremenljivko tipa uint256 {definira, kaj vrne funkcija}
funkcija get_quantity () javni pogled vrne (uint256) {return product_quantity}

Setter funkcije

Branje podatkov je nujno in to smo dosegli v zadnjem poglavju, vendar večina scenarija zahteva tudi sposobnost pisanja / posodabljanja podatkov. Ta posebna sposobnost je zagotovljena z dodajanjem funkcije nastavitve. Ta funkcija od uporabnika prevzame vrednost v obliki vhodnega parametra. Z uporabo vrednosti, ki jo funkciji posreduje uporabnik, se vrednost spremenljivke 'product_quantity' zapiše / posodobi.

Zdaj razčlenimo našo nastavljeno funkcijo (update_quantity)

kaj je hashset java

Dodajanje funkcije za posodobitev vrednosti količine izdelka

Ne Ključna beseda Vrednost
eno update_quantity (vrednost uint256){podana je vrednost parametra tipa uint256}
2. javnosti{kdor koli lahko dostopa do funkcije}
3. Ni potrebno, ker se države posodabljajo s funkcijami
4. vrne spremenljivko tipa uint256 (definira, kaj vrne funkcija)
funkcija update_quantity (vrednost uint256) public {product_quantity = product_quantity + value}

Če vse to povežemo, tako naj bi izgledala celotna pogodba.

trdnost pragme> = 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 } } 

Uvajanje pametne pogodbe

Čas je za preizkus pametne pogodbe. Za preizkus te pametne pogodbe bomo uporabili Remix Online IDE .

Remix je spletno igrišče za pametna pogodba ethereum . Remix v celoti temelji na brskalniku. Remix vam ponuja spletno IDE (integrirano razvojno okolje), kjer lahko pišete svoje pametne pogodbe. Remix vam ponuja spletno zmogljivost prevajalnika. Pametno pogodbo v Remix IDE lahko brez težav sestavite z določeno različico prevajalnika.

Remix ponuja tudi možnost hitrega preizkusa pametne pogodbe.

Remix ponuja popoln nabor orodij za začetek razvoja pametne pogodbe in preizkušanje enote pametne pogodbe, ne da bi bilo treba namestiti na vaš lokalni računalnik. To je izjemno koristno za začetek s trdnostjo, saj se morajo razvijalci osredotočiti le na pisanje pametne pogodbe, ne pa na skrb za infrastrukturo.

Z Remix IDE potrebujete le brskalnik in internetno povezavo za začetek pametnega razvoja pogodb. Hiter razvoj, testiranje in potrditev ideje za pametno pogodbo.

Remix je pred kratkim nadgradil svoj uporabniški vmesnik.

pretvori decimalno v binarni python

Remix-UI-Smart-Contracts-Edureka

Kliknite ikono datoteke, kot je označena na zgornji sliki, odprl se bo raziskovalec datotek.

  1. S klikom na ikono plus lahko ustvarite novo datoteko, datoteko poimenujte PurchaseOrder.sol
  2. S tem boste ustvarili prazno datoteko z imenom PurchaseOrder.sol, kliknite in odprite to datoteko.
  3. Kopirajmo celotno pogodbo in jo prilepite v PurchaseOrder.sol.
  4. Kliknite drugo ikono, v levem meniju tik pod ikono datoteke naj se prikaže možnost solidity compiler.
  5. Pod oznako Prevajalnik izberite različico prevajalnika. Trenutna izbrana različica je 0.5.8.
  6. Po izbiri različice prevajalnika kliknite 'Compile PurchaseOrder.sol'. Tako bo sestavljena pametna pogodba.

7. Ko se pametna pogodba uspešno prevede, kliknite na gumb 'Compilation Details' in pojavile se bodo naslednje podrobnosti. Po prevajanju sta na voljo dve ključni informaciji

    • ABI - binarni vmesnik aplikacije. To je datoteka json, ki podrobno opisuje vse metode, izpostavljene v pametni pogodbi, skupaj z meta podatki o metodah. Več o tem bomo razpravljali v naslednjih spletnih dnevnikih.
    • Bytecode- koda delovanja EVM (Ethereum virtual machine), logika pametne pogodbe se pri prevajanju pretvori v bajtno kodo.

8. Za preizkus pametne pogodbe je treba razviti pametno pogodbo. Če želite uporabiti pametno pogodbo, kliknite naslednjo ikono v levem meniju pod ikono za prevajanje. Prikaže se naslednji zaslon. Če želite preizkusiti pametno pogodbo, jo je treba razviti. Če želite uporabiti pametno pogodbo, kliknite naslednjo ikono v levem meniju pod ikono za prevajanje. Prikaže se naslednji zaslon.

Možnost uvajanja

Zaslon za uvajanje ponuja nekaj možnosti, poglejmo si jih eno za drugo.

  • Okolje: Tu si lahko omislimo možnost, podobno izbiri za nakup prenosnega računalnika pri Amazonu, Flipkartu ali Neweggu (vse to je spletni prodajalec), kjer se odločite, od kod želite kupiti, glede na vaše potrebe. Podobno imamo v primeru Remixa možnost, kje uporabiti pametno pogodbo in jo preizkusiti. Spustni meni poleg oznake okolja ponuja tri možnosti
    • JavaScript VM - lokalno enojno vozlišče Ethereum se zavrti v pomnilniku brskalnika in nudi 5 vnaprej preizkušenih računov, ki jih je mogoče uporabiti za transakcijo (razmestitev, priklic funkcije)
    • Injected Web3 Provide - to temelji na MetaMask. Metamask je kot posrednik ali posrednik, ki spletnim aplikacijam omogoča interakcijo s pametno pogodbo. Metamask omogoča upravljanje identitet in podpisovanje transakcij, ki jih je treba poslati v omrežje ethereum.rdstranka vam pomaga, da določite omrežje blockchain, v katero bo nameščena pametna pogodba.
    • Ponudnik Web3 - če uporabljate lokalno vozlišče Ethereum in je na voljo končna točka RPC, lahko to možnost uporabite. Pametna pogodba bo postavljena na lokalno vozlišče Ethereum.
  • Računi: Ti podatki se zapolnijo glede na izbrano okolje. Na primer. JavaScript VM ponuja 5 vnaprej financiranih testnih računov. V primeru ponudnika Web3 in Injected Web3 ne zagotovite vplačanih testnih računov.
  • Omejitev plina: To določa največjo količino plina, ki jo je pobudnik pripravljen porabiti za katero koli transakcijo. To je kraj za zaščito pred neskončno zanko in izčrpavanje vseh sredstev na računu v primeru neskončne zanke.
  • Vrednost: vrednost, ki jo bo morda treba poslati med uvajanjem pametne pogodbe. To je neobvezna vrednost.

Če želite razporediti pogodbo, izberite možnost JavaScript VM, v spustnem meniju izberite prvi račun, upoštevajte stanje na računu (100 eter).

Prepričajte se, da je ime pametne pogodbe PurchaseOrder, kliknite na razmestitev. Ključni ukrepi, ki se bodo zgodili

  1. Stanje na računu se spremeni iz 100 eter v 99,999999 eter, odšteti znesek je transakcijski strošek za uvedbo pametne pogodbe.
  2. V razporejeni pogodbi se bo pojavila nova ploščica za pametno pogodbo, ki bo prav tako navedla naslov nove pametne pogodbe (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. V oknu konzole se bodo pojavile naslednje informacije
    1. Transakcijski zgoščevalni znak - enolično identificira uvajanje pogodbe
    2. Stroški transakcije
    3. Naslov pogodbe

Interakcija z razporejeno pogodbo

  1. V okviru razporejene pogodbe sta na voljo dve metodi interakcije update_quantity in get_quantity.
  2. Obe metodi interakcije sta javni metodi, opredeljeni v pogodbi o naročilu.
  3. Metoda posodobitve količine “update_quantity” zahteva vhodni parameter, torej vnosno polje.
  4. Pridobi količino metoda 'get_quantity' pridobi vrednost product_quantity.
  5. Preverimo, kaj se zgodi, ko se prikliče get_quantity, prikaže se vrnjena vrednost 100, ki je bila inicializirana v konstruktorju. To ne povzroči transakcije
  6. Pokličimo update_quantity in vnesite 30. To povzroči, da se zgodi transakcija

Na kratko, vsaka operacija, ki povzroči operacijo pisanja v stanje pogodbe (tj. Spremeni spremenljivke pogodbe), bo povzročila transakcijo.

Vsaka operacija, ki samo prebere stanje pogodbe, ne povzroči transakcije.

Zaključek o razvoju pametne pogodbe

S tem smo pravkar ustvarili svojo prvo pametno pogodbo, ki je samo opraskala površino trdnosti. Pravkar smo videli, kaj je potrebno za preizkušanje pametne pogodbe, vse od uvedbe pametne pogodbe do začetka transakcij.

V naslednjem blogu, ki je nadaljevanje serije razvoja pametnih pogodb, se bomo poglobili v temelj trdnosti in se poglobili v uvajanje pametnih pogodb.

S tem to zaključujem Pametna pogodba razvojni blog. Upam, da ste uživali v branju tega spletnega dnevnika in se vam je zdel informativen.

jazče se želite naučiti pametnih pogodb, si ustvariti kariero na področju Blockchain in pridobiti strokovno znanje v programiranju Ethereum, se včlaniti v živo v spletu Tukaj je na voljo podpora 24 * 7, ki vas vodi skozi celotno obdobje učenja.

Imate vprašanje za nas? Prosimo, navedite to v oddelku za komentarje v 'Razvoj pametnih pogodb' in takoj se vam bomo oglasilist.