Kako napisati svoj prvi pametni ugovor?



Naučite osnove razvoja pametnih ugovora i započnite pisati svoj prvi pametni ugovor. Također ćete znati testirati pametni ugovor.

U , naučili ste što su pametni ugovori, različiti jezici pametnih ugovora i kako postaviti okruženje za razvoj pametnih ugovora. U ovom ćete članku naučiti kako sastaviti svoj prvi pametni ugovor. Koristit ćuRemix IDE za razvoj i testiranje pametnog ugovora.

Ispod su teme obrađene u ovom vodiču za razvoj pametnih ugovora:





Izrada vašeg pametnog ugovora

Jednostavni pametni ugovor s narudžbenicom bit će razvijen kao dio ove serije blogova. Kako ova serija bude napredovala i kako će se uvoditi novi koncepti programskog jezika solidity, pametni ugovor s narudžbenicom razvijat će se i poboljšavati.



Struktura pametnog ugovora

Pametni ugovor o solidnosti u osnovi je skup sljedećih

  • podaci - koji održava trenutno stanje ugovora
  • funkcija - koji primjenjuju logiku za prelazak iz stanja ugovora

Solidity pametni ugovori slijede standardnu ​​strukturu. Svaki pametni ugovor započinje sljedećom izjavom



Pragma direktiva

Ključna riječ 'pragma' može se koristiti za omogućavanje određenih značajki ili provjera prevoditelja. Izjava u nastavku definira da se izvorna datoteka (pametni ugovor) neće kompajlirati s kompajlerom prije 0.4.0 i verzijom kompajlera nakon 0.6.0. Ova deklaracija osigurava uvođenje nenamjernog ponašanja kada se uvede nova verzija kompajlera.

čvrstoća pragme> = 0,4,0<=0.6.0 

Izjava o ugovoru

Ugovor se objavljuje pomoću ključne riječi 'ugovor'. Ovim se proglašava prazan ugovor koji je označen nazivom 'PurchaseOrder'.

narudžbenica narudžbe {}

Pohranjivanje relevantnih podataka u ugovoru

Svaki ugovor ili u općenitom smislu svaki program može zahtijevati pohranu nekih podataka. Dodavanje podataka u program pruža mu razinu fleksibilnosti. Pomicanje s teško kodiranih vrijednosti u programu na vrijednosti koje pruža korisnik važna je značajka. Varijable vam omogućuju pohranjivanje podataka, označavanje podataka, dohvaćanje podataka i upravljanje njima.

Razvoj pametnog ugovora: uvođenje varijabli

Kao solidnost, varijable su dvije vrste

  1. Vrsta vrijednosti: Ova vrsta varijabli prenosi se po vrijednosti, tj. Uvijek se kopiraju kada se koriste kao argumenti funkcije ili u zadacima. Na primjer: cijeli brojevi, logičke adrese itd.
  2. Vrste referenci: Ova vrsta varijabli su složenih tipova i prosljeđuju se referencom, te se varijable ne uklapaju u 256 bit i njima se mora pažljivo upravljati jer je njihovo kopiranje skupo.

Dodavanje podataka u pametni ugovor

Dodajmo u ugovor neku varijablu podataka. Za svaku narudžbenicu mora biti povezana neka količina proizvoda. Dodajmo varijablu product_quantity koja će biti vrste podataka cijeli broj ili broj.

hibridni okvir u selenovom web pogonitelju

Varijabla koju uvodimo sada je nepotpisani cijeli broj i predstavljena je uint256, 256 ovdje označava pohranu od 256 bitova.

  • U - nepotpisan (što znači da ovaj tip može predstavljati samo pozitivne cijele brojeve, a ne pozitivne i negativne cijele brojeve)
  • INT - cijeli broj
  • Veličina 256 - 256 bitova
  • minimalna vrijednost uint256 koja se može dodijeliti je 0
  • može se dodijeliti maksimalna vrijednost uint256 je 2 ^ 256-1 [vrlo velik broj]

Količina proizvoda samo je pozitivna vrijednost, a trenutna pretpostavka je da ćemo zadovoljiti vrlo veliku vrijednost količine proizvoda.

Deklarirana varijabla 'product_quantity' dio je stanja ugovora i stoga se zadržava ili pohranjuje u ugovorni prostor. Trenutno će ova varijabla zadati vrijednost 0.

ugovor PurchaseOrder {uint256 product_quantity}

Definiranje konstruktora

Konstruktor se poziva kada je ugovor razmješten. Konstruktor inicijalizira ugovor s nekim vrijednostima. U trenutnom je scenariju količina proizvoda postavljena na 100, kada se ugovor razmjesti. Parametarski konstruktor također se može stvoriti prosljeđivanjem varijable i inicijalizacijom product_quantity pomoću prosljeđene vrijednosti.

Ključna točka koju ovdje treba napomenuti je modifikator pristupa 'public' pridružen konstruktoru. Javna ključna riječ određuje da svatko može pristupiti ovoj funkciji, ovo nije ograničena funkcija.

konstruktor () public {product_quantity = 100}

Dodavanje funkcija

Dodajmo sada funkciju kako bi naš program bio interaktivan. Funkcije su kontrolirane mogućnosti koje se mogu dodati programu. Bilo kojoj funkciji prethodi funkcija ključne riječi. Sve u svemu, tako izgleda deklaracija funkcije' funkcija '.

Nabavite funkciju

Jedan od najčešćih zahtjeva bilo kojeg programa je očitavanje pohranjene vrijednosti. U sljedećem ugovoru trebat ćemo pročitati vrijednost 'product_quantity'. Da bi se pružila ova mogućnost, dodaje se funkcija čitanja ili funkcija dobivanja. U ovoj funkciji ne vršimo nikakvu manipulaciju sa pohranjenom vrijednošću, već samo dohvaćamo pohranjenu vrijednost.

što je flume u hadoopu

Razdvojimo sada našu funkciju get (get_quantity)

Ne. Ključna riječ Vrijednost
jedan get_quantity (){nisu proslijeđeni parametri}
2 javnost{svatko može pristupiti funkciji}
3 pogled{označava funkciju samo čita stanje ugovora, ne mijenja stanje ugovora, dakle prikaz}
4 vraća varijablu tipa uint256 {definirano što vraća funkcija}
funkcija get_quantity () javni prikaz vraća (uint256) {return product_quantity}

Funkcije postavljača

Čitanje podataka je neophodno i to smo postigli u prošlom odjeljku, ali većina scenarija također zahtijeva sposobnost pisanja / ažuriranja podataka. Ova specifična sposobnost pruža se dodavanjem funkcije postavljača. Ova funkcija uzima vrijednost od korisnika u obliku ulaznog parametra. Korištenjem vrijednosti koju korisnik daje funkciji, vrijednost varijable 'product_quantity' upisuje se / ažurira.

Razdvojimo sada našu postavljenu funkciju (update_quantity)

Dodavanje funkcije za ažuriranje vrijednosti količine proizvoda

Ne. Ključna riječ Vrijednost
jedan update_quantity (vrijednost uint256){proslijeđena je vrijednost parametra tipa uint256}
2 javnost{svatko može pristupiti funkciji}
3 Nije potrebno jer se države ažuriraju pomoću funkcija
4 vraća varijablu tipa uint256 (definirano što vraća funkcija)
funkcija update_quantity (vrijednost uint256) public {product_quantity = product_quantity + value}

Spajajući sve ovo zajedno, tako bi trebao izgledati cjelokupni ugovor.

čvrstoća 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 } } 

Primjena pametnog ugovora

Vrijeme je za testiranje pametnog ugovora. Kako bismo testirali ovaj pametni ugovor, koristit ćemo Remix Online IDE .

Remix je internetsko igralište za pametni ugovor ethereum . Remix se u potpunosti temelji na pregledniku. Remix vam nudi mrežni IDE (integrirano razvojno okruženje) u koji možete pisati svoje pametne ugovore. Remix vam pruža internetsku sposobnost kompajlera čvrstoće. Pametni ugovor u Remix IDE-u može se besprijekorno sastaviti pomoću određene verzije kompajlera.

Remix također pruža mogućnost brzog testiranja pametnog ugovora.

Remix nudi cjelovit set alata za pokretanje razvoja pametnog ugovora i jedinstveno testiranje pametnog ugovora, bez ikakve instalacije na vašem lokalnom stroju. Ovo je od velike koristi za početak s solidnošću, jer se programeri trebaju usredotočiti na pisanje pametnog ugovora, radije brinući se o infrastrukturi.

Uz Remix IDE potreban vam je samo preglednik i internetska veza da biste započeli s razvojem pametnih ugovora. Brzi razvoj, testiranje i provjera ideje za pametni ugovor.

Remix je nedavno nadogradio njihovo korisničko sučelje.

Remix-UI-Smart-Contracts-Edureka

Kliknite ikonu datoteke kako je istaknuta na gornjoj slici, otvorit će se istraživač datoteka.

  1. Klikom na ikonu plusa može se stvoriti nova datoteka, nazovite datoteku PurchaseOrder.sol
  2. To će stvoriti praznu datoteku pod nazivom PurchaseOrder.sol, kliknite i otvorite ovu datoteku.
  3. Kopirajmo cijeli ugovor u PurchaseOrder.sol.
  4. Kliknite drugu ikonu, u lijevom izborniku odmah ispod ikone datoteke trebala bi se pojaviti opcija solidity compiler.
  5. Pod oznakom Compiler odaberite verziju kompajlera. Trenutna odabrana verzija je 0.5.8.
  6. Nakon odabira verzije kompajlera, kliknite 'Compile PurchaseOrder.sol'. Ovo će sastaviti pametni ugovor.

7. Nakon što se pametni ugovor uspješno prevede, kliknite gumb 'Pojedinosti o kompilaciji' i trebali bi se pojaviti sljedeći detalji. Nakon kompilacije, dostupne su dvije ključne informacije

    • ABI - binarno sučelje aplikacije. Ovo je json datoteka koja detaljno opisuje sve metode izložene u pametnom ugovoru zajedno s meta podacima podataka. O tome će biti više riječi u sljedećim blogovima.
    • Bytecode- EVM (Ethereum virtualni stroj) operativni kôd, logika pametnog ugovora pretvara se u bytecode kod kompilacije.

8. Da bi se testirao pametni ugovor, treba primijeniti pametni ugovor. Da biste implementirali pametni ugovor, kliknite sljedeću ikonu u lijevom izborniku, ispod ikone sastavljanja. Pojavit će se sljedeći zaslon. Da bi se testirao pametni ugovor, treba primijeniti pametni ugovor. Da biste implementirali pametni ugovor, kliknite sljedeću ikonu u lijevom izborniku, ispod ikone kompajliranja. Pojavit će se sljedeći zaslon.

Opcija postavljanja

Zaslon za postavljanje nudi nekoliko izbora, pogledajmo ih jedan po jedan.

  • Okoliš: Ovo se može zamisliti kao opcija slična odabiru za kupnju prijenosnog računala od Amazona, Flipkarta ili Newegga (sve su to mrežni trgovci) kod kojih odabirete na temelju vaših zahtjeva. Slično tome, u slučaju Remixa, imamo mogućnost gdje ćemo implementirati pametni ugovor i testirati pametni ugovor. Padajući izbornik pored oznake okoliša pruža tri izbora
    • JavaScript VM - lokalni čvor Ethereum okreće se u memoriji preglednika i pruža 5 pretplaćenih testnih računa koji se mogu koristiti za transakciju (postavljanje, pozivanje funkcija)
    • Ubrizgano ubrizgavanje Web3 - Ovo se oslanja na MetaMask. Metamaska ​​je poput brokera ili posrednika, koji omogućuje web aplikacijama interakciju s pametnim ugovorom. Metamaska ​​pruža sposobnost upravljanja identitetima i potpisivanje transakcija koje će se slati na mrežu ethereuma. Ovaj posrednik ili 3rdstranka pruža vam pomoć u određivanju blockchain mreže na koju će se implementirati pametni ugovor.
    • Web3 Provider - ako imate lokalni Ethereum čvor i RPC krajnja točka je dostupna, ova se opcija može koristiti. Pametni ugovor bit će postavljen na lokalni Ethereum čvor.
  • Računi: Ovi se podaci popunjavaju na temelju odabranog okruženja. Na primjer. JavaScript VM nudi 5 pretplaćenih testnih računa. U slučaju davatelja usluge Web3 i ubrizganih Web3 ne pružaju pretplaćene probne račune.
  • Ograničenje plina: Ovo definira maksimalnu količinu plina koju je inicijator spreman potrošiti za bilo koju transakciju. Ovo je mjesto za zaštitu od beskonačne petlje i iscrpljivanje svih sredstava na računu u slučaju beskonačne petlje.
  • Vrijednost: Vrijednost koju će možda trebati poslati tijekom postavljanja pametnog ugovora. Ovo je neobavezna vrijednost.

Da biste razmjestili ugovor, odaberite JavaScript VM opciju, odaberite prvi račun s padajućeg računa, zabilježite stanje računa (100 etera).

Osigurajte da se pojavljuje naziv pametnog ugovora PurchaseOrder, kliknite na implementaciju. Ključne radnje koje će se dogoditi

postavi java classpath prozore 10

  1. Stanje na računu mijenja se sa 100 etera na 99,999999 etera, odbijeni iznos je transakcijski trošak za postavljanje pametnog ugovora.
  2. Pod ugovorenim ugovorom pojavit će se nova pločica za pametni ugovor, koja će također sadržavati adresu novog pametnog ugovora, otprilike ovako (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. U prozoru konzole pojavit će se sljedeće informacije
    1. Hash transakcije - jedinstveno identificira implementaciju ugovora
    2. Trošak transakcije
    3. Adresa ugovora

Interakcija s raspoređenim ugovorom

  1. Prema ugovorenom ugovoru, dostupne su sljedeće dvije metode interakcije update_quantity i get_quantity.
  2. Obje ove metode interakcije su javne metode definirane u ugovoru 'Narudžbenica'.
  3. Metoda ažuriranja količine 'update_quantity' zahtijeva ulazni parametar, dakle okvir za unos.
  4. Način dobivanja količine 'get_quantity' dobiva vrijednost product_quantity.
  5. Provjerimo što se događa kada se pozove get_quantity, prikaže se povratna vrijednost 100 koja je inicijalizirana u konstruktoru. To ne uzrokuje transakciju
  6. Pozovimo update_quantity i navedimo 30 kao ulaz. To uzrokuje da se dogodi transakcija

Ukratko, svaka operacija koja uzrokuje operaciju pisanja u stanje ugovora (tj. Mijenja varijable ugovora) rezultirat će transakcijom.

Bilo koja operacija koja samo očitava stanje ugovora ne uzrokuje transakciju.

Zaključak o razvoju pametnog ugovora

Ovim smo upravo kreirali svoj prvi pametni ugovor, samo ogrebajući površinu čvrstoće. Upravo smo vidjeli što je potrebno za testiranje pametnog ugovora, od primjene pametnog ugovora do pokretanja transakcija.

U sljedećem blogu koji je nastavak serije razvoja pametnih ugovora, zadržat ćemo se dublje na osnovama solidnosti, dublje zaroniti u implementaciju pametnih ugovora.

Time zaključujem ovo Pametni ugovor razvojni blog. Nadam se da ste uživali čitajući ovaj blog i da vam je informativan.

Jaako želite naučiti pametne ugovore, izgraditi karijeru u domeni Blockchaina i steći stručnost u programiranju Ethereuma, upisati se u live-online ovdje dolazi s podrškom 24 * 7 koja će vas voditi kroz čitavo razdoblje učenja.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare u 'Pametni razvoj ugovora', a javićemo vam se ranijesv.